Seite 1 von 1

QExtSerialPort funktioniert nur mit Hyper Terminal

Verfasst: 6. April 2010 12:47
von Christoph_BS
Hallo Leute,

ich versuche ein GSM-Modem mit AT-Befehlen über die RS-232 Schnittstelle anzusprechen. Um die COM-Schnittstelle anzusprechen benutze ich die Klasse QExtSerialPort.
Dies funktioniert auch in der Regel. Jedoch muss ich bevor ich einen AT-Befehl sende einmal Hyper Terminal starten und wieder beenden (ich tippe nichts in die Konsole ein). Danach kann ich alle AT-Befehle über mein selbst erstelltes Programm erfolgreich an das Modem senden, bis ich den Computer neustarte. Dabei kann ich den Port beliebig oft schließen und öffnen.
Es muss also irgendetwas beim erstmaligen Port öffnen bei Hyper Terminal nach einem Windows Neustart anders laufen, da ich schon rausgefunden habe, dass der Port automatisch geöffnet wird, wenn Hyper Terminal startet. Hat jemand ein ähnliches Problem mit der Klasse.
Bisher öffne ich den Port folgendermaßen:

m_pSerialport = new QextSerialPort("COM1");

m_pSerialport->setBaudRate (BAUD2400);
m_pSerialport->setDataBits(DATA_8);
m_pSerialport->setStopBits(STOP_1);
m_pSerialport->setFlowControl(FLOW_OFF);
m_pSerialport->setParity(PAR_NONE);

if(m_pSerialport->open(QextSerialPort::ReadWrite))
{
//erfolgreich geöffnet

}

Verfasst: 6. April 2010 13:54
von RavenIV
Versuch mal, erst das open(...) zu machen und dann erst die Parameter (Baudrate, FlowControl, usw.) zu setzen.

So wird es nämlich in den Examples auch gemacht und in meiner Testapplikation funktioniert es so.

Verfasst: 6. April 2010 14:09
von Christoph_BS
jo funktioniert,
vielen Dank

Verfasst: 6. April 2010 14:13
von RavenIV
Versuch doch mal das Projekt QSerialDevice von http://fireforge.net/projects/qserialdevice
Dies tut besser als das QExtSerialPort.

Lass Dich nicht von der Version 0.2 abschrecken, das funktioniert gut.
Läuft in meiner Applikation.

Schaust Du auch hier: http://qtforum.de/forum/viewtopic.php?t ... ght=serial

Verfasst: 6. April 2010 18:05
von FaS
Bevor hier alle euphorisch werden: QSerialDevice steht unter der GPL und kann daher z.B. nicht in Closed-Source-Projekten verwendet werden. Mit QextSerialPort habe ich zwar auch ständig Probleme, aber unlösbar sind sie bisher nicht gewesen.