比如 我想发送 0xaa 0x55 0xbb, 在下位机方面接收到这些数据,但是由于都是有符号数超过0x80的 就发送错误的数据,不知道有没有什么办法解决?

解决方案 »

  1.   

    不超过0x80就没事么?强制转换为byte试试
      

  2.   

    byte强制转换也不行,他把大于0x80的都当成负数,有符号的数,发送出去的 和单片机串口通讯很难搞啊
      

  3.   

    楼主考虑把一个byte分成两个byte发,高4位和低4位分别存放在一个byte中
    比如0xaa 0x55 0xbb 就变成0x0a 0x0a 0x05 0x05 0x0b 0x0b
    接收端两个一组再拼起来
      

  4.   

    我也做过一些串口通讯的程序,没有遇到过楼主说的问题,上次回帖只是我的一个想法而已。说一下我平时如何处理串口发送的数据,比如数据是0xaa 0x55 0xbb,那么发送前我会做如下处理:
    0xaa&0x0FF 0x55&0x0FF 0xbb&0x0FF,这样做可以把高位扩展的1变成0。
      

  5.   


    下位机处理问题,下位机没有unsigned byte,unsigned int这样的类型吗?0xXX这些本来就是16进制数据。至于一个BYTE 的数据,要作为正数还是负数,还不是程序处理的问题?