summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorcliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a>2009-08-11 23:04:30 +0000
committercliechti <cliechti@f19166aa-fa4f-0410-85c2-fa1106f25c8a>2009-08-11 23:04:30 +0000
commit05d8f4f2ff1256aeb45dffe9c8180429b9d084da (patch)
treeda0e2b430683e635d7ff98bf737942dd8cdb6b22 /examples
parentb0a6bd8d44fecfbf4103f127b14c8872ea8f10bc (diff)
downloadpyserial-05d8f4f2ff1256aeb45dffe9c8180429b9d084da.tar.gz
use logging module instead of writes to stderr
git-svn-id: http://svn.code.sf.net/p/pyserial/code/trunk/pyserial@338 f19166aa-fa4f-0410-85c2-fa1106f25c8a
Diffstat (limited to 'examples')
-rw-r--r--examples/rfc2217_server.py54
1 files changed, 42 insertions, 12 deletions
diff --git a/examples/rfc2217_server.py b/examples/rfc2217_server.py
index 0faee95..d5ea771 100644
--- a/examples/rfc2217_server.py
+++ b/examples/rfc2217_server.py
@@ -12,18 +12,26 @@ import time
import socket
import serial
import serial.rfc2217
+import logging
class Redirector:
- def __init__(self, serial_instance, socket):
+ def __init__(self, serial_instance, socket, debug=None):
self.serial = serial_instance
self.socket = socket
self._write_lock = threading.Lock()
- self.rfc2217 = serial.rfc2217.PortManager(self.serial, self, debug_output=False)
+ self.rfc2217 = serial.rfc2217.PortManager(
+ self.serial,
+ self,
+ debug_output = (debug and logging.getLogger('rfc2217.server'))
+ )
+ self.log = logging.getLogger('redirector')
def statusline_poller(self):
+ self.log.debug('status line poll thread started')
while self.alive:
time.sleep(1)
self.rfc2217.check_modem_lines()
+ self.log.debug('status line poll thread terminated')
def shortcut(self):
"""connect the serial port to the TCP port by copying everything
@@ -41,6 +49,7 @@ class Redirector:
def reader(self):
"""loop forever and copy serial->socket"""
+ self.log.debug('reader thread started')
while self.alive:
try:
data = self.serial.read(1) # read one, blocking
@@ -56,10 +65,11 @@ class Redirector:
finally:
self._write_lock.release()
except socket.error, msg:
- sys.stderr.write('ERROR: %s\n' % msg)
+ self.log.error('%s' % (msg,))
# probably got disconnected
break
self.alive = False
+ self.log.debug('reader thread terminated')
def write(self, data):
"""thread safe socket write with no data escaping. used to send telnet stuff"""
@@ -78,13 +88,14 @@ class Redirector:
break
self.serial.write(serial.to_bytes(self.rfc2217.filter(data)))
except socket.error, msg:
- sys.stderr.write('ERROR: %s\n' % msg)
+ self.log.error('%s' % (msg,))
# probably got disconnected
break
self.stop()
def stop(self):
"""Stop copying"""
+ self.log.debug('stopping')
if self.alive:
self.alive = False
self.thread_read.join()
@@ -113,25 +124,43 @@ it waits for the next connect.
default = 2217
)
+ parser.add_option("-v", "--verbose",
+ dest = "verbosity",
+ action = "count",
+ help = "print more diagnostic messages (option can be given multiple times)",
+ default = 0
+ )
+
(options, args) = parser.parse_args()
if len(args) != 1:
parser.error('serial port name required as argument')
+ if options.verbosity > 3:
+ options.verbosity = 3
+ level = (
+ logging.WARNING,
+ logging.INFO,
+ logging.DEBUG,
+ logging.NOTSET,
+ )[options.verbosity]
+ logging.basicConfig(level=logging.INFO)
+ logging.getLogger('rfc2217').setLevel(level)
+
# connect to serial port
ser = serial.Serial()
ser.port = args[0]
ser.timeout = 3 # required so that the reader thread can exit
- sys.stderr.write("--- RFC 2217 TCP/IP to Serial redirector --- type Ctrl-C / BREAK to quit\n")
+ logging.info("RFC 2217 TCP/IP to Serial redirector - type Ctrl-C / BREAK to quit")
try:
ser.open()
except serial.SerialException, e:
- sys.stderr.write("Could not open serial port %s: %s\n" % (ser.portstr, e))
+ logging.error("Could not open serial port %s: %s" % (ser.portstr, e))
sys.exit(1)
- sys.stderr.write("--- Serving serial port: %s\n" % (ser.portstr,))
+ logging.info("Serving serial port: %s" % (ser.portstr,))
settings = ser.getSettingsDict()
# reset contol line as no _remote_ "terminal" has been connected yet
ser.setDTR(False)
@@ -141,11 +170,11 @@ it waits for the next connect.
srv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
srv.bind( ('', options.local_port) )
srv.listen(1)
- sys.stderr.write("--- TCP/IP port: %s\n" % (options.local_port,))
+ logging.info("TCP/IP port: %s" % (options.local_port,))
while True:
try:
connection, addr = srv.accept()
- sys.stderr.write('Connected by %s:%s \n' % (addr[0], addr[1]))
+ logging.info('Connected by %s:%s' % (addr[0], addr[1]))
connection.setsockopt( socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
ser.setRTS(True)
ser.setDTR(True)
@@ -153,11 +182,12 @@ it waits for the next connect.
r = Redirector(
ser,
connection,
+ options.verbosity > 0
)
try:
r.shortcut()
finally:
- sys.stderr.write('Disconnected\n')
+ logging.info('Disconnected')
r.stop()
connection.close()
ser.setDTR(False)
@@ -168,6 +198,6 @@ it waits for the next connect.
except KeyboardInterrupt:
break
except socket.error, msg:
- sys.stderr.write('ERROR: %s\n' % msg)
+ logging.error('%s' % (msg,))
- sys.stderr.write('\n--- exit ---\n')
+ logging.info('--- exit ---')