Seite 1 von 1

Qextserial für Kommunikation mit dem seriellen Port

Verfasst: 17. Februar 2007 12:28
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

Verfasst: 18. Februar 2007 21:56
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

Verfasst: 19. Februar 2007 09:18
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

Verfasst: 25. Februar 2007 17:05
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 ?

Verfasst: 25. Februar 2007 17:31
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

Verfasst: 25. Februar 2007 18:44
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 :)

Verfasst: 25. Februar 2007 21:33
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

Verfasst: 26. Februar 2007 23:39
von rasputin
Ok, das ändern der qextserialport.h war der richtige Tip. jetzt klappt die einbindung und auch die kommunikation.

Verfasst: 27. Februar 2007 08:15
von dvdjimmy
freut mich...

dann viel spaß damit :)

dvdjimmy