QextSerialPort Win Handle Problem
Verfasst: 14. April 2010 17:06
Hallo Qt Nutzer,
ich bin gerade dabei QextSerialPort zu testen und habe hier ein Problem, bei dem ich Eure Hilfe sehr gut gebrauchen könnte.
Ich habe auf der QextSerialPort Projektwebsite das CSV Projekt ausgecheckt und wollte dies ohne Änderungen bauen. Ergebnis war ein erster Fehler, der aber relativ leicht zu umgehen war. Die Funktionen readData und writeData sind private, werden aber vom Beispiel verwendet.
Also als schnellen Hack diese beiden Funktion public gemacht und schon baute alles. Hatte sonst noch jemand das Problem?
Nach starten der gerade gebauten ausführbaren Datei war ernüchternd:
Als Win_Handle kommt bei mir 0xffffffff, also ein ungültiges Handle raus. Die Definition von Win_Handle ist "HANDLE Win_Handle" und genau hier komme ich nicht weiter. Kann mir jemand erklären was 'HANDLE' ist, wo es definiert ist und vielleicht warum dieses Beispiel bei mir nicht geht? Hatte jemand ähnliche Probleme?
COM1 und COM2 sind natürlich vorhanden
!
Vielen Dank schon im Voraus für Eure Hilfe.
Viele Grüße,
topo
ich bin gerade dabei QextSerialPort zu testen und habe hier ein Problem, bei dem ich Eure Hilfe sehr gut gebrauchen könnte.
Ich habe auf der QextSerialPort Projektwebsite das CSV Projekt ausgecheckt und wollte dies ohne Änderungen bauen. Ergebnis war ein erster Fehler, der aber relativ leicht zu umgehen war. Die Funktionen readData und writeData sind private, werden aber vom Beispiel verwendet.
Code: Alles auswählen
private:
virtual qint64 readData(char *data, qint64 maxlen);
#ifdef _QESP_LOGTRACE_
virtual qint64 readLineData(char *data, qint64 maxlen);
#endif
virtual qint64 writeData(const char *data, qint64 len);
Nach starten der gerade gebauten ausführbaren Datei war ernüchternd:
Also mit dem Debugger geschaut, wo das Problem liegen könnt und bei der open Funktion bin ich darauf gestossen:WriteReadByteArrayTest
----------------------
[] QextSerialPort::Constructor(COM1)
[] QextSerialPort::setName(COM1)
+++ Created first
[] QextSerialPort::Constructor(COM2)
[] QextSerialPort::setName(COM2)
+++ Created second
[COM1] QextSerialPort::open
--- Could not open first
[COM2] QextSerialPort::Destructor
[COM2] QextSerialPort::close
[COM1] QextSerialPort::Destructor
[COM1] QextSerialPort::close
!!! Tests failed !!!
Code: Alles auswählen
bool QextSerialPort::open( QIODevice::OpenMode )
{
QESP_LOGTRACE("open")
if( ! isOpen() && ! Name.isEmpty() )
{
#ifdef Q_WS_WIN
Win_Handle = CreateFileA( Name.toAscii().constData(), GENERIC_READ|GENERIC_WRITE,
0, NULL, OPEN_EXISTING, 0, NULL );
if( Win_Handle != INVALID_HANDLE_VALUE )
{
...
COM1 und COM2 sind natürlich vorhanden
Vielen Dank schon im Voraus für Eure Hilfe.
Viele Grüße,
topo