Seite 1 von 1

Probleme mit Comport öffnen mit QextSerial

Verfasst: 18. Januar 2010 14:18
von Ozzy
Moin,

ich probiere gerade, ein Gerät über die serielle Schnittstelle anzusprechen. Dafür probiere ich nacheinander alle vorhandenen Com-Ports zu öffnen, einen Befehl hin zu schicken, und wenn die richtige Antwort kommt, hab ich mein Gerät gefunden. Doch aus irgendwelchen Gründen möchte er den entsprechenden Port (Com16) nicht öffen. Hier mein Code:

Code: Alles auswählen

    PortSettings portSettings;
    portSettings.BaudRate = BAUD115200;
    portSettings.DataBits = DATA_8;
    portSettings.Parity = PAR_NONE;
    portSettings.StopBits = STOP_1;
    portSettings.FlowControl = FLOW_OFF;
    portSettings.Timeout_Millisec = 500;

    QList<QextPortInfo> ports = QextSerialEnumerator::getPorts();

    for (int i=0; i<ports.size(); i++) {
        if (DEBUG) printf("\r\n port name: %s\r\n", ports.at(i).portName.toLocal8Bit().constData());
        port = new QextSerialPort( ports.at(i).portName, portSettings);

        if ( !(port->open(QextSerialPort::ReadWrite) ) ) {
            if (DEBUG) printf("Could not connect\r\n");
            port->close();
            continue;
        }
        ...
    }
Ich bekomme immer die Meldung "Could not connect", wobei ich mit einem normalen Terminalprogramm über den Port und die Einstellungen auf das Gerät zugreifen kann.
Ist da irgendwo ein Fehler, den ich nicht sehe?

Vielen Dank für Eure Hilfe, Ozzy

Verfasst: 18. Januar 2010 16:37
von Ozzy
Moin,

habe das Problem gelöst; anscheinend mag qextserial nur ports unter 10. Alle andern werden zwar aufgelistet, jedoch kann nicht auf die ports geschrieben werden...

Verfasst: 19. Januar 2010 03:14
von FaS
Ich hatte mal dasselbe Problem, die Lösung liegt in einer anderen Schreibweise. In folgendem Format funktionieren auch größere Portnummern:
\\.\com16 (Backslashes escapen nicht vergessen...).

Gruß,
FaS

Verfasst: 19. Januar 2010 08:08
von Ozzy
Gut zu wissen! Dann kann ich das ja einfach vor jeden Portnamen schreiben, und dann sollte das ja auch für die oberen funktionieren.

Vielen Dank noch einmal, MfG, Ozzy