PyQT 4.7 не имеет унаследованного класса от QIODevice, который позволяет напрямую взаимодействовать с последовательным портом (например, QSerialDevice).Поэтому я подумал, что мне будет проще использовать класс QProcess и реализовать фактическое чтение / запись в последовательный порт из другого процесса, который будет взаимодействовать с моим основным приложением QT с использованием интерфейса QProcess.
Теперь проблема в том,количество отправленных и полученных байтов не совпадает, когда я использую приведенный ниже код. Итак, мой вопрос, как правильно прочитать двоичные данные из последовательного порта и затем переслать все на стандартный вывод?
Это отрывок из моей основной программы QT, которая создает QProcess:
self.micromouse_socket = QProcess()
self.micromouse_socket.start("/home/ansis/Source/Perforce-pele/Pele/tools/console/comtalker.py", "")
self.micromouse_socket.started.connect(self.on_micromouse_socket_started)
self.label_8.setText("Starting COM...")
И этот процесс будет взаимодействовать с последовательным портом (comtalker.py; неблокирующая часть еще не завершена):
#!/usr/bin/python
import serial
import sys
if __name__ == "__main__":
ser = serial.Serial(0)
while 1 :
x = ser.read(1)
sys.stdout.write(x)
sys.stdout.flush()
PS Возможно, проблема в другом месте ине в PySerial.На другом компьютере я пишу в ttyS0 с помощью этой команды "./binary_data_generator> / dev / ttyS0".Тот же код, кажется, работал нормально, когда я отправлял только символы ASCII (текст + цифры)