想要读取出usb接口的gps设备中数据。
网上提供的读取gps设备数据方法基本都是采用com口读取,不知道如何读取usb口数据呢?

解决方案 »

  1.   

    这要看你的usb口的gps设备是不是被设计为符合HID设备,要是就可用setupapi中的函数读取,如:
    HidD_GetHidGuid,SetupDiGetClassDevs,SetupDiEnumDeviceInterfaces等函数,如不是就要用与驱动程序通信的方法,如:openfile等
      

  2.   

    楼上兄弟指出了HID设备的访问方法,
    如果是一般的USB设备,也很简单。直接就是CreateFile然后DeviceIoControl
    char completeDeviceName[64] = "";

    strcat (completeDeviceName,
    "\\\\.\\"
    );


    strcat (completeDeviceName,
    "YourDriverName" //注意:这里改成你的USB设备名称
    ); HANDLE  hDevice = NULL;

    hDevice= CreateFile(   completeDeviceName,
    GENERIC_WRITE,
    FILE_SHARE_WRITE,
    NULL,
    OPEN_EXISTING,
    0,
    NULL); BULK_TRANSFER_CONTROL  outBulkControl;/*BULK_TRANSFER_CONTROL  结构体定义为
    typedef struct _BULK_TRANSFER_CONTROL
    {
       ULONG pipeNum;
    } BULK_TRANSFER_CONTROL, *PBULK_TRANSFER_CONTROL;
    */
    outBulkControl.pipeNum=0; //使用USB设备的0号管道;注意:这要根据USB设备固件而定
    DWORD BytesReturned; DeviceIoControl ( //写入
    hDevice,
    IOCTL_MYUSB_BULK_WRITE,
    (PVOID)&outBulkControl,
    sizeof(BULK_TRANSFER_CONTROL),
    outBuffer,
    512,
    &BytesReturned,
    NULL );
      

  3.   

    USB口的GPS都是加了个RS232转USB,只要在安装完驱动后看一下究竟是在哪个串口就行了。剩下的就是普通的串口操作了!