我使用UART-USB线将微控制器NXP的JN5168连接到Beaglebone Black。现在我正在使用Pyserial库与它进行通信。我可以阅读很长时间没有任何问题,但是当我尝试使用serial.write()函数编写一些东西时,它只能工作一次。之后它不起作用,除非我手动重置微控制器。因此在微控制器中,我尝试在微控制器读取数据后重置UART输入和输出缓冲器,但这没有帮助。我也尝试使用serial.flush / serial.flushinput / seria.flushoutput函数刷新串行通信缓冲区,但即使这样也无济于事。但是一旦我重置微控制器并且serial.write(数据)在第一次调用时工作正常,但除非我手动重置微控制器,否则不能再次工作。我在编写数据后也使用了serial.write('\ r \ n')。请说明这可能是错误的。如果正确接收到字符串,则微控制器返回SC,否则返回null。 python代码在下面, 但是如果我使用任何终端应用程序向微控制器发送相同的数据,微控制器会在向其发送数据时多次返回SC。
import time
import serial
import os
import sys
import signal
ser = serial.Serial(
port='/dev/ttyUSB0',
baudrate=9600,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS
)
ser.xonxoff = False
ser.timeout = 5
if(ser.isOpen):
print "serial interface opened"
ser.close()
ser.open()
out=''
print "Writting "+sys.argv[1]
ser.flush()
ser.flushInput()
ser.flushOutput()
print "Waiting for confirmation"
ser.write(sys.argv[1]+'\r\n')
print str(ser.write(sys.argv[1] +'\r\n'))+" bytes successfully written"
out = ser.read(2)
if(out == "SC"):
print 'Success'
else:
print 'Failed, please try again '+out
exit()