日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

hid read c Linux,linux/windows hid

發布時間:2023/12/15 linux 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hid read c Linux,linux/windows hid 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、背景:

最近在做的一個項目需要使用USB傳遞數據,對USB理解不是很深,USB的系統驅動編寫則更是天方

夜譚,因此將設備配置成HID類設備成為了首選。其最大的好處在于,LINUX/Windows系統中均自帶HID

設備驅動,免除了USB系統驅動的困擾,同時HID配置為高速設備與全速設備時,其每筆事務傳輸的最大

字節大小分別為64bytes、1024bytes,亦符合當前開發需求。

二、正文:

安裝及使用方法在"HIDAPI"文件夾中的"Readme"有了詳細說明,在此僅做個大致說明以及記錄在使

用該庫函數時所碰到的一些問題。

Windows:

在Windows中,其使用"VS"工具來編譯,HIDAPI以兩種情況存在在項目中:一種是,將“"hid.c"、 ? ?"hid.h"和自己的源碼一起編譯到項目中;另一種則是將其編譯成".dll",".lib",以動態鏈接庫的形式

存在于項目中。推薦第一種,第一種方法你就可以很方便跟"hidapi"源代碼。

在Windows中使用 ? ? ? ?"int hid_write(hid_device *device, const unsigned char *data, size_t length);"

這個函數時,一定要注意!寫入的數據大小一定要再加1bytes,首字節用來存放REPORT ID,并且寫入

的數據大小"length"只能固定為設備對應ReportID定義的OUT報告的大小!

舉個例子,若是USB設備只有一個Report ID,該Reprot ID對應的OUT Report大小配置為OUT_cnt

bytes。那么buf[0]應該保存Report ID,buf的大小應該設置為(OUT_cnt bytes +1bytes(report id)),

寫入的字節參數"length"無論多少,用"Bus hound"工具會發現,下傳的數據大小一律為Out_cnt bytes,

在下位機讀取到的USB數據大小通過串口返回,也可證實,下位機讀取到的數據大小也為Out_cnt bytes.

至于原因,該庫函數作者Alan也做出了一些回答,意思在Windows系統中系統會根據首字節的Report ID

來尋找正確的發送端口,若有興趣可以搜索作者在該github中Issues的問答。

同樣,在Windows中使用 ? ? ? ?"int hid_read(hid_device *device, unsigned char *data, size_t length);"

這個函數時,"length"的值一定要為下位機定義的IN Report大小。并且這個函數要和函數   "hid_set_nonblocking(...)"使用,設置為堵塞或者非堵塞。跟進"hid_read(..)"函數內,會發現其   最終調用的函數還是 ? ?"int hid_read_timeout(... int milliseconds)"

若是設置為堵塞模式,則參數"milliseconds"設置為"-1",設置為非堵塞模式,則參數"milliseconds"設置

為"0"。   ? ?其它的勿用多說,Readme和頭文件中已經寫的非常詳細。

補充一點,已證實"HIDAPI"非線程安全操作,即讀和寫一定要在一個線程內操作,而不能在兩個線程

內操作。2016-12-6   Linux:

在Linux中,其同Windows一致,亦是以兩種形式存在,且Linux系統對傳輸的字節數更加寬容,沒有

Windows那么嚴格,因此"HIDAPI"在Linux系統使用中沒有hid_wrte/hid_read在Windows出現的麻煩,寫入

低于設備設定字節限定大小的任意字節皆可,讀亦如此,不會遭遇讀寫失敗的境遇。

具體的編譯方法及使用方法亦在Readme和頭文件中已經寫的非常詳細,在此不再贅述。

三、下載及參考鏈接:

hidraw設備介紹:

https://www.kernel.org/doc/Documentation/hid/hidraw.txt

總結

以上是生活随笔為你收集整理的hid read c Linux,linux/windows hid的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。