基本功能:PC机希望能够通过串口读取到一个数据终端上的数据。
为实现数据传输,PC机需要先向数据终端发送一个请求通信连接的命令,基本格式为:
BEL HT BEL HT STX 00200001            NUL ETX
其中,BEL HT BEL HT STX和ETX是包裹命令的头和尾,0020表示命令的长度为20字节,0001表示该命令是请求连接命令,NUL是该命令的结束位,其ASCII码为0x0,BEL的ASCII码为0x07,HT的ASCII码为0x09,STX的ASCII码为0x02,ETX的ASCII码为0x03,而00200001与NUL之间有12bytes,均为空。
我想问的是,PC该如何把上述串以ASCII码的形式发送给数据终端?
是否是以字符串的形式发送以下串:
"0x07 0x09 0x07 0x09 0x02 0x30 0x30 0x32 0x30 0x30 0x30 0x30 0x31 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x00 0x03"
麻烦大家指点一下,谢谢!

解决方案 »

  1.   

    // 以2进制方式发送数组
    // BYTE buf[] = {0x07 0x09 0x07 0x09 0x02 0x30 0x30 0x32 0x30 0x30 0x30 0x30 0x31 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x20 0x00 0x03};
      

  2.   

    串口上传输的数据其实和网络数据一样,最原始的都是二进制的码流,因此你只需要发送和接受二进制数据即可,需要注意的是收发两端的字节序和字节对齐,尽量不要用数据结构直接赋值的方式向串口发送数据。而是一个字节一个字节的填写BUF发送