版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
——基于Qt(Windows)版医用仪器软件设计MedicalInstrumentSoftwareDesign2022第6章打包解包小工具设计实验——BasedonQt(WindowsEdition)关于这节课Aboutthiscourse.“One
为确保数据(或命令)在传输过程中的完整性和安全性,需要在发送之前对数据(或命令)进行打包处理,接收到数据(或命令)之后进行解包处理。因此,无论是软件还是硬件平台,都需要有一个共同的模块,即打包解包模块(PackUnpack),该模块遵照某种通信协议。本章将介绍PCT通信协议,并通过开发一个打包解包小工具,来深入理解和学习PCT通信协议。目录实验内容实验原理实验步骤本节任务本章习题实验内容
学习PCT通信协议,设计一个打包解包小工具,在行编辑框中输入模块ID、二级ID及6字节数据后,通过“打包”按钮实现打包操作,并将打包结果显示到打包结果显示区。另外,还可以根据用户输入的10字节待解包数据,通过“解包”按钮实现解包操作,并将解包结果显示到解包结果显示区。实验原理
从机常作为执行单元,用于处理一些具体的事务,而主机(如Windows、Linux、Android和emWin平台等)常用于与从机进行交互,向从机发送命令,或处理来自从机的数据,如下图所示。1.PCT通信协议主机与从机交互框图主机与从机之间的通信过程如下图所示。主机向从机发送命令的具体过程是:①主机对待发命令进行打包;②主机通过通信设备(串口、蓝牙、Wi-Fi等)将打包好的命令发送出去;③从机在接收到命令之后,对命令进行解包;④从机按照相应的命令执行任务。从机向主机发送数据的具体过程是:①从机对待发数据进行打包;②从机通过通信设备(串口、蓝牙、Wi-Fi等)将打包好的数据发送出去;③主机在接收到数据之后,对数据进行解包;④主机对接收到的数据进行处理,如进行计算、显示等。2.PCT通信协议格式PCT通信协议规定:(1)数据包由1字节模块ID+1字节数据头+1字节二级ID+6字节数据+1字节校验和构成,共计10字节。(2)数据包中有6个数据,每个数据为1字节。(3)模块ID的最高位bit7固定为0。(4)模块ID的取值范围为0x00~0x7F,最多有128种类型。(5)数据头的最高位bit7固定为1,数据头的低7位按照从低位到高位的顺序,依次存放二级ID的最高位bit7、数据1的最高位bit7、数据2的最高位bit7、数据3的最高位bit7、数据4的最高位bit7、数据5的最高位bit7和数据6的最高位bit7。(6)校验和的低7位为模块ID+数据头+二级ID+数据1+数据2+…+数据6求和的结果(取低7位)。(7)二级ID、数据1~数据6和校验和的最高位bit7固定为1。注意,并不是说二级ID、数据1~数据6和校验和只有7位,而是在打包后,它们的低7位位置不变,最高位均位于数据头中,因此,依然还是8位。PCT通信协议格式如下图所示:3.PCT通信协议打包过程PCT通信协议的打包过程分为4步。
第1步,准备原始数据,原始数据由模块ID(0x00~0x7F)、二级ID、数据1~数据6组成,如下图所示。其中,模块ID的取值范围为0x00~0x7F,二级ID和数据的取值范围为0x00~0xFF。
第2步,依次取出二级ID、数据1~数据6的最高位bit7,将其存放于数据头的低7位,按照从低位到高位的顺序依次存放二级ID、数据1~数据6的最高位bit7,如下图所示。
第3步,对模块ID、数据头、二级ID、数据1~数据6的低7位求和,取求和结果的低7位,将其存放于校验和的低7位,如下图所示。
第4步,将数据头、二级ID、数据1~数据6和校验和的最高位置1,如下图所示。4.PCT通信协议解包过程PCT通信协议的解包过程也分为4步。第1步,准备解包前的数据包,原始数据包由模块ID、数据头、二级ID、数据1~数据6、校验和组成,如下图所示。其中,模块ID的最高位为0,其余字节的最高位均为1。
第2步,对模块ID、数据头、二级ID、数据1~数据6的低7位求和,如下图所示,取求和结果的低7位与数据包的校验和低7位对比,如果两个值的结果相等,则说明校验正确。
第3步,数据头的最低位bit0与二级ID的低7位拼接之后作为最终的二级ID,数据头的bit1与数据1的低7位拼接之后作为最终的数据1,数据头的bit2与数据2的低7位拼接之后作为最终的数据2,以此类推,如下图所示。
第4步,下图所示即为解包后的结果,由模块ID、二级ID、数据1~数据6组成。其中,模块ID的取值范围为0x00~0x7F,二级ID和数据的取值范围为0x00~0xFF。5.设计框图打包解包小工具设计框图如下图所示。6.packunpack文件对
本书资料包提供的packunpack文件对中包含PCT通信协议的C++语言实现代码,其中包含4个API方法,分别是构造方法PackUnpack()、打包方法packData()、解包方法unpackData()及获得解包后的数据包方法getUnpackRslt(),如下表。方法说明PackUnpack();构造方法,对模块进行初始化intpackData();待打包的数据必须是8字节,模块ID必须是0X00到0X7FboolunpackData();通过该方法逐个对数据进行解包和判断,解包后的数据通过getUnpackRslt()方法获取Qlist<uchar>getUnpackRslt();返回值为获得解包后的数据包实验步骤复制PackUnpack项目更换界面文件添加PackUnpack文件对完善widget.h文件完善widget.cpp文件构建并运行程序验证本节任务
按照PCT通信协议规定,模块ID的最高位固定为0,这意味着其取值范围只能在0x00~0x7F之间,那么在进行程序验证时,如果在模块ID编辑框中输入的值大于7F,会出现什么情况?经过验证后发现此时在打包结果显示区仍然会显示数据,显然这是不符合PCT通信协议的,尝试解决该问题,当模块ID不在规定范围内时弹出错误提示信息,并要求重新输入。本章习题根据PCT通信协议,模块ID和二级ID分别有多少种?2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 主体结构混凝土浇筑进度策划方案
- 公司预算移动审批方案
- 2026年中级银行从业资格《个人理财》检测卷附参考答案详解【满分必刷】
- 广东省汕尾市2026年高考物理三模试卷(含答案解析)
- 呼吸系统疾病的护理科研方法
- 养老护理员护理礼仪与沟通
- 企业预算项目跟踪方案
- 2026年企业员工防范刷单返利诈骗情景题
- 2026年新媒体运营专员招聘公众号排版美化题
- 企业生产调度优化方案
- 2026药物临床试验质量管理规范(GCP)培训结业考核试题附答案
- 2026南非餐饮业市场现状供需分析及投资评估规划分析研究报告
- 2026年储能电站运维人员考试题库
- GB/T 21001.2-2026制冷陈列柜第2部分:分类、要求和试验条件
- 2026年入团积极分子团课结业考试理论知识题
- 义务教育均衡发展质量监测八年级综合试卷
- (一模)东莞市2026年高三年级模拟考试生物试卷(含答案)
- 2026江苏南京师范大学专业技术人员招聘10人备考题库附完整答案详解(考点梳理)
- 《融合新闻学》第二版 课件05 网络图文报道
- 小红书账号运营培训课件【互联网】【运营课件】
- 水路客运安全培训课件
评论
0/150
提交评论