串口的通讯问题。
我想发的是7000210000000012这一串数据。
我先把70,变成asc字符'p'........生成一个字符串往外发。
接收端,用inttohex(ord(字符)).....还原反回一个字符串。
结果上面的那串数据没有问题。问题出在如我要发'fFFFFFFFFFFFFFFF'这样的话就是$ff超过了127结果接收方收到的是'0000000000000000'这个问题该怎么解决啊

解决方案 »

  1.   

    是不是用的MSCOMM啊,改用SPCOMM试试。
      

  2.   

    可以把二进制的数据转换成ASCII来通讯,如把70轮换成字符串'70',这样就可以使所有的ASCII的ord数据不超过127,然后在接收端再转换回来。
      

  3.   

    用MSCOMM收发十六进制,要用动态数值型数组就可以了
    先要把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 
    这样就可以了