⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 recv_uart.c

📁 m68k平台的Linux多串口实例
💻 C
字号:
#define  DLE       '\xAA'         /* data line escape */
#define  STX       '\xBB'         /* start of text */
#define  ETX       '\xCC'         /* end of text */
#define  ACK       '\xDD'         /* positive acknowledge  */
#define  NAK       '\xEE'         /* negative acknowledge */
#define  XON       '\xC3'         /* transmission ON   */
#define  XOFF      '\xC1'         /* transmission OFF  */
#define  XOK       '\xC2'         /* answer for XON   */

  if(uart_packet_end != 1){     /*未收到完整包*/
     
      while(uart_recv_in_ptr != uart_recv_out_ptr){
         *data_ptr = *uart_recv_out_ptr;
         rec_cks ^= *uart_recv_out_ptr;
         data_len ++;
         if(++uart_recv_out_ptr >= &uart_recv_buff[XMIT_BUFF_SIZE])
		uart_recv_out_ptr = &uart_recv_buff[0];
	 if(++data_ptr >= &data_buff[XMIT_BUFF_SIZE])
	 	data_ptr = &data_buff[0];
         if(endflag == 1){
            endflag = 0;
            data_ptr = &data_buff[0];
            if(rec_cks == 0)
            	send_ack();
            	uart_packet_end = 1;
            else
            	send_nak();
	    rec_cks = 0;	                  
            break;
         }
         
         switch ( *(data_ptr -1)) {
            case (unsigned char)DLE :       /* AA AA means char AA*/
               if(data_ptr != &data_buff[1] && *(data_ptr-2) == (unsigned char)DLE)
                  data_ptr--;
               break;
            case (unsigned char)STX :
               break;
            case (unsigned char)ETX :       /* end of frame received*/
               if(*(data_ptr-2) == (unsigned char)DLE)
                  endflag = 1;
               break;
            default:
               if(data_ptr == &data_buff[1]) {
                  data_ptr == &data_buff[0];
                  rec_cks = 0;
               }
               break;
         }
      }  /* end of while*/
   }
   else (uart_packet_end == 1 )
   {        /*收到一个完整包,处理包*/
      
      uart_packet_end = 0;
   }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -