如何将TComm收到的数据由BCD码转换为十进制整数

BalsamPear 2005-05-08 04:18:02
一个TComm控件,OnReceiveData事件收到的数据有3帧,第3帧、第2帧、第1帧为由高到低的整数BCD码。请问如何将它们转换为十进制整数。
...全文
88 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
postren 2005-05-08
  • 打赏
  • 举报
回复
或许是
(第1帧 and $0f) + ((第1帧 and $f0) shr 4) * 10 +
(第2帧 and $0f) * 100 + ((第2帧 and $f0) shr 4) * 1000 +
(第3帧 and $0f) * 10000 + ((第3帧 and $f0) shr 4) * 100000
postren 2005-05-08
  • 打赏
  • 举报
回复
第1帧 + 第2帧 * 10 + 第3帧 * 100
tdtjjiao 2005-05-08
  • 打赏
  • 举报
回复
为什么要转成十进制整数?
原来本人上传过一个串口类,虽然能用,不过后来发现有点小bug,所以又改了改。为表以前发表带bug的程序的歉意,这次就免分了。 自编的一个BCB的串口类,使用超级简单,当然功能也超级简单,支持10以上的串口,只支持全双工。不过对于大多数的使用情况来说是足够了。编这个的目的是由于自己下载的串口控件基本上都实现了太多的功能,弄得代码很复杂,不容易分析,本着能用就够和简单最美的原则,同时也为了学习串口编程,自己编了一个串口类。自己在几个程序中用着还挺好的。 该串口类就两个.cpp文件和他们的头文件 (TComm.cpp,TCommThread.cpp),使用超级简单#include "TComm.h"TComm Comm=new TComm(this); //生成串口类if(Comm) Comm->fCommReceived=&ReceiveFunc; //你的接收处理函数Comm->Open(1); //打开你要用的串口,可以填数字,也可以填“com1"等名称,建议填数字,可以支持超过10的数字Comm->SetComm( 波特率,字长,校验位,停止位 );//校样位0为无,1为奇,2为偶//好了,可以发数了Comm->SendData(data,leng);当收到数的时候会调用你的接收处理函数,比如ReceiveFunc(TComm *Comm){ char buf[256]; int len; if((len=Comm->GetReceivedCount())!=0){ len=Comm->ReadComm(buf,len); }}最后使用完后记得关串口喔 Comm->Close();上传的文件是一个包含有测试例子的项目,很简单的,看一看就明白了。

5,387

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