如何使⽤Python开发串⼝通讯上位机(完结)2021的第⼀份更新,⽐以往时候来得早⼀点!
前⾯两期讲了如何使⽤pyserial和做好了基本的上位机界⾯以及与API的联动,今天我们接着完
善下代码。
1
编码规范的使⽤
前⾯两期只是做基础展⽰⽤,所以代码写得随意。但是纵观⼀份软件的开发和使⽤周期,实际
开发阶段编码的时间占⽐很少,⽽绝⼤部分时间都处于代码调试、查阅以及优化升级中,因此
代码的可读性与可维护性⾄关重要。所以⼤家在编码之前不妨先熟读⼀下Python常⽤的编码规
范PEP8,增强代码可读性的同时也能拉近你和其他开发者间的距离。
由于UI⽂件⾃动导出的py⽂件没有严格遵循PEP8,因此为了保证风格⼀致,我的在UI代码⽂件
中新增的代码会维持⾃动代码的风格。另外为了快速区分不同类型的组件,我⼀般习惯如下⽅
式规定前缀:
- Text输⼊显⽰:前缀TXT_
- Button组件:前缀B_
- Label组件:前缀L_
- Listwidget:前缀LW
类,函数与变量的命名规则可以参照如下:
python怎么读取串口数据2
类的使⽤
接触过C++,C#等语⾔的⼩伙伴,对类的概念应该不陌⽣,类提供了⼀种组合数据和功能的⽅
法。对于串⼝通信⽽⾔,我们可以把常⽤操作(初始化,扫描可⽤串⼝号,数据收发等)封装
成⼀个类,通过继承与派⽣,⽅便我们在不同项⽬中移植使⽤,增加代码复⽤率,避免⽆谓地
重复造轮⼦。
3
线程的使⽤
上⼀期的接收函数,我们直接写成⼀个死循环,在主程序中调⽤,会导致页⾯的刷新不够及
时。所以此⼦章节来讲讲如何创建线程,并让线程⾃⾏管理数据接收轮询。
线程(Thread)也叫轻量级进程,是操作系统能够进⾏运算调度的最⼩单位,它被包涵在进程
之中,是进程中的实际运作单位。线程⾃⼰不拥有系统资源,但它可与同属⼀个进程的其它线
程共享进程所拥有的全部资源。就以我们这个上位机为例,上位机软件本⾝可以认为是⼀个进
程,它的页⾯刷新与响应,以及接下来说的串⼝接收,可以认为是同属上位机进程的线程。
此处,在打开串⼝成功以后,我们将接收操作放⼊⼀个线程中,并在检测到⽤户点击关闭串⼝
后结束。
另外,页⾯动态刷新,我们其实也可以创建⼀个周期性执⾏的线程⽤于内容可变的组件的刷
新。
4
队列的使⽤
我们的上位机功能相对简单,其实没必要⽤到FIFO队列。但是如果在做复杂功能时,例如需要
对接收数据进⾏进⼀步处理时或者有多处线程需要发送数据时,不妨使⽤队列进⾏数据管理存
储。队列的本质为先进先出的数据结构,在python标准库中已经封装好了的线程安全的队列, 简
化了我们多线程的信息传递。
此处,我们将接收到的数据放⼊队列.
5
数据接收⼗六进制显⽰
接收可以选择将数据以Hex显⽰还是ASCII显⽰,此处结合radio button讲讲如何实现。radio button有个属性为isChecked,表征是否被选中。另外通过hex函数可以将数值转换成16进制, 并以0x开头的字符串形式显⽰。⽽如果要显⽰当前整数对应的 ASCII 字符,则使⽤chr()函数
6
总结
本篇主要介绍了⼏个提⾼代码可读性和可维护性以及代码优化的⽅法,限于篇幅,发送数据格式的转换就不提及了,当作课后⼩作业进⼀步完善这份上位机。
码字不易,赞赏后会在下⽅显⽰获取源码的⽅法。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论