von USB empfangen
-
wie kann ich von USB empfangen??
ich hab schon eine Verbindung aber wie geht des dann weiter??
-
-
irgentwie geht des nich GetLastError() gibt 87 zurück hier mal der code
HDC hdc=GetDC(NULL); char buf[200]; char getstring[800]; unsigned long BytesWritten, BytesRead; hTreiber = CreateFile("\\\\.\\USB#ROOT_HUB#4&36ce346&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8}",//"\\\\.\\ HID#Vid_046d&Pid_c025#6&2fd80901&0&0000#{4d1e55b2-f16f-11cf-88cb-001111000030}","\\\\.\\USB#ROOT_HUB#4&36ce346&0#{f18a0e88-c30c-11d0-8815-00a0c906bed8}", // Treiber wird geladen 0 GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED , NULL); if (hTreiber == INVALID_HANDLE_VALUE) { MessageBox(NULL,"Verbindung zum USB-Port konnte nicht hergestellt werden!",0,0); CloseHandle(hTreiber); return 0; }else { MessageBox(NULL,"Verbindung zum USB-Port akzeptiert!",0,0); } sprintf(buf,"GetLastError=%d",GetLastError()); TextOut(hdc,0,0,buf,strlen(buf)); ReadFile(hTreiber, getstring, sizeof(getstring), &BytesRead, NULL); sprintf(buf,"GetLastError=%d ",GetLastError()); TextOut(hdc,0,20,buf,strlen(buf)); sprintf(buf,"empfangen=%d bytes=%d",getstring,BytesRead); TextOut(hdc,0,40,buf,strlen(buf)); DeleteDC(hdc);
-
Und an welcher Stelle genau (du rufst ja mehrere Male GetLastError auf) kommt das jetzt?
87 - The parameter is incorrect. - ERROR_INVALID_PARAMETER
-
Aus der Hilfe zu ReadFile:
MSDN schrieb:
If hFile was opened with FILE_FLAG_OVERLAPPED, the lpOverlapped parameter must not be NULL. It must point to a valid OVERLAPPED structure.
So, und dann willst Du 800 Bytes vom Root Hub lesen. Kannst Du mir erklären, was Du vom Root Hub für Daten erwartest? Was sollen Deiner Meinung nach in den 800 Bytes an Daten landen?
-
also ich hab da die maus angeschlossen und denke das daran jetzt die positon der maus drin is
-
lol
-
Heinzelmännle schrieb:
also ich hab da die maus angeschlossen und denke das daran jetzt die positon der maus drin is
Du sprichst aber nicht mit der Maus, Du sprichst mit dem Root Hub. Du mußt Dir ein Handle auf die Maus besorgen.
Dazu solltest Du den Pfad zum Gerät nicht direkt angeben, sondern zur Laufzeit ermitteln. Das geht mit dem Setup-API (im Notfall: Suchfunktion). Die Maus ist ein HID, und danach mußt Du suchen. Anhand VID und PID kannst Du das Gerät indentifizieren (HidD_GetAttributes).
Danach darfst Du nicht einfach 800 Bytes einlesen, sondern mußt die Länge des Input-Reports exakt angeben, dazu den Identifier des Reports. Abfragen kannst Du das mit HidD_GetPreparsedData, HidP_GetCaps und HidD_FreePreparsedData.
Du bekommst von der Maus aber garantiert keinen String geliefert.