关于串口通信中数据传输的问题

数据在串口通信的过程中是以字节为基本单位——也就是说发送的每一个数必需在0-255之间(现只考虑无符号的情况)。如果想发送256那就必须要分成两个数发(255+1)。

一般在串口通信中会遇到不同的收发格式,诸如ASCII,Hex之类的,只有确保收发两方的收发格式相同。

例:如果发的一方发送了50,收的一方如果用不同的接收格式接收,就会出现完全不同的数(以ASCII的格式接收,那么就会收到53+48)(以10进制的格式接收,那么就会收到的50)(以16进制的格式接收,那么就会收到32)

Ps.由上可知,以ASCII码格式收发,效率要明显慢很多

在用C#编写上位机的时候:

 byte[] sendBuf = new byte[2] { 21,0X21};

上面的21在发送的时候会默认为是十进制,0X21会默认为是十六进制(在发送的时候也会有一次数据转换)

当用十六进制的格式接收会收到15,21;用十进制的格式接收会收到21,33

 

posted @ 2019-11-12 18:14  回首起了风沙  Views(637)  Comments(0Edit  收藏  举报