Python如何控制树莓派的UART输入输出
在Python中控制树莓派的UART(通用异步收发传输器)输入输出主要依赖于
pySerial
库。以下是一个基本的示例,展示了如何使用Python读取和发送UART消息。
首先,你需要安装pySerial
库。如果你还没有安装,可以通过以下命令安装:
pip install pyserial
然后,你可以使用以下Python脚本来读取和发送UART消息。
import serial
def receive_uart_messages():
# 创建一个 'Serial' 实例,这里的 'port' 参数是用于指定你使用的UART接口的名字
# 在树莓派上,通常为 '/dev/ttyS0' 或者 '/dev/ttyAMA0',你需要将其替换为你的设备的实际端口号
ser = serial.Serial('/dev/ttyS0', 9600, timeout=1) # 9600 是波特率,timeout 是接收数据的超时时间(秒)
try:
while True:
# 使用 'readline' 方法来接收消息. 这会阻塞程序直到接收到一个消息.
message = ser.readline().decode('utf-8').rstrip() # 解码并去掉末尾的换行符
print(f"Received message: {message}")
except KeyboardInterrupt: # 用户按下了 Ctrl+C
pass # 结束循环
finally:
ser.close() # 关闭串口
receive_uart_messages() # 开始接收消息
这个脚本会创建一个串口实例,并持续监听从指定的UART接口接收的消息。当接收到一个消息时,它会打印出该消息。程序会一直运行直到用户按下Ctrl+C。在程序结束时,它会关闭串口。
如果你需要发送UART消息,你可以使用ser.write(message)
函数。你需要将message
替换为你想要发送的消息。需要注意的是,你需要在发送之前将消息编码为字节流。你可以使用message.encode('utf-8')
来实现这一点。以下是一个示例:
def send_uart_message(message):
ser = serial.Serial('/dev/ttyS0', 9600) # 请根据实际情况更改端口号和波特率
ser.write(message.encode('utf-8')) # 编码并发送消息
ser.close() # 关闭串口
# 使用示例
send_uart_message('Hello, World!')