Hi,
auf meinem LPC1758 hab ich einen virtuellen Com-Port erzeugt und sende
von meinem Rechner (x86) an diesen LPC per USB Daten.
Das funktioniert auch relativ gut; aber ab und an treten Fehler in der
WriteFile() Methode auf (Getlasterror liefert 998 ERROR_NOACCESS).
Versuches ich es danach sofort wieder zu senden, funktioniert es wieder.
Kann es sein, dass dieser Fehler auftaucht, wenn im LPC-Controller beide
64Byte Buffers für den USB Endpoint noch nicht freigegeben sind? Der LPC
sendet darauf ein NAK und mein Win-Rechner erzeugt dann diese
Fehlermeldung?
1 | CByteArray *pData;
|
2 | DWORD bytesWritten;
|
3 |
|
4 | OVERLAPPED ovl = {0};
|
5 | ovl.hEvent = WriteEvent;
|
6 |
|
7 |
|
8 |
|
9 | BOOL ok = ::WriteFile(hCom, // handle
|
10 | pData, // data
|
11 | pData->GetSize(), // length
|
12 | &bytesWritten, // amount written
|
13 | &ovl); // overlapped structure
|
14 | if(!ok)
|
15 | { /* failed */
|
16 | DWORD err = ::GetLastError();
|
17 | if(err != ERROR_IO_PENDING)
|
18 | { /* serious error */
|
19 |
|
20 | //hier treten ab und zu 998 errors auf...
|
21 | }
|
22 | }
|
Oder weiß jmd warum diese Fehler ab und zu - z.B. nach 15min auftreten;
wenn man kontinuierlich Daten an den USB-Port sendet im Abstand von
30ms.
Gruß
Sebastian