Я играю с двунаправленной последовательной связью между моим ПК и платой разработки STM32.Я использую Python 3.7 с PySerial 3.4 , чтобы открыть последовательный порт и получать / принимать сообщения от / на плату разработчика.Все работает как положено, кроме случаев, когда я пытаюсь читать и печатать многострочные сообщения.В этом случае я получаю только первую строку сообщения.
Программа на микроконтроллере такова, что я получаю многострочное справочное сообщение, если я посылаю 'H' через последовательный порт на плату контроллера.Многострочное сообщение, которое отправляет доска разработчиков, выглядит следующим образом:
"HELP\r\nList of commands:\r\nH: Display list of commands\r\nS: Start the application"
Поэтому я ожидаю увидеть следующую распечатку:
HELP
List of commands:
H: Display list of commands
S: Start the application
Но вместо этого я получаю только:
HELP
Если я подключусь к порту с помощью PuTTY и вручную отправлю 'H', я получу полное сообщение;так что я знаю, что это не проблема моей программы микроконтроллера.
Мой код Python выглядит следующим образом:
import serial
import io
class mySerial:
def __init__(self, port, baud_rate):
self.serial = serial.Serial(port, baud_rate, timeout=1)
self.serial_io_wrapped = io.TextIOWrapper(io.BufferedRWPair(self.serial, self.serial))
# receive message via serial
def read(self):
read_out = None
if self.serial.in_waiting > 0:
read_out = self.serial_io_wrapped.readline()
return read_out
# send message via serial
def write(self, message):
self.serial.write(message)
# flush the buffer
def flush(self):
self.serial.flush()
commandToSend = 'H'
ser = mySerial('COM9', 115200)
ser.flush()
ser.write(str(commandToSend).encode() + b"\n")
while True:
incomingMessage = ser.read()
if incomingMessage is not None:
print(incomingMessage)
Любая помощь будет высоко ценится.