3
回答
如何实现串口通信机制

通过串口异步方式进行通信,程序初始状态是一直间隔1s的循环发送命令,例如
【发】 02 00 4D 52 00 01 0C 00 50 FC 03 12 12 12 12 12 12 12 12 12 12
【发】02 01 4D 52 50 01 0C 00 50 4D 03 12 12 12 12 12 12 12 12 12 12
数据帧结构是:02+序列号+数据+校验+03.后面的12是间隔。直到程序不论顺序的接收到上面2条发送命令的应答时,接收到的应答如下,很长,帧格式相同:
接收到的应答:
【收】02 01 4D 44 00 01 0C 00 50 08 00 A8 00 10 82 00 28 00 B8 10 82 10 94 00 F0 10 82 10 94 00 80 10 82 10 94 00 28 10 83 10 94 00 AE 06 1C 00 9A 00 AC 00 A8 00 AC 00 CC 00 AC 00 A2 04 10 94 00 81 04 10 94 00 4C 04 10 94 00 7D 04 10 94 00 60 10 83 10 94 00 65 04 10 94 00 73 04 10 94 00 FC 04 10 94 00 60 2D 6C 00 E3 16 10 94 00 39 03

【收】02 10 82 4D 44 50 01 0C 00 50 05 0D 10 94 00 61 0D 10 94 00 59 01 5C 01 B7 01 5C 01 7D 16 10 94 00 57 15 10 94 00 DD 16 10 94 00 00 00 00 00 82 20 8C 01 CE 05 10 94 00 92 05 10 94 00 A7 01 24 01 13 01 5C 01 3B 01 5C 01 80 10 82 10 94 00 80 10 82 10 94 00 80 10 82 10 94 00 80 10 82 10 94 00 80 10 82 10 94 00 80 10 82 10 94 00 FE 03
接收玩应答之后,换用另外一条命令发送,且以后每隔3s会发送一次:
【发】02 36 4D 44 08 00 A8 00 01 10 83 7B 03
接收到相应的应答:
【收】4D 44 08 00 A8 00 01 10 83
然后发送如下数据,应该是对需要接收的数据的一个请求设置,此段发送数据为上面接收数据4D 44 08的回应,每次发送一次。
02 06 45 4F 00 00 00 00 00 9A 03 12 12 12 12 12 12 12 12 12 12 
02 07 54 49 2A 00 F5 00 00 C3 03 12 12 12 12 12 12 12 12 12 12 
02 08 54 49 30 00 C3 00 FF 97 03 12 12 12 12 12 12 12 12 12 12 
发送玩后会接收到:
【收】45 44 10 83 00 01 00 08 10 82 00 05 00 00 00 00 00 ,以及54 44的所需要的具体数据,作为上面的应答。

此后,就是一样的发送数据:
4D 52 08 00 A8 00 01 10 83 这个发送一条
4D 52 B8 10 82 10 94 00 37 这个发送五条。
接收的数据为上面2条发送命令的应答外加所需要的数据,格式头尾54 44的数据。
用表格描述就是这样:


请问要如何实现这样的通信机制,一直有发送,然后用waitonmask 监视接收,如何让接收数据作为匹配判断条件等等,期待高手的解答。

<无标签>
举报
唐顿庄园
发帖于6年前 3回/925阅
顶部