Qextserial für Kommunikation mit dem seriellen Port

Alles rund um die Programmierung mit Qt
Antworten
dvdjimmy
Beiträge: 9
Registriert: 14. Februar 2007 08:29

Qextserial für Kommunikation mit dem seriellen Port

Beitrag von dvdjimmy »

Hallo,

ich versuche gerade mit den qextserial klassen zum testen etwas an einen anderen computer zu schicken und mit hyperterminal zu prüfen was da ankommt.

Die Verbindung funktioniert soweit (habe mal auf beiden Rechnern hyperterminal genutzt und was gesendet).

Jetzt habe ich zunächst eine Instanz von der qextserial erzeugt.

Dann habe ich mit instanz.open(); und den anderen Funktionen für Baudrate usw. den Port konfiguriert und geöffnet.

Mittels instanz.putChar(); versuche ich dann ein char array feld für feld zu senden. Leider kommt nichts an :)

Muss ich vielleicht auf die Funktionen der klasse mittels eines zeigers zugreifen?
also instanz->open(); usw.?

Ich hoffe hier sind ein paar die die qextserial klassen schon mal verwendet haben.

Zudem will ich gleichzeitig zwei ports öffnen (com1, com2) und will dazu zwei threads verwenden. Jetzt habe ich gehört oder gelesen, dass die qextserial das nicht so mitmacht bzw. das wohl nicht funktioniert.
Ist das mittlerweile möglich, oder gibt es da ne andere Möglichkeit, wie ich das dann machen könnte?

Viele Grüße und schon vorab besten Dank.

dvdjimmy
AlGaN
Beiträge: 25
Registriert: 25. März 2006 12:45

Beitrag von AlGaN »

Hi,

hab die qextserialport schon mal verwendet, allerdings nur in die andere Richtung (Daten vom seriellen Port lesen mittels readData() )

Normalerweise reicht es ein SerialPort-Objekt zu erzeugen mit Port-Nummer und der entsprechend gesetzten PortSettings-Struktur, also z.B.

Code: Alles auswählen

...
PortSettings myPortSettings;
QextSerialPort* myPort;

myPortSettings.FlowControl = FLOW_HARDWARE;
myPortSettings.Parity = PAR_NONE;
...

myPort = new QextSerialPort("COM5", myPortSettings);
...
öffnet den seriellen Port COM5 mit den gesetzten PortSettings.

Wie gesagt, ich habe die andere Richtung, auf den Port zu schreiben, bisher noch nicht benutzt...

P.S.: Rein interessehalber, hast Du das Öffnen von mehreren Ports schon ausprobiert ? Hab nämlich davon, dass qextserialport das nicht mitmachen soll, noch nichts gehört, würde mich auch mal interessieren...

Gruß,
AlGaN
dvdjimmy
Beiträge: 9
Registriert: 14. Februar 2007 08:29

Beitrag von dvdjimmy »

Hi AlGaN,

danke für deinen Hinweis. Ich habe mittlerweile auch eine wohl Qt4 und thread-safe fähige Version hier vor mir liegen. Damit sollte ich dann mit deiner Syntax auch was brauchbares hinbekommen :)

Die Sache mit dem gleichzeitigen öffnen sollte laut dem Autor der neuen Version problemlos möglich sein :) Ich gebe wieder Rückmeldung sobald ich mehr weiß.

Viele Grüße.

dvdjimmy
rasputin
Beiträge: 3
Registriert: 25. Februar 2007 16:30

Beitrag von rasputin »

Hallo,
vorab, ich bin absoluter Linux Anfänger und erschwerend kommt dazu das ich nicht viel Ahnung von c++ habe.
Ich hab das Archiv QextSerialPort-0.9.0 für QT3 aus den Netz geladen und entpackt. Leider bekomme ich das nicht installiert, ich habe das Paket mit make installiert und es gab keine Fehlermeldung. Wenn ich aber die Datei mittels "#include <qextserialport.h>" einbinden möchte bekomme ich eine Fehlermeldung.
Kann mir bitte jemand verraten, wie ich die Erweiterung richtig einbinden kann ?
dvdjimmy
Beiträge: 9
Registriert: 14. Februar 2007 08:29

Beitrag von dvdjimmy »

@rasputin:

Also ich habe auch nicht wirklich viel Ahnung von c++, aber die Infos die du hier gibst sind so gering, da wird dir absolut niemand weiterhelfen können.

Willst du mit qt4 was machen? Dann verwirf deine Version schnellstens und hole dir die Version für qt4 von sourceforge.

Anschließend wäre mal interessant, was denn eigentlich für ne Fehlermeldung kommt :)

Viele Grüße,

dvdjimmy
rasputin
Beiträge: 3
Registriert: 25. Februar 2007 16:30

Beitrag von rasputin »

Ich benutze QT3 und bekomme folgende Fehlermeldung :
"./qextserialport.h:11:32: error: win_qextserialport.h: Datei oder Verzeichnis nicht gefunden
./qextserialport.h:15: error: expected class-name before ‘{’ token
./qextserialport.h:19: error: expected `)' before ‘const’
./qextserialport.h:20: error: ‘PortSettings’ has not been declared
make: *** [lncw.o] Fehler 1"

Eigendlich würde ich mir gern ein source Listing ansehen in dem qextserialport verwendet wird.
Ich ahb vorher nur in Delphi unter Windows programmiert, das hier ist aber doch etwas anderes :)
dvdjimmy
Beiträge: 9
Registriert: 14. Februar 2007 08:29

Beitrag von dvdjimmy »

@rasputin:
"./qextserialport.h:11:32: error: win_qextserialport.h: Datei oder Verzeichnis nicht gefunden. In der qextserialport wird auf die win_qextserialport verwiesen. Wenn die natürlich nicht da ist, kann es nicht gehen. Wenn du unter Windows programmierst und wahrscheinlich nicht irgendwann mal unter linux auf die serielle schnittstelle zugreifen willst, dann ändere die qextserialport.h so ab, dass er nur noch die win_qextserialport haben will und nichts mehr mit posix usw. Das sollte gleich ziemlich am Anfang von qextserialport.h stehen.

Danach können wir uns den anderen Fehlermeldungen widmen :)

Viele Grüße,

dvdjimmy
rasputin
Beiträge: 3
Registriert: 25. Februar 2007 16:30

Beitrag von rasputin »

Ok, das ändern der qextserialport.h war der richtige Tip. jetzt klappt die einbindung und auch die kommunikation.
dvdjimmy
Beiträge: 9
Registriert: 14. Februar 2007 08:29

Beitrag von dvdjimmy »

freut mich...

dann viel spaß damit :)

dvdjimmy
Antworten