如題,我連接了兩個相同的板子,芯片是CH549,設置成USB HID設備,由于是相同的PID和VID,所以,我的上位機沒有辦法區(qū)分是哪個板,嘗試讀芯片的序列號,但這個芯片序列號為“00000000”,請問有什么辦法嗎?
看到芯片例程里有設置產(chǎn)品信息的地方,用另一個USB工具則可以通個這個產(chǎn)品信息來找到設備,但不知這個是怎樣實現(xiàn)的
如題,我連接了兩個相同的板子,芯片是CH549,設置成USB HID設備,由于是相同的PID和VID,所以,我的上位機沒有辦法區(qū)分是哪個板,嘗試讀芯片的序列號,但這個芯片序列號為“00000000”,請問有什么辦法嗎?
看到芯片例程里有設置產(chǎn)品信息的地方,用另一個USB工具則可以通個這個產(chǎn)品信息來找到設備,但不知這個是怎樣實現(xiàn)的
通常廠商具備自己的VID,PID可以自行定義。所以PID、VID當然可以進行修改(不沖突的情況下),用來區(qū)分不同設備(不過通常沒必要)。
實際上,我們開發(fā)USB設備,希望來傳輸一些自定義數(shù)據(jù),為了合理,多半還會加上一些簡單的命令,完全可以通過數(shù)據(jù)通道上傳一些特定數(shù)據(jù),用來指示“序列號”。
我是想在發(fā)命令之前就需要確定是和哪個設備通信的,所以在命令中加上特定數(shù)據(jù)應該行不通,還有其它的方法嗎?謝謝~
參考hidapi庫,獲取hid_device_info結構體,這部分不難從網(wǎng)絡中獲取到信息。
我現(xiàn)在用的HID庫是可以獲取芯片的序列號(STM32的芯片廠家有寫唯一的序列號,可以通過這個來區(qū)分),但沁恒的芯片獲取的序列號是"00000000",應該是出廠時沒有寫入序列號,想通過自定義的Product Info信息來區(qū)分,但是還沒有找到可以獲取這個信息的庫,不知有沒有大神用過?
你描述的序列必然不可能憑空產(chǎn)生,是通過數(shù)據(jù)交互獲取,可以對現(xiàn)有產(chǎn)品USB抓包,分析是通過什么傳輸實現(xiàn)的。
另外的USB API庫通常都具備獲取USB設備字符串的能力,其中廠商信息、設備序列號信息都是可以直接獲取的。
設備描述符中包含以下信息,重點byte14、15、16:
具體實現(xiàn)可以自行研究字符串描述符的實現(xiàn)。
好的,多謝,我再研究研究