import serial
import time
def serial_read_write(port, baudrate, timeout):
# 打开串口
ser = serial.Serial(port, baudrate, timeout=timeout)
# 开始时间
start_time = time.time()
# 读取数据
while True:
if ser.in_waiting > 0:
data = ser.read(ser.in_waiting)
# 计算时间戳
current_time = time.time() - start_time
# 输出时间戳和数据
print(f"[{current_time:.3f}s] Received: {data}")
# 写入数据
if ser.out_waiting > 0:
# 获取要发送的数据
send_data = input("Enter data to send: ")
# 发送数据
ser.write(send_data.encode())
# 计算时间戳
current_time = time.time() - start_time
# 输出时间戳和发送的数据
print(f"[{current_time:.3f}s] Sent: {send_data}")
使用此函数时,需要提供串口的端口号、波特率和超时时间。例如,可以使用以下代码在串口COM1
上以9600
波特率和1
秒的超时时间运行函数:
serial_read_write("COM1", 9600, 1)
此函数将持续读取串口数据,并将其打印出来。同时,它还允许用户输入数据并将其写入串口。每个数据读取和写入操作都会附带一个时间戳,用于标记数据的接收和发送时间。