1、P36、37接上位机通信
2、P30、P31接模块
3、上位机发送命令,执行P30、P31模块,中间需要切换uart1端口
处理主要代码:
- u8 send[20];
- void ExecIOIn()
- {
- u8* s = send+1;
- u32 curTime;
- s[0]=0xCC;
- s[1]=0x03;
- s[2]=0x00;
- s[3]=s[0]+s[1]+s[2];
- s[4]=0xDD;
-
- // 切换P30、P31
- UART1_SW(UART1_SW_P30_P31);
-
- COM1.RX_Cnt = 0;
- COM1.RX_flag = 0;
-
- SendUart1(s, 5);
- curTime=ticket_1ms;
- while(ticket_1ms<curTime+50)
- {
- if(COM1.RX_flag) break;
- }
- // 切换回来P36、P37
- UART1_SW(UART1_SW_P36_P37);
-
- // 返回查询结果
- s[0]=COM1.RX_Buffer[1];
- s[1]=02;
- s[3] = 0;
- if(COM1.RX_flag)
- {
- s[2]=0x00;
- s[3] = COM1.RX_Buffer[4];
- }
- else
- {
- s[2]=0xF1;
- }
- SendHostData(4);
- }
复制代码
偶发出现上位机发送命令,返回的数据异常的情况,概率不大。
如下:
- 2025-08-12 14:12:43.446 > AA 03 00 AD BB
- 2025-08-12 14:12:43.498 < AA 03 03 02 00 03 B5 BB
- 2025-08-12 14:12:44.299 > AA 03 00 AD BB
- 2025-08-12 14:12:44.352 < AA 03 03 02 00 03 B5 BB
- 2025-08-12 14:12:45.153 > AA 03 00 AD BB
- 2025-08-12 14:12:45.205 < AA 03 03 02 00 03 B5 BB
- 2025-08-12 14:12:46.006 > AA 03 00 AD BB
- 2025-08-12 14:12:46.039 < A7 6D D0 20 A0 7C 80 A3
- 2025-08-12 14:12:46.840 > AA 03 00 AD BB
- 2025-08-12 14:12:46.893 < AA 03 03 02 00 03 B5 BB
- 2025-08-12 14:12:47.694 > AA 03 00 AD BB
- 2025-08-12 14:12:47.746 < AA 03 03 02 00 03 B5 BB
- 2025-08-12 14:12:48.547 > AA 03 00 AD BB
- 2025-08-12 14:12:48.600 < AA 03 03 02 00 03 B5 BB
- 2025-08-12 14:12:49.401 > AA 03 00 AD BB
- 2025-08-12 14:12:49.454 < AA 03 03 02 00 03 B5 BB
复制代码
目前2天出现2、3次,出现错误的数据是一样的。麻烦指导一下?
|