串口的通讯问题。
我想发的是7000210000000012这一串数据。
我先把70,变成asc字符'p'........生成一个字符串往外发。
接收端,用inttohex(ord(字符)).....还原反回一个字符串。
结果上面的那串数据没有问题。问题出在如我要发'fFFFFFFFFFFFFFFF'这样的话就是$ff超过了127结果接收方收到的是'0000000000000000'这个问题该怎么解决啊
我想发的是7000210000000012这一串数据。
我先把70,变成asc字符'p'........生成一个字符串往外发。
接收端,用inttohex(ord(字符)).....还原反回一个字符串。
结果上面的那串数据没有问题。问题出在如我要发'fFFFFFFFFFFFFFFF'这样的话就是$ff超过了127结果接收方收到的是'0000000000000000'这个问题该怎么解决啊
先要把INPUTMODE改为二进制模式
mscomm1.inputmode := 1;收数:var
temp: array of byte;
len: integer;
i:Integer;
output:string;
begin
len := mscomm1.buffersizw;
setlength(temp,len);
temp := mscomm1.input;
output:='';
for i:=1 to len do
output:=output+IntToHex(temp[i-1],2);//output就是结果啦!如果是发送的话
先将你要发送的十六进制数赋值到ARRAY OF BYTE这个动态数组
然后发送 mscomm1.output := temp
这样就可以了