当时当我将UART3.TX连接UART4.RX,以及UART4.TX连接UART3.RX,如下图:
使用以下代码测试(一开始尝试的是单线程版):
Code: Select all
from periphery import Serial
import threading
import time
def uart3_task():
uart3 = Serial(
"/dev/ttyS3",
baudrate=115200,
databits=8,
parity="none",
stopbits=1,
xonxoff=False,
rtscts=False,
)
# Send messages from UART3
print("UART3 starts working!")
msg = b"START, PLEASE!\n"
while True:
# Continuously send messages until response received from UART4
uart3.write(msg)
print(f"UART3 sent: {msg}!")
time.sleep(0.5) # Sleep for 1 second between messages
# Check if response received from UART4
buf = uart3.read(128, 1) # Set timeout to 1 second
print(f"UART3 receive: {buf}")
if buf:
data_string = buf.decode("utf-8").strip()
if data_string == "Response from UART4!":
print("UART3 received response from UART4:", data_string)
break # Break out of loop if response received
uart3.close()
def uart4_task():
uart4 = Serial(
"/dev/ttyS4",
baudrate=115200,
databits=8,
parity="none",
stopbits=1,
xonxoff=False,
rtscts=False,
)
print("UART4 starts working!")
while True:
# Wait for message from UART3
buf = uart4.read(128, 5) # Set timeout to 1 second
print(f"UART4 received: {buf}")
if buf:
data_string = buf.decode("utf-8").strip()
print("UART4 received:", data_string)
# Send response from UART4
uart4.write(b"Response from UART4!\n")
print("UART4 sent: Response from UART4!")
uart4.close()
# Create and start threads for UART tasks
thread_uart3 = threading.Thread(target=uart3_task)
thread_uart4 = threading.Thread(target=uart4_task)
thread_uart3.start()
thread_uart4.start()
# Wait for threads to finish
thread_uart3.join()
thread_uart4.join()
Code: Select all
# python uart.py
UART3 starts working!
UART3 sent: b'START, PLEASE!\n'!
UART4 starts working!
UART3 receive: b''
UART3 sent: b'START, PLEASE!\n'!
UART3 receive: b''
UART3 sent: b'START, PLEASE!\n'!
UART3 receive: b''
UART3 sent: b'START, PLEASE!\n'!
UART4 received: b''
UART3 receive: b''
UART3 sent: b'START, PLEASE!\n'!
UART3 receive: b''
UART3 sent: b'START, PLEASE!\n'!
UART3 receive: b''
UART3 sent: b'START, PLEASE!\n'!
UART4 received: b''
不知道这是什么原因?