Tôi đang tìm một cách mạnh mẽ để liệt kê các cổng nối tiếp (COM) có sẵn trên máy Windows. Có this post about using WMI, nhưng tôi muốn một cái gì đó ít .NET cụ thể - Tôi muốn có được danh sách các cổng trong một chương trình Python hoặc C++, mà không có .NET.Liệt kê các cổng nối tiếp (COM) trên Windows?
Tôi hiện biết của hai cách tiếp cận khác:
Đọc các thông tin trong khóa
HARDWARE\\DEVICEMAP\\SERIALCOMM
registry. Điều này trông giống như một lựa chọn tuyệt vời, nhưng có phải là mạnh mẽ? Tôi không thể tìm thấy một bảo đảm trực tuyến hoặc trong MSDN rằng tế bào đăng ký này thực sự luôn luôn giữ danh sách đầy đủ các cổng có sẵn.Cố gắng gọi
CreateFile
trênCOMN
bằng N số từ 1 đến thứ gì đó. Điều này là không đủ tốt, bởi vì một số cổng COM không được đặt tên COMN. Ví dụ, một số cổng COM ảo được tạo có tên là CSNA0, CSNB0, v.v., vì vậy tôi sẽ không dựa vào phương pháp này.
Bất kỳ phương pháp/ý tưởng/kinh nghiệm nào khác để chia sẻ?
Edit: bằng cách này, đây là một việc thực hiện Python đơn giản của việc đọc tên cổng từ registry:
import _winreg as winreg
import itertools
def enumerate_serial_ports():
""" Uses the Win32 registry to return a iterator of serial
(COM) ports existing on this computer.
"""
path = 'HARDWARE\\DEVICEMAP\\SERIALCOMM'
try:
key = winreg.OpenKey(winreg.HKEY_LOCAL_MACHINE, path)
except WindowsError:
raise IterationError
for i in itertools.count():
try:
val = winreg.EnumValue(key, i)
yield (str(val[1]), str(val[0]))
except EnvironmentError:
break
Tuyệt vời! Nó hoạt động rất tốt – luc
Có vẻ rất hữu ích để tìm cổng com - Tôi sẽ cố gắng và sử dụng nó để tìm cổng Arduino – SimpleSi