QSerial

Alles rund um die Programmierung mit Qt
Antworten
kitebuggy
Beiträge: 7
Registriert: 16. Juli 2021 22:30

QSerial

Beitrag von kitebuggy »

Hallo

Ich möchte ein kleines GUI schreiben, welches Befehle über die serielle Schnittstelle an einen Arduino sendet und auch von diesem eine Antwort erhält.
Diese Antwort soll zur Weiterverarbeitung in eine Variable geschrieben werden.
Das ganze serielle Schreiben und lesen muss ich wegen der GUI in einen separaten Thread legen, da sonst die GUI solange 'tot' ist, bis der serielle Port antwortet.
Nun weiß ich genug Theorie(glaube ich), wie ich es anstellen soll, aber wie programmiere ich das? Würde mich wundern, wenn nicht schon jemand so etwas programmiert hätte.
In welche Themen sollte ich mich dafür einlesen? Gibt es dazu ein Tutorial?

Programmieren tu ich in Python, benutze pyQt5.

Kann auch in c++ erklärt sein. Versuche das ganze dann nach Python zu übersetzen (Wird sicher intressant ;) )


Danke
I want my office to be quiet. The loudest thing in the room - by far - should be the occasional purring of the cat.

Linus Torvalds
kitebuggy
Beiträge: 7
Registriert: 16. Juli 2021 22:30

Re: QSerial

Beitrag von kitebuggy »

Ich übersetze mir jetzt das Beispiel: terminal (Serielle Schnittstelle) der Dokumentation von Qt von C++ nach Python, um die Benutzung der seriellen Schnittstelle in pyqt5 zu erlernen.

Jetzt hänge ich in der Dialogbox Settingdialog:

Ich habe eine Combox gefüllt mit Werten:

Code: Alles auswählen

self.ui.dataBitsBox.addItem('5',QtSerialPort.QSerialPort.Data5)
self.ui.dataBitsBox.addItem('6',QtSerialPort.QSerialPort.Data6)
self.ui.dataBitsBox.addItem('7',QtSerialPort.QSerialPort.Data7)
self.ui.dataBitsBox.addItem('8',QtSerialPort.QSerialPort.Data8)
und möchte jetzt die zugehärigen Daten auslesen. (Nicht die 5, sondern QtSerialPort.QSerialPort.Data5)

In c++ steht hierzu:

Code: Alles auswählen

m_currentSettings.dataBits = static_cast<QSerialPort::DataBits>(
                m_ui->dataBitsBox->itemData(m_ui->dataBitsBox->currentIndex()).toInt());
Mein Code dazu lautet:

Code: Alles auswählen

self.dataBits=self.ui.dataBitsBox.itemData(self.ui.dataBitsBox.currentData())
        print('DataBits: ',self.dataBits)
Es kommt aber nur zur Ausgabe von 'DaraBits: None'

Kann mir vielleicht jemand da weiterhelfen?
I want my office to be quiet. The loudest thing in the room - by far - should be the occasional purring of the cat.

Linus Torvalds
Antworten