如何用MSComm1控件读取16进制的串口信息?
1,传输协议:RS232接口,
    dcb.BaudRate=9600;  
    dcb.ByteSize=8;   
    dcb.Parity=NOPARITY;  
    dcb.StopBits=TWOSTOPBITS;  
2,硬件触发事件定义:
按钮:当按钮按下时触发信号,发送按钮信号给上位机。
数据格式为:十六进制AABBCCDD 
 AA:统一填CC(保留字段)
 BB:等于65表示按下,66表示放开,67表示报警
 CC:保留字段。
 DD:保留字段。  我在delphi中
procedure TForm1.MSComm1Comm(Sender: TObject);
var
事件中不知道该如果取到类似这样的CC 65 CC DD字符串信息在label上显示?

解决方案 »

  1.   

    不是用的mscomm控件,不过可以作为参考
    ReadFile(w_zjm.vg_hcomm,inbuff,cs.cbInQue,nBytesRead,nil);
    s:='';
    for i:=1 to nbytesread do
    begin
      s:=s+inttohex(ord(inbuff[i]),2);
    end;
    label1.caption:=s;
      

  2.   

    串口数据最终都是字符,16进制,还是10进制,那只是一种表示方式,最终都可以由
    字节转换二来,所以,你只要把字节内容读出来了,管你16进制,10进制,还是8进制
    都能处理的啦
    就像二楼说的那样,用inttohex转换,就可以啦,要是还不懂,自己写一个
    10进制,转16进制的,也就几分钟,就写好了
      

  3.   

    十六进制的CC 65 CC DD,在delphi中可描述为#$CC#$65#$CC#$DD,它也等价于
    chr(12*16+12)+chr(6*16+5)+chr(12*16+12)+chr(13*16+13)聪明的你该知道怎么做了吧