小弟用MSCOMM控件做了一个串口接收的小程序.
接收的过程中出现了一个问题:
比如接收的原始数据是16进制的10个数.02 05 00 35 36 38 39 41 33 0D源代码是这样的:
var a:variant; b:string; c;CHAR;
begin
a:=mscomm1.input;
b:=a;
edit1.text:=b;end;
结果在edit1中显示的却是:(前面三个空格)5689A3 (后面一个空格)
非字符的数字却显不出来. 请问怎么样才能把10个数全部正确显示.
小弟又试着在后面写了一行, c:=b[1]; 结果程序报错。 请问是怎么回事。如何解决。还有我发现MSCOMM控件的唯一事件CONN好像不管用,不知道是什么原因.所以只好用TIMER控件来定时接收.
接收的过程中出现了一个问题:
比如接收的原始数据是16进制的10个数.02 05 00 35 36 38 39 41 33 0D源代码是这样的:
var a:variant; b:string; c;CHAR;
begin
a:=mscomm1.input;
b:=a;
edit1.text:=b;end;
结果在edit1中显示的却是:(前面三个空格)5689A3 (后面一个空格)
非字符的数字却显不出来. 请问怎么样才能把10个数全部正确显示.
小弟又试着在后面写了一行, c:=b[1]; 结果程序报错。 请问是怎么回事。如何解决。还有我发现MSCOMM控件的唯一事件CONN好像不管用,不知道是什么原因.所以只好用TIMER控件来定时接收.
如果你想把接收到的数据以十六进制形式显示的话,代码需要修改。2.在打开端口之前,正确设置MSComm的一些属性:
MSComm1.InputLen := 0; //每次读入整个缓冲区
MSComm1.InputMode := comInputModeBinary; //输入方式为字节方式
MSComm1.RThreshold := 1; //接收到1个字节就产生通讯事件
如何把接收到的数据在EDIT这样的显示框里全部显示出来.代码怎么样修改呢.
麻烦各位老大了 钱不够可以再加.
a:=mscomm1.input;
b:=''; for i:=0 to vararrayhighbound(a,1) do
b:=b + inttohex(a[i],2)+' ';
edit1.Text:=restr;今天早上主板坏了,所以没法去调试.请各位老大帮忙看一下 这样修改可以吗
如果不行的话怎么改?
小弟在这里先谢谢各位老哥了.