打印

通讯数据丢失的问题

[复制链接]
2317|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chen3bing|  楼主 | 2012-12-22 14:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我写了一个与上位机通讯的程序,发现如果通讯过程中丢失1个数据,就无法恢复。
请高手指教,该如何解决?
程序如下。
/* 串口2(485)接收中断 */
void __attribute__((__interrupt__,auto_psv)) _U2RXInterrupt(void)
{ IFS1bits.U2RXIF = 0 ;
while(U2STAbits.URXDA == 1)           /* 判断硬件缓冲区内是否有数据 */
{
  uart2_Buf[uart2_WriteBuf_count++] = U2RXREG ;      /* 将硬件缓冲区数据写入内存缓冲区 */
  if(uart2_WriteBuf_count==3)
  {
   if((uart2_Buf[0]==0x55)&&(uart2_Buf[1]==0xaa)&&(uart2_Buf[2]==0xcc))   //发送数据
   {
    uart2_num=65;
   }
   if((uart2_Buf[0]==0x55)&&(uart2_Buf[1]==0xaa)&&(uart2_Buf[2]==0xdd))   //回读数据
   {
    uart2_num=7;
   }
  }
  if(uart2_WriteBuf_count==uart2_num)
  {
   uart2_WriteBuf_count=0;
   uart2_num=0;
   receive_flag=1;
  }
}
}

相关帖子

沙发
NE5532| | 2012-12-22 14:26 | 只看该作者
你是不是想说“没有超时退出的机制”??

使用特权

评论回复
板凳
ayb_ice| | 2012-12-22 14:31 | 只看该作者
打包传输,增加超时,数据校验,

使用特权

评论回复
地板
chen3bing|  楼主 | 2012-12-22 16:11 | 只看该作者
谢谢!

使用特权

评论回复
5
dqyubsh| | 2012-12-22 21:01 | 只看该作者
485通讯应该考虑MODBUS协议。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

439

主题

2540

帖子

2

粉丝