Linux使用python调用串口<Ubuntu>

发布于:2024-07-14 ⋅ 阅读:(154) ⋅ 点赞:(0)

要在 Ubuntu 上使用 /dev/ttyUSB0 设备编写一个简单的串口收发程序,你可以使用 Python,结合 pyserial 库来实现。这种方法相对简单,适用于各种串行通信任务。以下是如何在 Python 中编写串口收发程序的步骤及代码示例:

步骤 1: 安装 PySerial

首先确保安装了 pyserial,这是一个流行的 Python 库,用于处理串行通信:

pip install pyserial

步骤 2: 编写串口收发代码

以下是一个简单的 Python 脚本,用于打开 /dev/ttyUSB0 串口,配置波特率和其他参数,然后接收和发送数据。

import serial
import time

def open_serial(port, baud_rate):
    """打开串口并配置基本参数"""
    try:
        ser = serial.Serial(port, baud_rate, timeout=1,
                            parity=serial.PARITY_NONE,
                            stopbits=serial.STOPBITS_ONE,
                            bytesize=serial.EIGHTBITS)
        if ser.is_open:
            print(f"Serial port {port} opened successfully")
        return ser
    except Exception as e:
        print(f"Failed to open serial port: {e}")
        return None

def read_from_serial(ser):
    """从串口读取数据"""
    try:
        data = ser.readline()  # 读取一行数据
        if data:
            print(f"Received: {data.decode().strip()}")
    except Exception as e:
        print(f"Failed to read data: {e}")

def write_to_serial(ser, data):
    """向串口发送数据"""
    try:
        ser.write(data.encode())
        print(f"Sent: {data}")
    except Exception as e:
        print(f"Failed to send data: {e}")

def main():
    port = "/dev/ttyUSB0"
    baud_rate = 9600

    # 打开串口
    ser = open_serial(port, baud_rate)
    if ser and ser.is_open:
        try:
            # 循环接收和发送数据
            while True:
                read_from_serial(ser)
                time.sleep(1)
                write_to_serial(ser, "Hello from Python!")
                time.sleep(1)
        finally:
            ser.close()
            print("Serial port closed")

if __name__ == "__main__":
    main()

程序说明

  • 打开串口: open_serial 函数尝试打开指定的串口并配置波特率等参数。
  • 读取数据: read_from_serial 函数从串口读取一行数据,并将其解码并打印。
  • 发送数据: write_to_serial 函数向串口发送字符串。
  • 主循环: main 函数中的循环演示了如何连续读取和发送数据。

注意事项

  • 确保你有足够的权限访问 /dev/ttyUSB0。如果没有,你可能需要使用 sudo 来运行你的脚本,或将用户添加到 dialout 组。
  • 波特率和其他串口参数应该与你要通信的设备相匹配。

这个简单的示例提供了使用 Python 和 PySerial 进行串口通信的基础。


网站公告

今日签到

点亮在社区的每一天
去签到