编写串口通信的要注意的地方


今天编了个串口通信的程序,监控一直接收不到数据,搞了半天终于解决了,给大家分享下。

编写监控一定要注意帧头的判断。

假设你的帧头是0xbb,0x65,

char buff[1024];是存储缓存的地方

你把接收到的数据存到buff[i]中了

如果你解包的时候用下面语句判断帧头

if(buff[0]==0xbb&&buff[1]==0x65)
那么就会出错,

因为收到的数据一般都是有符号字符变量其实

buff[0]!=0xbb;
比如

char a1=0xbb;
char a2=0x45;
if(a1==0xbb)
cout<<"相等"<<endl;
else
cout<<"不相等"<<endl;

if(a2==0x45)
cout<<"相等"<<endl;
else
cout<<"不相等"<<endl;

屏幕输出是:

不相等

相等

大家可能发现一个问题,为什么第一个是不相等,而第二个是相等呢,其实要注意到,0xaa表示成二进制是1011 1011第8位是 1,

而0x45 表示成二进制是0100 0101,第八位是零。第八位0和1在表示无符号和有符号数据含义是不一样的。

大家可以在VC++里面试一下。




评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值