C++ builder 多进程串口通讯程序1 (项目分析)

  

总体实现过程:1.数据接收块  2.接收数据处理块  3.数据发送块,4.进程通讯块

 

 

         其中还有数据加密,电台译码,硬件操作指令选择等等

1. 数据协议= Head +Length+data1+data2+…+dataN+CheckSum

           Length= data1+......+dataN   的数据数量个数

           CheckSum(和校验)=Length+data1+….+dataN

           Head=0x0B;

 

     1.1.数据接收,API或者组件(MSComm我用这个,虽然非议很多),保证数据不丢失,就算是不完整的接收一个帧也不会丢掉。 只有当处理了一个完整的帧后才丢弃。

     1.2.如果遇到Head 取 length+1长度数据校验,数量不够则返回,等待下一帧数据接收后处理。

     1.3.扔掉数据的方法,每次循环找Head,直到找到一帧完整正确的帧,处理完后扔掉一帧数据,不是则每次只扔掉Head。

 

2.      完整数据解析,按照数据协议,进行解析处理。对要加密协议的转发。。

 

3.      发送部分,采用线程触发,沉睡100ms 是否收到应答,标志量IsSend=true,,IsReceive=true则不重发,IsReceive=false,则要重发,只重发一次。。

         及时的开启,及时的结束。。

 

4.      进程通讯,将解析出来的协议通过串口消息,发给需要这个消息进程。FindWindow(1,2),找到窗体句柄SendMessage(1,2,3,4).发给目标窗体。。

         将受到的进程消息发送给  Arm

 

            其中难点在于,C++builder在处理这些时候有一定的不方便之处,毕竟语言是C++支持标准STL库的,语言难度还是相当的。。

            后面的章节将会讲到我遇到和处理的问题,

 

           难点1.。接收数据用队列处理是比较好的,我用vector,

           难点2.。数据发送的时候用TThread线程类,自定义线程,要做到准确的时间检测表质量的变化,

           难点3.。在与进程通讯的时候保证字符数据的完整性,和准确性,基于消息循环的处理,才不会丢失消息。。接错消息。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值