| OLD | NEW |
| (Empty) |
| 1 #! python | |
| 2 # | |
| 3 # Python Serial Port Extension for Win32, Linux, BSD, Jython | |
| 4 # see __init__.py | |
| 5 # | |
| 6 # This module implements a special URL handler that uses the port listing to | |
| 7 # find ports by searching the string descriptions. | |
| 8 # | |
| 9 # (C) 2011 Chris Liechti <cliechti@gmx.net> | |
| 10 # this is distributed under a free software license, see license.txt | |
| 11 # | |
| 12 # URL format: hwgrep://regexp | |
| 13 | |
| 14 import serial | |
| 15 import serial.tools.list_ports | |
| 16 | |
| 17 class Serial(serial.Serial): | |
| 18 """Just inherit the native Serial port implementation and patch the open fun
ction.""" | |
| 19 | |
| 20 def setPort(self, value): | |
| 21 """translate port name before storing it""" | |
| 22 if isinstance(value, basestring) and value.startswith('hwgrep://'): | |
| 23 serial.Serial.setPort(self, self.fromURL(value)) | |
| 24 else: | |
| 25 serial.Serial.setPort(self, value) | |
| 26 | |
| 27 def fromURL(self, url): | |
| 28 """extract host and port from an URL string""" | |
| 29 if url.lower().startswith("hwgrep://"): url = url[9:] | |
| 30 # use a for loop to get the 1st element from the generator | |
| 31 for port, desc, hwid in serial.tools.list_ports.grep(url): | |
| 32 return port | |
| 33 else: | |
| 34 raise serial.SerialException('no ports found matching regexp %r' % (
url,)) | |
| 35 | |
| 36 # override property | |
| 37 port = property(serial.Serial.getPort, setPort, doc="Port setting") | |
| 38 | |
| 39 # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | |
| 40 if __name__ == '__main__': | |
| 41 #~ s = Serial('hwgrep://ttyS0') | |
| 42 s = Serial(None) | |
| 43 s.port = 'hwgrep://ttyS0' | |
| 44 print s | |
| 45 | |
| OLD | NEW |