Не получается Записать или Прочитать данные по COM порту pyqt 5 используя библиотеку qtserialport
Не получается ПрочитатЬ данные по COM порту между ноутбуками. Использую библиотеку qtserialport pyqt 5. Ошибок не возникает. Линия и порты исправны так как все получается если пользоваться специальной утилитой COM Port Toolkit 4.0. По отдельности пробовал читать тоже безрезультатно, но запись данных получается. Оказалась проблема была что нет waitForReadyRead для чтения данных. Пример ниже рабочий.
# -*- coding: utf-8 -*-
import time
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtCore import QIODevice, QBitArray
from PyQt5.QtSerialPort import QSerialPort, QSerialPortInfo
class MyWindow(QtWidgets.QWidget):
def __init__(self, parent=None):
QtWidgets.QWidget.__init__(self, parent)
self.label = QtWidgets.QLabel("Нажми кнопку для запуска потока")
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.btnRead = QtWidgets.QPushButton("Чтение")
self.btnWrite = QtWidgets.QPushButton("Запись")
self.vbox = QtWidgets.QVBoxLayout()
self.vbox.addWidget(self.label)
self.vbox.addWidget(self.btnRead)
self.vbox.addWidget(self.btnWrite)
self.setLayout(self.vbox)
self.btnRead.clicked.connect(self.Read_Buf)
self.btnWrite.clicked.connect(self.Write_Buf)
self.serport = QSerialPort()
self.serport.setBaudRate(9600)
self.serport.setPortName("COM3")
self.serport.setDataBits(8)
self.serport.setParity(0)
self.serport.setStopBits(1)
print(self.serport.open(QIODevice.ReadWrite))
print(self.serport.isReadable())
def Read_Buf(self):
strBuf = QBitArray()
strBuf.resize(100)
while self.serport.waitForReadyRead(100) == 0:
count = 1
strBuf = self.serport.readLine(7)
print(str(strBuf))
print(count)
if len(strBuf) > 0:
break
time.sleep(1)
def Write_Buf(self):
count = 2
self.serport.write(b'1111')
print(count)
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
window = MyWindow()
window.setWindowTitle("Запуск и остановка потока")
window.resize(300,100)
window.show()
sys.exit(app.exec_())