C++ builder 多进程串口通讯程序1 (项目分析)
来源:互联网 发布:手机遥控电视软件 编辑:程序博客网 时间:2024/04/29 04:17
总体实现过程: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.。在与进程通讯的时候保证字符数据的完整性,和准确性,基于消息循环的处理,才不会丢失消息。。接错消息。
- C++ builder 多进程串口通讯程序1 (项目分析)
- 树莓派c语言串口通讯程序
- 父子进程的双向通讯简明解读(c程序)。
- 第二次使用C++BUILDER开发SOCKET通讯程序,工作完成
- C++/CLI程序进程之间的通讯
- 串口通讯程序(中断方式)
- 串口通讯API程序
- MFC 串口通讯程序
- JAVA串口通讯程序
- MATLAB串口通讯程序
- 串口通讯项目
- 串口通讯C代码
- 简单的串口通讯程序
- [.NET/C#] [串口通讯] 二进制通讯 协议
- 自动检测可用串口实现串口通讯程序(可实现串口热插拔检测)
- 自动检测可用串口实现串口通讯程序(可实现串口热插拔检测)
- 实例解析C++/CLI程序进程之间的通讯
- 实例解析C++/CLI程序的进程间通讯
- 程序在结束后删除自身的实现
- 获得子串在主串出现的次数
- Ice笔记---Ice属性与配置
- PHP语言中global和$GLOBALS的区别(参考PHP手册整理)
- 对字符串进行简单的加密和解密处理
- C++ builder 多进程串口通讯程序1 (项目分析)
- 获得随机编码值
- 设计B/S 模式的即时通讯软件
- 企业级即时通讯通信平台的实现
- 普通通用户赋一部分root用户的权限的方法
- jQuery全景图
- Openssl
- redhat中设置环境变量PATH的方法(记得修改文件的读写权限)
- java reverse的工具