通讯数据丢失的问题

[复制链接]
 楼主| 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 | 显示全部楼层
谢谢!
dqyubsh 发表于 2012-12-22 21:01 | 显示全部楼层
485通讯应该考虑MODBUS协议。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

439

主题

2540

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

439

主题

2540

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部