У меня следующая конфигурация:
Raspberry Rpi4B / Python 3.11.2 / PyQt5 5.15.9 Сенсорная панель HDMI IPS 10,1 дюйма 1024x600
У меня возникла проблема, когда Я использую QtSerialPort для связи, например, с компьютером.
Открытие связи не является проблемой, отправка шестнадцатеричных данных не является проблемой. Только при получении шестнадцатеричных данных они
неправильный конец. См. мой код ниже. пробовал разные способы чтения, всегда один и тот же результат.
Я думаю, что, возможно, использую неправильную команду. Это должно быть просто. Я проверяю отправку шестнадцатеричных данных на другом компьютере, это правильно. .
from PyQt5 import QtCore, QtWidgets, QtSerialPort
class Widget(QtWidgets.QWidget):
def __init__(self, parent=None):
super(Widget, self).__init__(parent)
self.send1_btn = QtWidgets.QPushButton(
text="Send1",
clicked=self.send1
)
self.send2_btn = QtWidgets.QPushButton(
text="Send2",
clicked=self.send2
)
self.send3_btn = QtWidgets.QPushButton(
text="Send3",
clicked=self.send3
)
lay = QtWidgets.QVBoxLayout(self)
hlay = QtWidgets.QHBoxLayout()
hlay.addWidget(self.send1_btn)
hlay.addWidget(self.send2_btn)
hlay.addWidget(self.send3_btn)
lay.addLayout(hlay)
self.serial = QtSerialPort.QSerialPort('/dev/ttyUSB0',
baudRate=QtSerialPort.QSerialPort.Baud57600,
parity=QtSerialPort.QSerialPort.NoParity,
dataBits=QtSerialPort.QSerialPort.Data8,
stopBits=QtSerialPort.QSerialPort.OneStop)
self.serial.open(QtCore.QIODevice.ReadWrite)
self.serial.setDataTerminalReady(True)
#self.serial.readyRead.connect(self.readFromSerial)
self.serial.readyRead.connect(self.handle_ready_Read)
#def readFromSerial(self):
#self.Esp1=(self.serial.readLine().data())
QtCore.pyqtSlot()
def handle_ready_Read(self):
self.Esp1 = self.serial.readAll()
print (self.Esp1)
if (self.Esp1 ==b'xAAxO2x3Cx31x19 '): # Ok = xAAxO2x3Cx31x19
print ("Ok")
else:
print ("Error")
@QtCore.pyqtSlot()
def send1(self):
# Reset,out service
self.serial.write(b'\xCC\x02\x3C\x55\x5F')
# Syncro
self.serial.write(b'\xCC\x02\x3C\x24\x2E')
# Setup
self.serial.write(b'\xCC\x04\x3C\x23\x00\x10\x3F')
# Enable
self.serial.write(b'\xCC\x02\x3C\x12\x1C')
@QtCore.pyqtSlot()
def send2(self):
# value
self.serial.write(b'\xCC\x04\x3C\x34\x00\x05\x45')
self.step1=1
@QtCore.pyqtSlot()
def send3(self):
# Confirm Ok
self.serial.write(b'\xCC\x02\x3C\x22\x2C')
if __name__ == '__main__':
import sys
app = QtWidgets.QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())
Выход:
b'\xaa\x02'
Error
b'
Подробнее здесь: https://stackoverflow.com/questions/787 ... -from-port