树莓派串口通信 USB串口通信 常用串口命令

树莓派串口通信 USB串口通信

文章目录

  • 树莓派串口通信 USB串口通信
    • 准备
    • 发送数据
    • 接收数据

如果不知道树莓派怎么使用USB串口通信的,欢迎浏览我的另一篇博客文章: 树莓派使用USB串口通信 CH340

这篇文章就以USB串口为例,简单的说下串口通信时常用的几个命令。注意:代码均为Python编写。
个人博客原址:树莓派串口通信 USB串口通信

准备

  • 树莓派4
  • 两个CH340
  • 串口助手

发送数据

  1. 最基础的发送数据方式

    '''
    ser.write(data)    # 发送数据data,data为字节型
    '''
    import serial
    ser = serial.Serial("/dev/ttyUSB0", 115200)
    ser.flushInput()    # 清除缓存
    ser.write("LightningMaster\r\n".encode())    # 发送数据  \r\n可以实现换行  encode()默认是'utf-8'
    

    运行这个代码就可以在串口助手上收到数据。

    树莓派串口通信 USB串口通信 常用串口命令_第1张图片

  2. 发送中文

    import serial
    ser = serial.Serial("/dev/ttyUSB0", 115200)
    ser.flushInput()    # 清除缓存
    ser.write("闪电丶教主\r\n".encode('gb2312'))    # 发送数据  \r\n可以实现换行
    

    树莓派串口通信 USB串口通信 常用串口命令_第2张图片

  3. 发送数据包 十六进制

    import serial
    import struct
    ser = serial.Serial("/dev/ttyUSB0", 115200)
    ser.flushInput()    # 清除缓存
    pack = struct.pack('BBBB', 0xaa, 6, 7, 0x55)    # 将数据打包 格式是unsigned char
    ser.write(pack)
    

    树莓派串口通信 USB串口通信 常用串口命令_第3张图片

    这个地方使用到了struct.pack,具体有啥作用可以自行百度去看看,我在这就不多说了。这里的作用就是将数据打包,返回格式是unsigned char 的字节串。

    可以使用这个函数给数据加上“头”“尾”之类的东西。

接收数据

'''
ser.read(num)    # 读取收到的num个字节的数据
ser.inWaiting()    # 可以获取还未读出的数据
'''
import serial
import struct
import time
ser = serial.Serial("/dev/ttyUSB0", 115200)
ser.flushInput()    # 清除缓存
while True:
    count = ser.inWaiting()    # 获取还有多少字符未读
    if count != 0:
        data = ser.read(count)    # 读取数据存到data中
        print(data)    # 打印接受到的数据
    time.sleep(0.1)    # 系统等待

运行代码,使用串口助手发送数据,可以在树莓派中看到返回值。

树莓派串口通信 USB串口通信 常用串口命令_第4张图片

可以看到树莓派成功接收到了数据。

如果想把b’ '去掉可以使用代码

print(data.decode('utf-8'))

树莓派串口通信 USB串口通信 常用串口命令_第5张图片

接收中文的话需要使用下面的代码

print(data.decode('gb2312'))

树莓派串口通信 USB串口通信 常用串口命令_第6张图片

具体为什么使用encode和decode,可以自行查阅Python相关资料。

你可能感兴趣的:(python,串口通信,linux,嵌入式)