Я хотел бы постоянно проверять соединение через COM-порт, я нашел здесь как проверить соединение, но когда я реализую его в своем приложении, чтобы проверить, подключено ли устройство, я не достигаю желаемого результата, возможно, потому, что я проверяю его с помощью QTimer каждую секунду, но, возможно, все идет хорошо только сначала время при включении..
Надеюсь, с кодом будет легче понять.
Итак, открываю порт:
import serial
global ser
from PyQt5.QtCore import QTimer
timer = QTimer()
def setting_COMPort():
global ser
ser = serial.Serial(
port='/dev/ttyAMA0',
baudrate = 115200,
parity=serial.PARITY_NONE,
stopbits=serial.STOPBITS_ONE,
bytesize=serial.EIGHTBITS,
timeout=1)
timer.timeout.connect(self.statusComPort)
в "основной" функции есть QTimer
global timer
timer.start(1000)
и в слоте statusComPort я хочу каждую секунду проверять через QTimer, подключено ли устройство.
def statusComPort(self):
global ser
colorr=self.palette()
if(ser.isOpen()):
self.lineEdit_6.setText(str("Port is open!"))
print("Port is Open")
colorr.setColor(self.backgroundRole(), QtGui.QColor(155,155,155))
self.setPalette(colorr)
else:
self.lineEdit_6.setText(str("Error! Port is close!"))
colorr.setColor(self.backgroundRole(), QtGui.QColor(155,0,5))
self.setPalette(colorr)
print("Port is close")
В случае потери соединения я меняю цвет своего окна. Проблема в том, что прикладное решение, предложенное по ссылке, в данном случае не работает.
Итак, что я должен изменить в своем слоте, чтобы добиться результата..?
Может быть, использовать другую функцию, а не isOpen()?
ОС - Распбиан
ОБНОВЛЕНИЕ 1
ссылка на проект, вырезано все, кроме необходимого функционала https://github.com/ivanwolodin/statusofcomport
Подведение итогов. У меня есть Qtimer, который действует каждую секунду, поэтому мое приложение каждую секунду переходит в слот «statusComPort», где я хочу проверить, подключено ли устройство через последовательный порт. Итак, я хочу постоянно (каждую секунду) проверять состояние моего последовательного порта, и вопрос: как мне написать этот слот для правильной проверки
your_serial.error.connect(self.handleError)
, и тогда слот получит код ошибки, в вашем случае:def handleError(self, error): if error != QSerialPort.NoError: print("Serial Port error:" + self.sender().errorString())
- person eyllanesc   schedule 15.08.2017