python 串口_如何使用Python开发串口通讯上位机(一)

d0525fc210539a6e8f9cf09e23c8ced8.png

ae714a4a6d34ef279570280c010380fc.png用Python开发串口通讯型上位机,其实并非最优解,本系列更新只为个人学习与总结。如果有C语言底子,嵌入式层面的上位机开发,C++ Builder,C#才是更加好用的利器。

1

什么是上位机

从事过嵌入式软件开发或者工控机开发的,对上位机应该都不陌生。简单来说,上位机指的是能够发送指令的计算机或者控制器,通过各类通讯获取下位机信息,控制下位机的行为等。

最典型的例子,电脑端的串口助手(上位机),通过RS232-DB9或者USB转串口,与单片机(下位机)的串口通讯,获取单片机系统的状态等。

e5aad85e2c1bc7d48e75be545ced9551.png

图片来自百度百科

此系列文章,与大家讲讲如何使用Python进行串口通讯型上位机的开发。此为第一篇。  

2

准备工作

1. 串口调试助手,用于验证通讯,此处推荐使用Uartassistant,百度一下即可轻松找到下载方法

dcc16289c9d522310f0104e133017e00.png

2. Virtual Serial Port:虚拟串口,可以在没有实际串口线连接的情况,在电脑端虚拟出对接的两个串口,方便我们在没有下位机或者未就绪的情况下,验证数据的收发,下图为虚拟出COM1与COM2两个串口,并内部互联,打开两个1中调试助手,分别配置为COM1和COM2,波特率相同,在COM1发送“Hello world”,COM2即可收到

b73c6b325dabc8f274eb78d4259616be.png

0a83a27f45dc4cadbacb1f94d9de8869.png

3. Pyqt5:用于开发界面,详见前面几期内容

三步学会Python开发上位机并处理excel数据(一)

5394cd26265fcf8a32c7207e2fff6c8c.png

4. PyCharm:Python IDE

三步学会Python开发上位机并处理excel数据(一)

8206b98b8814638265515fce9d953e3e.png5. Pyserial库安装-pip install pyserial

767e46aab78bcab50a3b32b5325b8f99.png

3

Pyserial 初步使用

Pyserial API的使用参见官网:

https://pythonhosted.org/pyserial/pyserial_api.html。

初始化参数:

name:设备名字
port:读或者写端口
baudrate:波特率
bytesize:字节大小
parity:校验位
stopbits:停止位
timeout:读超时设置
writeTimeout:写超时
xonxoff:软件流控
rtscts:硬件流控
dsrdtr:硬件流控
interCharTimeout:字符间隔超时

常用接口

isOpen():查看端口是否被打开。
open() :打开端口‘。
close():关闭端口。
read():从端口读字节数据。默认1个字节。
read_all():从端口接收全部数据。
write("hello"):向端口写数据。
readline():读一行数据。
readlines():读多行数据。
in_waiting():返回接收缓存中的字节数。
flush():等待所有数据写出。
flushInput():丢弃接收缓存中的所有数据。
flushOutput():终止当前写操作,并丢弃发送缓存中的数据。

简易验证代码:

1. 使用虚拟串口,配置COM1与COM2

2. 打开串口助手,配置为COM2,9600后打开

3. Pycharm或者jupyter notebook输入如下代码并运行

22c2bd0e84a4f74a605cd1e7746e9c4a.png

运行截图如下:

1. Python打开串口后发送“Python serial port demo!”

2. 另外一端的COM2,手动输入“Yes”,Python程序接收到后打印出来

24aa6a46112ed36e89eb6dd3e1086410.png

4

总结

本篇主要介绍了什么是上位机以及Python开发串口通讯型上位机所需的准备工作,并简单展示了如何进行串口收发。

一个好的上位机还需要更多功能,将会在接下来几期逐步深入与完善,敬请期待哦。

关注公众号,获取更多干货哦。

5579feef82f2b66bcb652ebdb84dc0f1.png

 作者:跨界程序员Vincent

feee1ac6ab437a7e52f35214932b0f19.gif

bf118a5c1e21bca92989355d90fbe1fa.pngf071cb4cb08e66cd4b8f40aaacd095c0.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/468753.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

算法题之求二叉树的最大距离

二叉树是一种非常经典的数据结构。如果我们把二叉树看成一个图,父子节点之间的连线看成是双向的,我们姑且定义"距离"为两节点之间边的个数。写一个程序求一棵二叉树中相距最远的两个节点之间的距离。 下面我们随意构造出一棵二叉树&#xff0c…

php 公众号验证回调方法_微信公众号关键词自动回复设置方法!

什么是公众号关键词自动回复?在微信公众号平台设置关键词自动回复,可以通过添加规则,关注/订阅的用户发送的消息内容如果是你设置的关键字,即可以实现自动回复预先设置好的内容。关键字自动回复设置方法:1、 首先我们进…

图文|Android 使用Thread 和多线程使用互斥锁

为什么需要多线程进行开发?多线程不管是嵌入式系统RTOS,Linux,还是应用开发,中间件开发,都是必不可少的,做一个技术的时候,如果能做到举一反三,下次使用的时候不会再遇到坑&#xff…

计算机专业的学生该选择日后的人生道路?继续从事IT还是考公务员……

问题来自知乎原问题如下:知乎上的盆友们大家好!我是某高校大二学生。万能的知友们,有相关经验的大家给点宝贵意见呗,万分感谢。个人问题:我当时是听说这一行工资高,因为家里条件一般,所以想要挣…

汇编比较两个数大小_计算机是怎样跑起来的 -- 体验一次汇编过程

