我在寫一個通過向USB端口發送字節進行通信的應用程序。我想讓用戶選擇端口並執行此操作,我使用SerialPort.GetPortNames()
。不幸的是,它返回一個空數組。該方法應該讀取註冊表中的數據(HKEY_LOCAL_MACHINE \ HARDWARE \ DEVICEMAP \ SERIALCOMM),但是SERIALCOMM目錄缺失。當我在Linux上運行該程序時,它會按預期列出我的四個USB端口。如何修復註冊表/以不同方式發現端口?在C#中發現串行端口
2
A
回答
1
SerialPort.GetPortNames()
是發現串口的正確方法。但是,如果您使用Windows 7,我認爲這可能是該方法列出的註冊表項權限問題。我在Microsoft.com找到了一篇描述這個問題的文章。
+0
我的確在使用Windows 7。但是當我以管理員身份打開註冊表時,我仍然看不到該目錄。 – 2011-12-24 12:10:38
+0
此外,該解決方案創建目錄爲空。 – 2011-12-24 12:34:53
1
SerialPort.GetPortNames()
返回安裝在機器上的COM端口列表,而不是USB端口。我不認爲Windows會爲您提供USB端口列表,只有USB設備可用。
儘管名稱爲「通用串行總線」,但它們不是「串行端口」的常規含義。
1
您可以使用管理對象來查詢可用的COM端口。有趣的表是:
- MSSerial_PortName根\ WMI
- MSWmi_PnPInstanceNames根\ WMI
- Win32_PnPEntity根\ CIMV2
您可以在WMI Code Creator探索這些命名空間,並生成的VBScript/VB/C#代碼。
相關問題
- 1. C#串行端口通信
- 2. C++串行端口問題
- 3. C#串行端口超時
- 4. 發送和接收通過串行端口.txt文件在c#
- 5. C#端口轉發
- 6. 寫串行端口在Linux
- 7. 串行端口不發送空值
- 8. 發送,並通過串行端口
- 9. 串行端口DataReceived多次觸發
- 10. Arduino和C#串行端口「崩潰」
- 11. C#串行端口的符號
- 12. 寫入串行端口(C++/Windows)
- 13. C#只讀串行端口數據來
- 14. C#串行端口通信問題
- 15. C#串行端口DATA讀掛問題
- 16. Visual Studio - C# - 串行端口 - Mac
- 17. 串行端口投幣編程C#
- 18. python串行端口
- 19. Ruby串行端口
- 20. 使用定時器將數據發送到串行端口C#
- 21. 在Perl中寫入串行端口
- 22. 在Linux中的串行端口路由
- 23. 串行端口DataReceived事件只能在Compact Framework中觸發
- 24. 在C#中讀取串行端口引腳
- 25. 在c#中的串行端口的循環緩衝區#
- 26. 在C中訪問USB或串行端口#
- 27. 在Visual C++中寫入串行(Com)端口
- 28. 確定是否存在串行端口,Linux C/C++
- 29. 在Windows中使用C++進行UPnP端口轉發
- 30. c#端口轉發示例
簡單的解釋是你的機器根本沒有任何串口。並非所有USB設備驅動程序都模擬一個串行端口。或者你可能有一個驅動程序安裝不正確的設備。您可以使用控制面板+設備管理器仔細檢查。詢問您在superuser.com使用的特定設備的問題。 – 2011-12-24 14:57:31