要在 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 进行串口通信的基础。