2011-12-12 139 views
0

我想聯繫一個USB條碼掃描器作爲串行端口,使用他的虛擬COM端口名稱和串行端口類。c#與一個USB端口通信

我試圖這樣做的原因是爲了避免使用掃描儀作爲鍵盤楔子,因爲即使在隱藏窗體時我需要掃描的可能性。

問題是,當我連接條碼掃描器到USB端口,並運行「GetPortNames」函數時,我得到一個空列表。任何建議爲什麼?謝謝

+0

您正在使用什麼操作系統?你已經檢查過操作系統,看看掃描儀是否已經在com端口註冊後,你已經插入? – ChrisBD

回答

1

通常,許多USB條形碼掃描儀只會顯示爲虛擬鍵盤設備 - 而不是虛擬COM端口。這將解釋爲什麼它沒有出現。

您的掃描儀是否支持某種串行仿真模式?您可能需要對其進行配置或安裝不同的驅動程序來啓用此功能。它是否顯示爲設備管理器中的串行端口? (查看端口樹下)

順便說一句:

看看這個問題,如果您發現「鍵盤模式」是支持的只有一個: Reading a barcode using a USB barcode scanner along with ignoring keyboard data input while scanner product id and vendor id are not known

這個問題是指這篇文章提供了大量有關鍵盤鉤子和過濾掃描條形碼的良好信息: http://nicholas.piasecki.name/blog/2009/02/distinguishing-barcode-scanners-from-the-keyboard-in-winforms/

+0

我沒有在指南中找到任何對串行仿真模式的引用,所以我認爲它不存在,但我確實發現有關鍵盤的文章很有趣,但我覺得它相當複雜。你可能會向我發送我需要的原始代碼來執行任何操作?提前致謝 –

+0

博客頁面有一個鏈接,用於下載示例應用程序(附帶源代碼)。我會看看那個,並從那裏開始 - 這應該足以開始。 – Lummo

0

我不能保證它可以與您的特定設備一起工作,但我看過一次解決類似問題的代碼。解決方案是在註冊表中查找端口名稱。

它的代碼可以在開源項目ez430chronosnet中找到;一個.NET庫,可通過USB加密狗訪問TI的EZ430 Chronos手錶。

您需要查看在註冊表中尋找名稱的PortName.cs file(它至少指向您右側的按鍵)以及用SerialPort進行實際端口打開的Chronos.cs file