我用mscomm发送一个byte型的数组
利用循环一个字节一个字节的发送
mscomm.Output:=Char(ByteData[i])
Char()会把大于128的数转化为0
请问该怎么发送大于128的Byte型数据?

解决方案 »

  1.   

    用动态字节数组var  
       OutBytes:array of Byte;  SetLength(OutBytes,10);
      OutBytes[0]:=ByteData[0];
      OutBytes[1]:=ByteData[2];
     ......
      MSComm.Output:=OutBytes;
      

  2.   

    这个问题我也遇见过,现已经解决。
    解决方法是这样的:
    当你遇到的字符的十六进制大于#$7F时,发送时你就发送#$81+#$你要发的字符!
    例如:
    你要发送的字符串为:#$32、#$32、#$ab、#$cd、#$ef、#$ff
    那么你实际要发送的串为:#$32、#$32、#$81、#$ab、#$81、#$cd、#$81、#$ef、#$81、#$ff
    你接收的时候也要做相应的调整,即收到#$81后,先判断紧接着的是不是#$81,如果不是,则表示这个#$81只是一个添加的字符,要将其过滤掉,否则表示确实有一个#$81发送过来。
      

  3.   

    http://218.56.11.178:8020/web/technology.aspx->串口通讯应用程序的解决方案
      

  4.   

    ft
    我用了那个OleVariant才高顶