Проблема PyQT5 с чтением из порта с помощью QtSerialPort
В настоящее время я пытаюсь связаться с устройством, которое отправляет поток данных по COM. У меня странная проблема с QtSerialPort, которую я пока не знаю, как решить. Описание проблемы: Когда я перезагружаю устройство и перезапускаю свое приложение, в приложении я могу открыть соответствующий порт без каких-либо ошибок. Однако я не получаю никаких данных с устройства. Я пытаюсь прочитать данные с COM-порта с сигналом
readyRead
. Теперь, когда я открываю порт с помощью другой программы B, которая использует серийный номер Python, я могу успешно читать с устройства после перезапуска. Теперь, после успешного чтения с устройства с помощью программы B, я также могу успешно прочитать с устройства с помощью QT-программы A, но только если я не перезагружаю устройство. Следующий код содержит изолированный порт с QtSerial, который воспроизводит указанную выше проблему.
import sys
from PyQt5 import QtSerialPort
from PyQt5.QtCore import *
from PyQt5.QtSerialPort import *
from PyQt5.QtWidgets import QApplication, QMainWindow
class QtSerialTest(QMainWindow):
def __init__(self, parent=None) -> None:
super().__init__()
self.port_com_port = QtSerialPort.QSerialPort()
self.port_com_port.setPortName("COM4")
self.port_com_port.setBaudRate(QSerialPort.BaudRate.Baud115200)
self.port_com_port.setParity(QSerialPort.Parity.NoParity)
self.port_com_port.setDataBits(QSerialPort.DataBits.Data8)
self.port_com_port.setStopBits(QSerialPort.StopBits.OneStop)
self.port_com_port.open(QIODevice.ReadWrite)
self.port_com_port.readyRead.connect(self.readFromSerial)
def readFromSerial(self):
print(self.port_com_port.readAll())
if __name__ == '__main__':
app = QApplication(sys.argv)
test = QtSerialTest()
app.exec()
Могу подтвердить, что после перезагрузки функция "readFromSerial" ни разу не вызывается, хотя устройство отправляет.
РЕДАКТИРОВАТЬ: забыл упомянуть: я сравнил настройки порта из программы A и B, они равны