急,关于串口通信的问题(100分)

Y

yitanhg

Unregistered / Unconfirmed
GUEST, unregistred user!
在程序中,通过MSCOMM组件与智能仪表进行通信,output只能写字符串,发送之后,为什么没有返回值?是否是使用的字符串
传递方式有问题?通信协议要求发送十六进制的指令,该如何进行编码呢?请多多指教!
 
mscomm可以直接发送Hex,
到论坛中搜索一下
 
当然可以啦,自己找吧
 
事实上无所谓的什么进制的,HEX串不外也是String!如果非要直观一点就这样做:
procedure SendCommand(var MyHexData; Bytes: Integer);
var
S: String;
begin
Setlength(S, Bytes); // 你的报文长度(字节数);
Move(MyHexData, S[1], Bytes);
MSComm1.Output:= S;
end;
 
假如sbuf[0..maxlen]是你要发送的十六进制的指令,那么你就可以这么着:
var
tempstr:string;
i:integer;
begin
for i:=0 to maxlen do
tempstr:=tempstr+chr(sbuf);
mscomm1.output:=tempstr;
end;
所以你要做的就是把十六进制的指令写到sbuf[]里面去,差不多就是这样子
 
为什么非要用mscomm啊?有没有用过Pcomm?很好用,以前我们也用mscom,但现在我们都
用Pcomm了,非常好用。要的话,可以给你邮一份。
 
我个人觉得 TCOMPORT 最为简单好用(如果你不需要什么 XModem,YModem,ZModem协议的话),
非常简单!!!
 
多人接受答案了。
 
顶部