中级会员
 
- 积分
- 202
- 金钱
- 202
- 注册时间
- 2019-8-27
- 在线时间
- 44 小时
|
1金钱
本帖最后由 a7600241 于 2020-8-17 17:29 编辑
我搞个程序,把无线接收到的信号中一部分数据装进数组,从串口发出来,大部分情况都是正确的,但也有小部分情况发出来的数据是错误的,一个正确的数据都没有,感觉就像是装数据那里被跳过去了一样。
这是往里装的那部分,也没有其他前提条件,此时 cbuf【12】 ,【13】,【14】,往后依次是05 77 88 99 aa bb,可经过这部分程序从串口收到的数据不是这样,看图,这样的情况有一定概率发生,找不到原因。
RS485_TX_EN;
RS485_TX_BUF[0]=cbuf[11];
for(j=1;j<cbuf[12]+1;j++) //
{
RS485_TX_BUF[j]=cbuf[j+12];
}
RS485_Send_Data(RS485_TX_BUF,cbuf[12]+1);
for(j=0;j<20;j++) //
{
RS485_TX_BUF[j]=0;
}
RS485_RX_EN; //接收使能
|
-
串口助手
最佳答案
查看完整内容[请看2#楼]
这个问题后来解决了,确实是cbuf被改了,因为cbuf是接收过来的函数,接收中断里标志位置位后就出来从主函数走,如果这个时候又马上接到别的东西的信号,cbuf就会改变,同时因为标志位置位,程序还会继续往下执行,所以这个时候就收到了错误的数据。
|