Programmierung der USB-Schnittstelle



  • Hallo Leute,

    ich möchte ein kleines Konsolenprogramm schreiben, das die NMEA-Daten eines Garmin GPS-Gerätes über die USB Schnittstelle ausliest und auf der Konsole anzeigt. Über die serielle Schnittstelle hat das bereits funktioniert.
    Beim Öffnen des USB-Ports und anschließendem Aufruf der Funktion "ReadFile()" hängt sich das Programm allerdings auf. Weiß jemand warum? Der Port ist auf jeden Fall geöffnet. Hier der Code:

    #include <Windows.h>
    #include <iostream>
    #include "conio.h"
    
    using namespace std;
    
    int main()
    {
    	HANDLE hComm;
    	DWORD dwRead = 0;
    	char chRead;
    
    	hComm = CreateFile ("\\\\.\\USB#Vid_091....}",
    			        GENERIC_READ | GENERIC_WRITE,
    				0,
    				0,
    				OPEN_EXISTING,
    				FILE_ATTRIBUTE_NORMAL,
    				NULL);
    
    	if (INVALID_HANDLE_VALUE != hComm)
    		cout << "open";
    	else
    		cout << "not open";
    
    	ReadFile(hComm, &chRead, 1, &dwRead, NULL);
    
    	cout << endl << chRead;
    	getch();
    
    	return 0;
    }
    

    Ich habe es auch schon über die Funktion

    DeviceIoControl( hComm, ??????, pIn, sizeof(szIn), pOut,
                            sizeof(szOut), lpByte, NULL );
    

    probiert, weiß jedoch die Funktionsnummer (I/O-Control-Code) nicht. Hat jemand ne Ahnung wie man diese Nummer heraus bekommt?



  • Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Wie meinst Du "über die serielle Schnittstelle hat es bereits funktioniert"?
    Warum willst Du es dann anders machen?
    Es gibt keinen Weg USB-Geräte direkt anzusprechen... Du musst immer über einen Geräte-Treiber gehen... i.d.R. ist dies für solche Geräte eine emulierte serielle Schnittstelle...


Anmelden zum Antworten