2017-01-05 176 views
0

我購買了測量空氣中二氧化碳含量的設備。它每3秒通過USB報告數值。我想用VB6處理這些值。從VB6訪問USB HID

插入設備後,我在硬件管理器中找到它,列爲人機界面設備(HID)。

通過檢查相關條目我知道,我將它插入Port_#0003.Hub_#0003。在事件選項卡中,我讀取了名爲USB \ VID_04D9 & PID_A052 \ 1.40的設備已配置,並且它的類GUID是{745A17A0-74D3-11D0-B6FE-00A0C90F57DA}。沒有RS/232的實現,至少我沒有看到,所以MS COMM Control是沒有用的(無論如何16個允許的端口號都嘗試過)。

通過搜索關於用[VB6]標記的HID的信息,我得到的唯一信息是直接使用HID API是PITA。

無論如何,我想試試看,並試圖引用HID.dll,只發現VB6抱怨VB無法使用此DLL。

有什麼方法可以訪問我的設備以獲取和處理通信數據?我如何開始這項創業?

+0

當你說「引用」DLL時,你的意思是「將它作爲參考添加」?如果它不是一個COM DLL,則需要爲任何包含的函數添加聲明。是否有一個記錄在案的API?它是用C編寫的嗎? –

+0

吉姆,是的,我試圖添加它作爲參考。但是,它是爲HID編寫的產品,鼓勵MS使用。看到這個描述:https://en.wikipedia.org - 這個頁面聲稱,「你可以使用Windows內置的HID(人機接口設備)驅動程序與符合USB的HID類規範的設備進行通信。需要自定義驅動程序;設備使用Windows中包含的驅動程序,使用任何支持調用API函數的編程語言「:http://janaxelson.com/hidpage.htm/wiki/USB_human_interface_device_class – Herb

+0

第一個鏈接應爲:https: //en.wikipedia.org/wiki/USB_human_interface_device_class – Herb

回答

0

我看到Jan Axleson有一個鏈接(註釋中的同一頁)到VB6實現,但頁面上的所有鏈接都被破壞 - 它們只是重新加載頁面。如果你能跟蹤下來,我相信它會滿足你的需求。

在任何情況下,您都可以使用任何支持HID的設備與DirectInput。實例DirectX8,然後DirectInput8,然後DirectInputDevice。枚舉設備使用GetDIDevices.Acquire感興趣的設備(您的HID設備)並探索其功能。

這一切都取決於DirectX,這是由MS完全documented。該文檔不是VB6友好的,但通常可以將其解決。

+0

謝謝吉姆。但是,DirectX8無法在Win 8.1上安裝,並且說它需要Win 9x,...,Vista。 – Herb

+0

@Herb只需安裝適用於您的操作系統(11?)的最新DX版本。所有早期的接口應包含在新版本中,否則會有相應的接口。 –

1

如果您沒有完整的供應商文檔,這不適用於使用任何語言的心靈模糊。您可能不得不在使用供應商軟件時使用USB嗅探器捕獲原始數據包。從那裏開始艱辛的抓撓和猜測。

查看[VB6] TEMPer Gold USB HID Thermometer Class查看以VB6編寫的代碼以使用此類設備的示例。儘管其他人已經在交換的USB數據包上發佈了示例C代碼和一些反思,但即使讓它工作也有很大的減少和嘗試。這聽起來像你會有更多的工作要做,除非別人已經爲你做了一些繁重的工作。

HID.DLL不是一個ActiveX庫。它沒有嵌入typelib。據我所知,沒有外部typelib可用。因此,無論如何都沒有任何參考。

不僅如此,它甚至不是一個COM庫,而是一個原始的普通舊標準DLL。

我認爲你可能會遠遠超過你的頭。除非供應商提供API庫,否則你可能會走運,除非你有時間和工具來進行必要的研究和開發。如果供應商提供體面的低級文檔,它會節省一些努力,但這似乎不大可能,因爲他們很少這樣做。

+0

感謝您讓我開始。我不會將你的答案標記爲解決方案,直到我取得一些認真的進展,我希望我會這樣做。 +1 – Herb