串口通信的接收端通常需要使用一个无限循环来持续监听串口数据。以下是使用Python读取串口数据的示例代码
import serial
ser = serial.Serial('/dev/ttyUSB0', 9600) # 创建一个串口对象
while True:
if ser.in_waiting > 0: # 如果串口有数据可读取
data = ser.readline().decode().strip() # 读取串口数据并转成字符串形式
print(data) # 打印读取到的数据
:这里使用 `serial` 库创建了一个名为 `ser` 的串口对象,使用 `/dev/ttyUSB0` 作为串口端口,波特率为 9600。在 `while` 循环中,使用 `ser.in_waiting` 方法判断串口是否有数据可读取。如果串口有数据可读取,使用 `ser.readline()` 方法读取一行数据,并通过 `decode()` 方法将二进制数据转换成字符串,再使用 `strip()` 方法去掉字符串两端的空格和换行符。最后打印读取到的数据。
需要注意的是,Python的 `serial` 库的串口读取函数有多种,如 `read()`、`readline()`、`read_until()` 等,可以根据需求选择合适的函数。同时,在使用 `serial` 库时需要考虑设备操作系统和Python版本的差异,例如在Windows系统上需要使用 `COMx` 作为串口端口名,而在Linux系统上则需要使用 `/dev/ttyXXX`。
来一个jetson nano版本的
import serial
# 初始化串口通信,根据实际情况修改串口号和波特率参数
ser = serial.Serial('/dev/ttyTHS1', 115200)
def serial_receiving():
global frame, flag
if ser.in_waiting > 0:
cmd = ser.read(1).hex()
# 拍照
if cmd == 'aa':
print('cmd')