社区
网络编程
帖子详情
BCD码问题?
lashengcrh
2003-07-08 10:17:06
在下在做串口通讯时,往串口中写BCD码。
希望各位大侠给我讲一讲原理,并加一些实现ASCII<=>BCD的转换代码。
或者指出那里有相关内容也行。
分数相送。
...全文
166
5
打赏
收藏
BCD码问题?
在下在做串口通讯时,往串口中写BCD码。 希望各位大侠给我讲一讲原理,并加一些实现ASCIIBCD的转换代码。 或者指出那里有相关内容也行。 分数相送。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
lashengcrh
2003-07-10
打赏
举报
回复
UP
DoubleJiang
2003-07-09
打赏
举报
回复
用异步串口操作
*/
BOOL CComm::OpenComm( void )
{
m_hComm = CreateFile( szCommName,
GENERIC_READ | GENERIC_WRITE,
0, //share mode: no share
NULL, //securiy attributes
OPEN_EXISTING, //Open disposition
FILE_FLAG_OVERLAPPED,
NULL);
if( INVALID_HANDLE_VALUE == m_hComm )
{
AfxMessageBox( "打开串口错误, [OpenComm--CreateFile]函数", MB_OK, MB_ICONSTOP );
return FALSE;
}
SetCommMask( m_hComm, EV_RXCHAR | EV_TXEMPTY );
SetupComm( m_hComm, 1024, 512 );
PurgeComm( m_hComm, PURGE_TXABORT | PURGE_RXABORT | PURGE_TXCLEAR | PURGE_RXCLEAR );
COMMTIMEOUTS CommTimeOuts;
CommTimeOuts.ReadIntervalTimeout = 5; //5 seconds
CommTimeOuts.WriteTotalTimeoutMultiplier = 100;
SetCommTimeouts( m_hComm, &CommTimeOuts );
//LPCOMMCONFIG lpCC = m_dlgComSet.GetCC();
DCB dcb;
GetCommState( m_hComm, &dcb );
dcb.BaudRate = m_cc.dcb.BaudRate;
dcb.ByteSize = m_cc.dcb.ByteSize;
dcb.fBinary = TRUE;
dcb.fParity = m_cc.dcb.fParity;
if( !SetCommState( m_hComm, &dcb ) )
{
AfxMessageBox( "打开串口错误, [OpenComm--SetCommState]函数" );
return FALSE;
}
m_bCommOpen = TRUE;
DWORD dwThreadID;
m_hCommThread = CreateThread( NULL, 0, ThreadProc, this, 0, &dwThreadID );
if( !m_hCommThread )
{
ShowError();
//AfxMessageBox( "打开串口错误, [OpenComm--CreateThread]函数" );
return FALSE;
}
return TRUE;
}
DWORD CComm::ThreadProc( LPVOID lpParam )
{
CComm *pThis = ( CComm * )lpParam;
DWORD dwEvents, dwBytesRead;
while( pThis->m_bCommOpen )
{
if( WaitCommEvent( pThis->m_hComm, &dwEvents, NULL ) )
{
if( dwEvents == EV_RXCHAR )
{
dwBytesRead = pThis->ReadCommBlock( pThis->m_byteBuffer, 1024 );
if(dwBytesRead)
{
ResetEvent( pThis->m_hEvBufferEmpty );
::PostMessage( pThis->m_MainWindow, UM_DATAARRIVAL, 0, dwBytesRead );
WaitForSingleObject( pThis->m_hEvBufferEmpty, INFINITE );
}
}
}
else
{
if( GetLastError() != 995 )
pThis->ShowError();
//AfxMessageBox( "后台线程错误, [GetLastError() != 995]", MB_OK, MB_ICONSTOP );
return 0;
}
}
return 1;
}
NewFree
2003-07-09
打赏
举报
回复
int ConvertBCD(int dnum)
{
int bcdval=0;
if( dnum>9999 || dnum < 0 ) return -1;
bcdval = ( ( (dnum/1000)*16+(dnum%1000)/100)*16+(dnum%100)/10 )*16 +dnum%10;
return bcdval;
}
spwnihao
2003-07-09
打赏
举报
回复
8421码也叫BCD码
例如:
十进制数48
BCD码表示:0100 1000
二进制表示:0011 0000
Semigod
2003-07-08
打赏
举报
回复
BCD码是针对数字的。 分两种:非压缩BCD和压缩BCD
非压缩BCD码,一个字节只存一个0-9的数字,存储方法是:
0 ==> 0x00
1 ==> 0x01
....
9 ==> 0x09
压缩BCD码,一个字节存两个0-9的数字,存储方法是:
00 ==> 0x00
01 ==> 0x01
11 ==> 0x11
....
99 ==> 0x99
四个二进制位为单位,保存十进制数
verilog 16进制转10进制
bcd码
将verilog16进制的数通过算法转化成
bcd码
,用于数码管显示。
微机原理实验.配套完整代码
【该程序是po主在学习微机原理与接口技术(8086)第三章、第四章汇编语言程序设计时的自主设计代码,添加有较多注释和易错点】 题目见https://blog.csdn.net/JODIENHANSCY/article/details/118532692?...
Windows启动入门
大家日常都在使用Windows系统,不过你熟悉Windows的启动过程吗?想了解Windows系统的启动配置方法吗?Windows启动系列课程的入门课程将围绕大家常用的Windows 7以及Windows 10系统,讲解这些内容,包括: Windows...
什么是
BCD码
?
BCD码
编码规则
BCD码
微机原理汇编语言练习(含详细注释代码)
问题
一:如要将2个非组合
BCD码
变为组合
BCD码
怎么办?
问题
二:如要将1个组合
BCD码
变为2个ASCⅡ码怎么办?
问题
三:如要将2个ASCⅡ码变为组合
BCD码
怎么办? 三选二完成即可 2、内存单元中有一数X(8位无符号),按下...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章