Pyserial的基础用法详解

本文介绍了Pyserial库在Python中进行串口通信的基础用法,包括打开串口、设置波特率、写入数据、读取数据以及清除缓冲区。强调了在传输汉字时需使用UTF-8编码,并给出了Keil5环境下使用HAL库进行串口通信的示例,强调接收端需设置超时时间和解码为UTF-8。
摘要由CSDN通过智能技术生成

Pyserial的基础信息请移步其他文章,本文章只演示基础用法的详解,对于其他文章缺少的细节进行补充,本文使用的设备的测试代码基于keil5,发送和接收的都是汉字

"""
serial = serial.Serial(‘COM1’, 115200)              打开COM1并设置波特率为115200
serial .write(“hello”)                              往串口里面写数据
data = serial .read(num)                            读num个字符
serial.flushInput()                                 清除输入缓冲区数据
serial.flushOutput()                             中止当前输出并清除输出缓冲区数据

"""

对于基础用法,以上几段代码就够用了,其中缓冲区的用法暂时是用不到的

# 选择端口,设置波特率,设置超时时间
ser = serial.Serial('COM7', 115200, timeout=1)

第一步,选择你的端口,右击“我的电脑”,选择“设备”,找到正确的端口

第二步,设置波特率,保证你代码中的波特率和设备的波特率吻合

第三步,设置超时时间,当程序超过“超时时间”还没完成时会自动跳过,防止程序卡死

send_me = "测试"    # 发送内容
real_send = send_me.encode("utf-8")    # 用utf-8进行编码
ser.write(real_send)           # 使用write函数将命令写入串口,接收端的接收函数必须添加超时时间,否则只能执行一次接收端的判断函数

发送部分:

串口通信只支持传输byte格式的数据

需要把字符型数据编码成byte格式进行传输

详细了解:https://blog.csdn.net/m0_38080253/article/details/78841280

这里,我们发送“测试”两个汉字,用utf-8进行编码

以上是kei5的代码,采用hal库,当接收到python发来的“测试”时,反转led灯的引脚电平,并发送“测试”二字给python ,注意:接收函数必须写超时时间,否则会造成只能接收发送一次的bugkeil5的解码需要设置成utf-8

# keil5中编写好串口发送,直接发送汉字即可,不需要转化成十六进制或其他任何进制,但必须把keil的默认字符集改为utf8
# pyserial读取的值是二进制Byte格式的字符串,两个汉字需要至少6个字节
Byte = ser.read(6)
# 接收到的数据也是bytes格式,从bytes解码为Unicode字符串
uni = Byte.decode() # decode不写参数,默认utf-8
print("Byte的值是:", Byte)
print("uni的值是:", uni)
print("Byte的格式是:", type(Byte))
print("uni的格式是:", type(uni))

需要接收到的bytes格式需要解码成utf-8

pyserial 的难点就在于搞不清楚decode和encode的使用,如果要发送的字符串中包含的是十六进制数字需要另一种转码方式,详细参考:http://t.csdn.cn/c1GoJ,本文也是依据此文改编而来

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值