RS232-Kommunikation geht nicht

OP #3304852
Lesenswert?
• ▲
▼
Hallo zusammen,

seit Jahren nun Programmiere ich unter Linux, ohne größere 
Schwierigkeiten. Nun habe ich mich überreden lassen ein Interface zu 
meinem Multi I/O Board unter Windows zusammenzuprogrammieren.... 
folgendes Problem:

Das Board hat einen FTDI Uart2USB Chip, wie gesagt Board läuft unter 
Linux super, auch unter Windows kann ich es mit Putty ansteuern.

Wenn ich nun meine Code-Schnipsel zusammensuche bin ich mir sicher, dass
 * CreateFile läuft
 * und WriteFile läuft (auf dem Board kann ich die LEDs ein und 
ausschalten :-) )

ReadFile will nicht, was mache ich falsch?
1
sendLine("?"); // Hier hinter steckt ein WriteFile...
2
Sleep(1000);
3
LPVOID lpBuffer;
4
BOOL ret;
5
static DWORD iBytesRead;
6
for (int i = 0; i < 10; i++) {
7
  ret = ReadFile(_device,lpBuffer, 1, &iBytesRead,NULL);
8
  cout << "Reading: " << ret << " " << (char*)lpBuffer << endl;
9
}

hab auch schon mit den Timeouts rumgespielt, aber egal was ich tue "ret" 
ist immer 0 und in lpBuffer steht Kauderwelsch


Danke

Schorsch
Gast #3304867
Lesenswert?
• ▲
▼
Georg T. schrieb:
> hab auch schon mit den Timeouts rumgespielt, aber egal was ich tue "ret"
> ist immer 0 und in lpBuffer steht Kauderwelsch

Unter Windows gibt es sogar ein Auführliche doku.
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365467(v=vs.85).aspx

If the function fails, or is completing asynchronously, the return value 
is zero (FALSE). To get extended error information, call the 
GetLastError function.
OP #3305371
Lesenswert?
• ▲
▼
Habs gefunden,

vielen Dank für die Infos, die GetLastError Methode hat mir sehr 
geholfen:

so sah mein CreateFile Aufruf aus:
1
_device = CreateFile(*lstr, GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);

richtig ist aber
1
_device = CreateFile(*lstr, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);

Ich dachte, dass "WRITE" ebenfalls ein "READ" impliziert, dem ist nicht 
so

Gruß und Danke

Schorsch

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren