欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 【原創(chuàng)】計(jì)算機(jī)中USB串口列表、友好名稱(chēng)及USB端點(diǎn)號(hào)的查找方法 [打印本頁(yè)]

作者: xiaos    時(shí)間: 2015-4-4 01:40
標(biāo)題: 【原創(chuàng)】計(jì)算機(jī)中USB串口列表、友好名稱(chēng)及USB端點(diǎn)號(hào)的查找方法
一、獲得計(jì)算機(jī)的串口列表,一般用兩種方法:

1. 循環(huán)法 1-256, 用Windows API一個(gè)個(gè)打開(kāi),返回不存在信息的刪掉,其它保留。
   這個(gè)方法很笨,但確定都是正確的。

2. 查詢(xún)注冊(cè)表,得到串口列表。
   這個(gè)方法很快,但有時(shí)不正確(可能會(huì)多,只多不少)。

   例如超級(jí)終端打開(kāi),占用了一個(gè)USB串口,你不關(guān)閉超級(jí)終端,但把USB串口強(qiáng)行拔掉。
   這時(shí)用查詢(xún)注冊(cè)表的方法,得到的串口列表,仍然包括已經(jīng)不存在的USB串口。

   修正的方法也簡(jiǎn)單,再次使用windows API依次打開(kāi)列表中的串口,發(fā)現(xiàn)不存在,更新下列表。


二、STM32組成的USB多路串口中設(shè)備端點(diǎn)號(hào)的搜索

   現(xiàn)在我們要掌握USB轉(zhuǎn)多路串口的端點(diǎn)號(hào),以便清楚地了解當(dāng)前使用的STM32,是用哪個(gè)串口和
   外面的設(shè)備通訊的。這里我們安排的USB端點(diǎn)號(hào)和物理串口的對(duì)應(yīng)關(guān)系如下:
   MI_00 <--> USART1
   MI_02 <--> USART2
   MI_04 <--> USART3

   STM32的多路串口對(duì)應(yīng)的串口號(hào)是變化的,但3個(gè)端點(diǎn)號(hào)不會(huì)變。我們想要在上位機(jī)軟件中找到諸如
   MI_00此類(lèi)的信息,就要另外想辦法。

   想要得到串口的具體信息,是比較麻煩的,以往程序員都采用根據(jù)設(shè)備GUID的特征進(jìn)行查詢(xún),
   我發(fā)現(xiàn)用這個(gè)方法特別不靠譜,例如上面的串口列表,就發(fā)現(xiàn)了錯(cuò)誤。

   端點(diǎn)信息的查詢(xún)也是個(gè)麻煩事。參考Windows API相關(guān)的書(shū),找到枚舉設(shè)備的函數(shù),
   枚舉所有存在的設(shè)備,串口相關(guān)的信息如下:

(標(biāo)準(zhǔn)端口類(lèi)型)
通信端口 (COM1)
通信端口 (COM1)
\Device\00000083

ELTIMA Software
ELTIMA Virtual Serial Port (COM2->COM3)
Eltima Virtual Serial Bus
\Device\00000092

ELTIMA Software
ELTIMA Virtual Serial Port (COM3->COM2)
Eltima Virtual Serial Bus
\Device\00000093

STMicroelectronics Virtual COM Port
USB\VID_0483&PID_5740&REV_0200&MI_00
USB\Class_02&SubClass_02&Prot_01
USB\Class_02&SubClass_02&Prot_01

STMicroelectronics.
STMicroelectronics Virtual COM Port (COM70)
0000.001d.0000.001.005.000.000.000.000
\Device\0000009c


  我們發(fā)現(xiàn),在搜索到" STMicroelectronics Virtual COM Port "字符串時(shí),下一行的信息是
   "USB\VID_0483&PID_5740&REV_0200&MI_00",可以根據(jù)這個(gè)信息,打開(kāi)注冊(cè)表,枚舉這個(gè)
  注冊(cè)表分支下鍵值的名稱(chēng),友好名稱(chēng)的鍵值字符串是"STMicroelectronics Virtual COM Port (COM70)",
  然后我們分析下這個(gè)串口友好名稱(chēng)里的串口號(hào),把這個(gè)串口號(hào)和實(shí)時(shí)串口列表中的號(hào)碼匹配,如果一致,
  就可以確認(rèn)MI_00是這個(gè)串口的端點(diǎn)。到此,任務(wù)完畢。

  如果只是搜索到" STMicroelectronics Virtual COM Port (COM70) "字符串,則不能確認(rèn)MI_00就一定
  是它的端點(diǎn)號(hào),因?yàn)槠渌黆SB設(shè)備也有可能使用MI_00,這里只能是根據(jù)MI_00信息打開(kāi)注冊(cè)表,
  匹配到友好名稱(chēng)及端口號(hào),才可以確認(rèn)MI_00就是該USB串口實(shí)際所使用的端點(diǎn)。

  這個(gè)功能會(huì)在以后新版本的USB Serial Tools軟件中提供。

  備注: USB Serial Tools 自2012年啟動(dòng)開(kāi)發(fā),迄今為止,一直在成長(zhǎng)。










歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1