IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 从零开始学习使用Pyserial串口通信 -> 正文阅读

[嵌入式]从零开始学习使用Pyserial串口通信

使用python的pyserial包进行串口通信比较简单,但也有一些需要注意的事情,本文是为了让没有串口通信知识的朋友从零开始学用的笔记。

理论知识

串口通信基础知识

常见的四接线串口通信指通用异步收发器(Universal Asynchronous Receiver/Transmitter),通常称作UART,是一种串行、异步、全双工的通信协议。
典型四线串口

工作原理

工作原理是将传输数据的每个二进制位一位接一位地传输。在UART通信协议中信号线上的状态为高电平时代表‘1’,信号线上的状态为低电平时代表‘0’。比如使用UART通信协议进行一个字节数据的传输时就是在信号线上产生八个高低电平的组合。
串口通信使用二进制字节流进行,发送和接收缓冲区均为char型的数组。
这时候就需要在两个uart设备上指定相同的传输速率,以及空闲位、起始位、校验位、结束位,也就是遵循相同的协议。
*因此,波特率是必须要优先选择好的,两个设备应该以同样的波特率收发信息,否则串口不会工作。

Pyserial实现串口通信

pyserial包的安装

与其他python包相同,直接在window的cmd中使用以下命令即可
(具体我也不太懂,反正pip install就是可以用来方便的安装python包)

pip install pyserial

习惯使用anaconda的用户也可以在anaconda的powershell中用conda的安装命令。

pyserial的基本函数

pyserial的官方帮助文档
首先,要将pyserial包导入

import serial 
  1. 串口初始化的函数
ser = serial.Serial('COM6',19200,timeout=timex)

serial.Serial是一个类,也是最基本的串口函数,我们通过实例化得到一个叫ser的实例。(具体请学习python的「类」)
下面是几个参数的说明。

1.'COM6’

'COM6’是window系统的串口设备名,可以在设备管理器中查看有哪些串口可供使用。
在这里插入图片描述
2.19200
是波特率,需要与串口所连接的另一个设备匹配。
3.timeout
我是指定了修改timeout参数,这是终止时间,用以终止串口操作。比如说我使用read函数读取串口数据,程序就会持续读取timeout的时长来读取数据

注:以下所有函数都是serial.Serial的方法,也就是使用

ser.function()

的格式来调用。(ser为刚刚创建的实例)

write函数

使用例子:

传输格式

串口通信只支持传输byte格式的数据,不能传递int型数据(就是不能直接传送数字,不管是什么进制都不行)
需要把字符型数据编码成byte格式进行传输(常用的是UTF-8编码方式)
python的encode和decode编码,以及常见编码类型

例如:
发送一个十六进制的数据
使用fromHex()函数来进行字符到byte的转换。
(业余人士用python一定要去找那些封包的函数,不要去用那些奇奇怪怪的代码。。自己心里也迷糊)

字符串’xxxxxxxx’的byte型数据用b’xxxxxxxx’表示。

Measure_tem_comand='55 AA 11 00 03 13'#要发送的十六进制字符串,两个数字(字母)一组,用空格隔开
byte_Measure_tem_comand=bytes.fromhex(Measure_tem_comand)#使用fromhex函数将16进制指令转换为byte类型
ser.write(byte_Measure_tem_comand)#使用write函数将命令写入串口
recive_sta = ser.readall()#从串口中读取数据

if recive_sta!=b'':#判断是否有读取到数据。
        # 将接受的16进制数据格式如b'h\x12\x90xV5\x12h\x91\n4737E\xc3\xab\x89hE\xe0\x16'
        #                      转换成b'6812907856351268910a3437333745c3ab896845e016'
        #                      通过[]去除前后的b'',得到我们真正想要的数据 
        print("receive",str(binascii.b2a_hex(recive_sta))[2:-1])

这样子就可以对串口所连接的仪器进行操作啦!

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:43:26  更:2021-11-09 19:44:44 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 9:40:48-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码