我写了一个与上位机通讯的程序,发现如果通讯过程中丢失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;
}
}
}
|