[英]Read data from USB using C++ on Windows 7
我正在嘗試讀取Trimble SPS-361 GPS接收器的輸出,該接收器通過USB連接到Windows 7機器,使用C ++ (最好)或Java 。 我知道人們已經提出了類似的問題,但我似乎無法找到我正在尋找的東西。 這聽起來像libusb是我最好的選擇,這是真的嗎? 如果是這樣,什么是一個很好的教程/指南/示例代碼?
聽起來我需要安裝/編寫某種特定於設備的驅動程序然后我可以通過libusb用C ++從設備讀取數據。 這是從USB讀取的一般過程還是我困惑?
總結我認為需要的東西(我知道我到處都是):
好吧,如果你想要來自設備的原始數據,你可以在USB設備列表中找到它,並像文件一樣從中讀取它。
從獲取所有設備開始:
HDEVINFO hDevInfo = SetupDiGetClassDevs( &HIDWatch::GUID_DEVINTERFACE_HID, 0, 0, DIGCF_DEVICEINTERFACE );
列舉每一個,直到找到您要找的內容:
SetupDiEnumInterfaceDevice( hDevInfo, NULL, &HIDWatch::GUID_DEVINTERFACE_HID, index++, &InterfaceInfoData )
通過SetupDiGetInterfaceDeviceDetail
獲取設備詳細SetupDiGetInterfaceDeviceDetail
...然后通過具有GENERIC_READ
訪問權限的CreateFile
打開設備路徑的文件句柄...運行DeviceIoControl
以使用IOCTL_HID_GET_PRODUCT_STRING
獲取產品字符串。 如果它不是您的設備,請關閉文件CloseHandle
。 如果它是你的,坐在一個循環(最好在一個線程上)做一個ReadFile
,你將從設備獲得原始記錄。
這應該讓你去...
通常,GPS傳感器在Windows中作為串行端口公開。 無需進行特定的USB處理。
只需通過CreateFile / ReadFile進行串行通信,並解析收到的GPS NMEA數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.