PySerial Read.line() not printing



我在打印写入串行端口的内容时遇到问题。它不显示或只输出:'b'

我尝试了很多不同的东西,但无法阅读和打印。

from doctest import IGNORE_EXCEPTION_DETAIL
from logging import exception
import serial
import serial.tools.list_ports
# Here is the link to the documentation I referenced: https://docs.python.org/3/library/multiprocessing.html
from multiprocessing import Process
import time
import io

def sendData(data, port, baud):
time.sleep(0)
with serial.Serial(port=port, baudrate=baud, timeout=0) as ser:
ser.reset_input_buffer()
ser.reset_output_buffer()
ser.flushInput()
ser.flushOutput()
data += "n"
print()
print("Data that was sent: ", data)
ser.write(data.encode())
ser.close()

def receiveData(port, baud):
time.sleep(0)
with serial.Serial(port=port, baudrate=baud, timeout=0) as ser:
ser.reset_input_buffer()
ser.reset_output_buffer()
ser.flushInput()
ser.flushOutput()
line = ser.readline().strip()
print()
print("Data that was received:", line.decode())
ser.close()

def main():
if __name__ == "__main__":
spObject = serial.tools.list_ports.comports()
serialPorts = []
print()
for i in spObject:
serialPorts.append(i.device)
print('Available ports:')
for i in range(len(serialPorts)):
print('%i. %s' % (i+1, serialPorts[i]))
selectedPort = int(input('Please select a port to send data to: '))
while selectedPort-1 not in range(len(serialPorts)):
print('Invalid input')
selectedPort = input('Please select a port: ')
tty = serialPorts[selectedPort-1]
data = input(
'Please enter the data you want to send over the serial port: ')
print()
spObject2 = serial.tools.list_ports.comports()
serialPorts2 = []
for i in spObject2:
serialPorts2.append(i.device)
print('Available ports:')
for i in range(len(serialPorts2)):
print('%i. %s' % (i+1, serialPorts2[i]))
selectedPort2 = int(input('Please select a port to listen on: '))
while selectedPort2-1 not in range(len(serialPorts2)):
print('Invalid input')
selectedPort2 = input('Please select a port: ')
lport = serialPorts2[selectedPort2-1]
p1 = Process(target=sendData(data, tty, 115200))
p2 = Process(target=receiveData(lport, 115200))
p2.start()
p1.start()
p2.join()
p1.join()
print()
print("Done!")
print()

main()

我试着用"utf-8"、"ascii"等读取行解码。什么都没用。我是不是忘了包括一些东西?我还尝试过readlines((、read((等。数据是否发送到端口?

将字节大小传递给readline()。这对我有效。例如:

line = ser.readline(2)  #receive two bytes

最新更新