标志内存或I/O中存储单元的数字叫做“地址”。CPU中的标志寄存器有什么作用?用于在运算指令执行后,存储运算结果的某些状态。从程序员的角度看硬件CPU:种类,时钟信号的频率。可以使用哪种机器语言取决于CPU的种类。内存信息&#…

android区块链 钱包_区块链钱包Cashbox 开发工程师聊一聊开源

今天与大家聊一聊软件开源。事情的起因是一次闲谈的时候,市场部的同事表示:不做软件开发的人不能够理解为什么要把软件源代码公开出去。当时的我很惊讶,因为就像他们不理解为什么要开源一样,我也不理解他们为什么不理解为什么要开…

最新车载导航端口检测工具_高德地图这个功能 把微信都没做好的车载社交解决了?...

在汽车网联化和智能化带给人们的诸多想象里,车内社交似乎是最虚无缥缈的那个。在移动互联网领域,微信通过满足人们社交需求这个基本点,构建起庞大的用户群体,展示出巨大的市场前景。但在驾车场景下,车载社交该怎么玩&a…

王译潇20162314 第九周作业总结

学号 20162314 2016-2017-2 《Java程序设计》第九周学习总结 教材学习内容总结 数据库是为其他程序提供数据的应用软件 关系数据库通过唯一的标识符在不同表的记录间建立了关系 JDBC API用来建立到数据库的连接 CREATE TABLE SQL 语句用来创建新的数据库表 ALTER TABLE SQL 语句…

sketchup边线设置_春天花花天桥,SketchUp草图大师快速建模!

最近小吧在网上看到一座设计很特别的天桥,形状很像一朵花,名字也十分写实——春花天桥。喏,就是下面这个家伙!图片来自网络春花天桥是2011年深圳举办大运会前夕投资建设的形象提升工程之一,在建设初期就被定位为地标性…

android 7.1 apk的systemuid和系统应用Setting相同导致开机找不到库的问题

1、前言Android apk加载机制这就是我最近在解决的一个问题,32位的apk可以用32位的库,那64位的apk可以用64位的库,如果我想64位的apk同时使用32和64位的库呢?android加载so文件的机制apk在安装的过程中,系统就会对apk进…

怎样的人适合当码农?

1高中的时候,我一个友仔,他说要创办一个科技协会,然后跟我说电脑里面的代码都是0和1组成的,我现在还记得那天我们在学校开会的时候讨论电脑如何运行,我一脸痴呆的听他给我讲解电子知识,而且他后面自己做了一…

android 7.1 apk的systemuid [2]

1 上周发的一篇文章《android 7.1 apk的systemuid和系统应用Setting相同导致开机找不到库的问题》,然后有个小伙伴找我讨论了,觉得自己的脑洞了打开了很多,所以针对这个问题再次做一次总结,如果大家有好的建议也可以在文末留言。…

Struts2_3_国际化处理_自定义拦截器_文件上传及下载_OGNL

Struts2国际化处理 浏览器根据当前的语言环境自动查找对应的语言环境资源包, 使jsp显示合适的语言数据环境 Struts2实现国际化, 动作类必须继承ActionSupport 创建资源包 资源包由多个properties文件组成, properties文件的文件名必须满足命名规范: 文件名_语言代码_国家代码…

RBAC 基于角色的访问控制

RBAC(Role-Based Access Control,基于角色的访问控制),就是用户通过角色与权限进行关联。简单地说,一个用户拥有若干角色,每一个角色拥有若干权限。这样,就构造成“用户-角色-权限”的授权模型。…

C语言书籍大全

学习过linux的同学应该都知道,linux系统几乎都是用c编写,包括现在主流的android,ios系统,都是使用c编程。为了方便大家学习C语言,小编搜集整理了市面几乎所有的C语言书籍,下面给出部分比较有名的,在微信公众…

android 7.1 apk的systemuid相同导致问题[2]

1上周发的一篇文章《android 7.1 apk的systemuid和系统应用Setting相同导致开机找不到库的问题》,然后有个小伙伴找我讨论了,觉得自己的脑洞了打开了很多,所以针对这个问题再次做一次总结,如果大家有好的建议也可以在文末留言。2先…

送书送书送书,(包邮)送,仅此而已!

亲爱的各位fans们,大家好,这次小编联合5个公众号朋友一起送书,一共送出 6本,当然包邮!感谢本次活动的赞助商北京大学出版社。6个公众号联合送书,一共6本书,每个公众号送1本(包邮)。 6个公众号同…

requests 获取div_爬虫系列第五篇 使用requests与BeautifulSoup爬取豆瓣图书Top250

上一篇我们学习了BeautifulSoup的基本用法,本节我们使用它来爬取豆瓣图书Top250。一、网页分析我们爬取的网页的url是https://book.douban.com/top250?icnindex-book250-all。首页如图与豆瓣电影Top250差不多,将页面拉到最底部,可以看到分页…

python--socket套接字/TCP

socket套接字/TCP 一 客户端/服务器架构 C/S架构,包括 硬件C/S架构(打印机)软件C/S 架构(web服务)C/S架构的软件(软件属于应用层)是基于网络进行通信的Server端要: 1.力求一直提供服…

uniapp封装网络请求_八张图带你走进“通过一个完美请求封装一个网络模块”

本文提供视频课程讲解,需要的小伙伴可以点赞私信‘’网络模块‘’前往领取学习大纲1、网络模块在应用中的地位1.1当今占统治地位的网络组件OKHttp OkHttp 是一个相对成熟的解决方案,据说 Android4.4 的源码中可以看到 HttpURLConnection 已经替换成 OkHt…