2010-08-24 61 views
4

希望你能幫助我解決這個問題。 我有一個串口設備,這個設備然後會連接到一個USB串口轉換器,然後轉換器將連接到我的電腦的USB端口。系統會將另一個COM端口添加到設備管理器。 我的問題是,我怎麼可能映射COM端口號到C#中的轉換器?通過執行SerialPort.GetPortNames(),我可以成功枚舉系統中可用的COM端口,但不確定此轉換器具有哪個COM端口號。獲取有關USB串行轉換器的信息

感謝 AR

+1

如果這些設備中的兩個連接,系統應該如何運行? – 2010-08-24 12:14:43

+1

@Rowland Shaw:USB設備使用序列號來區分相同的硬件。 – leppie 2010-08-24 12:15:54

回答

3

儘管它需要設備驅動程序進行合作,但通常可以從WMI查詢中獲得一些體面的信息。大多數做afaik。在Win32_SerialPort類上運行查詢。您可以使用WMI Code Creator tool來嘗試查詢並自動生成您需要的C#代碼。

不要指望能夠自動選擇設備。你需要一個配置選項來允許用戶選擇端口。您可以顯示您從查詢中獲得的信息,以幫助她選擇正確的信息。或者讓她拔下設備並重新插入,添加的COM端口應該是正確的。

+0

謝謝,那正是我所做的。一個簡單的工具使用。 – user426118 2010-08-26 08:07:42

0

你將不得不在註冊表中的某個地方看這件事。

我只能假設這是一個FTDI芯片。如果是這樣,您可以通過使用其驅動程序附帶的公共API獲取信息。

如果沒有其他答案,我將在家中檢查晚些時候,因爲我的JTAG調試器具有相同的芯片。

更新:

這裏是我的設備分配的COM端口的註冊表項(PortName下)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_0483&PID_5740\498C54823932\Device Parameters 

我想你可以枚舉通與usbser驅動程序的USB設備。

0

當我遇到同樣的問題(RFID閱讀器)時,我檢查了每個端口是否有任何數據。 可能它會在COM4:COM9中出現。 我知道這不是最好的解決方案,但我用它在移動設備上,我確信我的COM連接...

也許在您的驅動程序的* .ini文件中有一些關於COM編號的信息。

+1

Windows分配一個未使用的COM端口,它與.inf文件無關。 – leppie 2010-08-24 12:39:45

0

如果您爲USB < - >串行轉換使用基於FTDI的解決方案,則可以使用FTDI網站提供的FT_PROG實用程序將自定義VID:PID對分配給轉換器,然後您可以查詢以確定哪個適配器分配給哪個虛擬端口。

或者,你可以使用FTDIChip-ID這是每個芯片固有的,在這其中包括代碼示例細節都設在這裏:http://ftdichip.com/Support/SoftwareExamples/FTDIChip-ID.htm

1

我們解決了針對不同應用此不同的方式。我們對一個實例使用了顯式配置,在這個實例中我們只有一個特定類型的設備,但是不清楚在系統配置之前它將分配哪個COM端口。在另一種情況下,我們有一根USB電纜通過一組轉換器插入集線器,因此我們探測了所有可以成功打開的COM端口以查找感興趣的設備。

在Windows環境中使用USB /串口轉換器時會出現一些警告 - 如果您的設備類似GPS設備,每當它打開電源時都會發出數據,Windows可能會在啓動過程中將其檢測爲舊串行鼠標。另外,插入不同的USB端口可能會咀嚼額外的COM端口號(以及破壞您所做的任何顯式配置)。