簡體   English   中英

在C ++中發現USB設備並與之通信

[英]Discovering and communicating with USB devices in C++

簡而言之,在USB通信方面,我是個新手。 雖然我在微控制器方面處理過較低級別的串行通信(SPI,UART,I2C),但我從未處理過USB或串行通信的OS端。 所以,請忍受我。

我有一個RFID讀/寫器,它具有自己的協議,可用於發出各種命令。 我正在研究使用Boost:ASIO庫執行所需的讀/寫操作。

但是,圖書館有點麻煩,我正在尋找一些指導。 此外,當我在Windows環境中工作時,我想使我的硬件抽象層盡可能地可移植。 同樣,我過去(和其他程序員)對COM端口進行硬編碼時遇到了不好的經驗,我寧願我的程序在插入時發現我的閱讀器,也許是基於閱讀器ID。

我建議您研究libusb( http://www.libusb.org/ ),它具有對USB接口的跨平台支持,並且如果您了解USB的工作原理,它並不復雜。

設備檢測是特定於平台的,因此您應該在特定於OS的部分和數據處理之間定義跨平台API。

對於Windows上的設備枚舉,有SetupDi * API。 設備到達事件可以通過RegisterDeviceNotification獲得。 您可以檢查包含VID和PID的“兼容ID”,以及報告USB字符串描述符的總線相關設備描述,以識別您自己的設備。

在Linux上,有udev ,它可以在VID,PID和字符串描述符上進行匹配,並為匹配的設備提供枚舉和到達事件。

使用這些特定於OS的方式查找串行端口名稱后,您將具有各種跨平台的串行端口庫來打開連接並與設備交換數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM