怎样把串口接收的16进制数转换为整数?(用了spcomm控件) ( 积分: 50 )

  • 主题发起人 主题发起人 inzaghi_delphi
  • 开始时间 开始时间
I

inzaghi_delphi

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大哥:[:D]
回传结果格式如下:
**** **** **** ****(16进制)
我需要 前四个字节对应的整数减去后四个字节对应整数的结果赋给edit
对应字节的含义:
第1字节:(进)千位数
第2字节:(进)百位数
第3字节:(进)十位数
第4字节:(进)个位数
第5字节:(出)千位数
第6字节:(出)百位数
第7字节:(出)十位数
第8字节:(出)个位数
应该用什么方法接收数据并转换为整数进行运算(我用的是spcomm控件)
procedure TF_main.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
 
各位大哥:[:D]
回传结果格式如下:
**** **** **** ****(16进制)
我需要 前四个字节对应的整数减去后四个字节对应整数的结果赋给edit
对应字节的含义:
第1字节:(进)千位数
第2字节:(进)百位数
第3字节:(进)十位数
第4字节:(进)个位数
第5字节:(出)千位数
第6字节:(出)百位数
第7字节:(出)十位数
第8字节:(出)个位数
应该用什么方法接收数据并转换为整数进行运算(我用的是spcomm控件)
procedure TF_main.Comm1ReceiveData(Sender: TObject; Buffer: Pointer;
BufferLength: Word);
 
把十六进制的数转为ascii字符,再把字符合起来转为整数,然后计算就好了。转换函数去查帮助,或者自己写
 
lxw5214 你能给我个例程吗?大哥!!!!!
 
哥儿们,做串口,怎么还用控件啊,自己用API做个类,用起来多舒服啊!
一般来说串口通讯的时候不是用十六制方式,就是用BCD码表示,你的用法好像不太合规矩
不过就像lxw5214说的,使用IntToHex和StrToInt这两个函数基本就能搞定了
 
问题说的不太清楚,如果是字串s:='1234'那么i:=StrToInt(s)就可以了
 
maxim88大哥
帮我看看这个帖子可以么
http://www.delphibbs.com/delphibbs/DispQ.asp?LID=3243947
 
先将每一位的16进制值转换成10进制,再
buf[0]*1000+buf[1]*100+buf[2]*10+buf[3]-(buf[4]*1000+buf[5]*100+buf[6]*10+buf[7])
 
你是不是要弄压缩BCD?
 
接收的数据如果是十六进制的数,也就是字节了,还要转换吗?用yanghai0437说的就行了.
除非是用ASCII码传输的,才要转,用char()
 
对就按照yanghai0437所说做就行了。我用过PLC进行数据采集和示波卡的4096个数据采集都是用这种方式转换的。你只要测试一下收到的位数就行了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部