forked from djs/serialenum
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserialenum.py
52 lines (43 loc) · 1.28 KB
/
serialenum.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
from glob import glob
import os
import os.path
from serial import Serial
import sys
def enumerate():
ports = []
if sys.platform == 'win32':
# Iterate through registry because WMI does not show virtual serial ports
import _winreg
try:
key = _winreg.OpenKey(_winreg.HKEY_LOCAL_MACHINE, r'HARDWARE\DEVICEMAP\SERIALCOMM')
except WindowsError:
return []
i = 0
while True:
try:
ports.append(_winreg.EnumValue(key, i)[1])
i = i + 1
except WindowsError:
break
elif sys.platform == 'linux2':
if os.path.exists('/dev/serial/by-id'):
entries = os.listdir('/dev/serial/by-id')
dirs = [os.readlink(os.path.join('/dev/serial/by-id', x))
for x in entries]
ports.extend([os.path.normpath(os.path.join('/dev/serial/by-id', x))
for x in dirs])
for dev in glob('/dev/ttyS*'):
try:
port = Serial(dev)
except:
pass
else:
ports.append(dev)
else:
return []
return ports
def script():
for port in enumerate():
print port
if __name__ == "__main__":
script()