Я пишу интерфейс для старого электронного оборудования, которое использует серийный номер RS232. Я столкнулся с проблемой, которую я не могу решить. Вот исходный кодПочему print() влияет на чтение com1?
def readMyPort():
global readPort
while True: #always loop
if readPort: # only do something of the port is active
dataString = b''
while (mySerialPort.inWaiting()>0):
data = mySerialPort.read(1)
if (data == b'') or (data == b'\r') or (data == b'\n'):
if (dataString != b''):
myOutput.insert('1.0', (dataString + b'\n').decode())
dataString = b''
else:
dataString += data
Проблема я сталкиваюсь не в том, что прибор посылает строку из 12 символов в ответ на команду, и я, кажется, только чтобы успеть на последний 4, и нет, не существует «» , '\ r' или '\ n' в строке. Чтобы устранить неполадки, я добавил print(), как показано ниже. Волшебно я начал получать все данные.
def readMyPort():
global readPort
while True: #always loop
if readPort: # only do something of the port is active
dataString = b''
while (mySerialPort.inWaiting()>0):
data = mySerialPort.read(1)
print(data) #<-------- the added line
if (data == b'') or (data == b'\r') or (data == b'\n'):
if (dataString != b''):
myOutput.insert('1.0', (dataString + b'\n').decode())
dataString = b''
else:
dataString += data
Теперь я не хочу, чтобы вся эта печать продолжалась нормально. Я попробовал просто добавить print('')
, и это тоже работает, но у меня все еще есть все, что печатается. Я пробовал print('', end = '\r')
, но это не сработало. У кого-нибудь есть идея, почему? Я не думаю, что это проблема скорости. Я всего лишь 9600 бод. FYI: python 3.2 на машине Win32. Эта процедура запускается в ее собственной теме.
Спасибо за предложение. Раньше я пытался добавить задержку, но, возможно, мне не хватило времени. –