summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorChris Liechti <cliechti@gmx.net>2015-08-04 01:07:45 +0200
committerChris Liechti <cliechti@gmx.net>2015-08-04 01:07:45 +0200
commit4caf6a58575a4a7dc709bc8eb40793a1ec477a56 (patch)
tree7c919a941a3c0a53a6008abbf13796ac70dcf159 /examples
parent773991e5547133cd9aab4529247815047f59843a (diff)
downloadpyserial-git-4caf6a58575a4a7dc709bc8eb40793a1ec477a56.tar.gz
work on python 3 compatibility
Diffstat (limited to 'examples')
-rw-r--r--examples/port_publisher.py36
-rw-r--r--examples/rfc2217_server.py26
-rw-r--r--examples/setup-miniterm-py2exe.py11
-rw-r--r--examples/setup-rfc2217_server-py2exe.py8
-rw-r--r--examples/setup-wxTerminal-py2exe.py5
-rw-r--r--examples/tcp_serial_redirect.py25
-rw-r--r--examples/wxSerialConfigDialog.py37
-rw-r--r--examples/wxTerminal.py22
8 files changed, 78 insertions, 92 deletions
diff --git a/examples/port_publisher.py b/examples/port_publisher.py
index 91de063..393beb5 100644
--- a/examples/port_publisher.py
+++ b/examples/port_publisher.py
@@ -9,10 +9,12 @@ Multi-port serial<->TCP/IP forwarder.
does not influence serial port
- only one client per connection
"""
-import sys, os, time
-import traceback
-import socket
+import os
import select
+import socket
+import sys
+import time
+import traceback
import serial
import serial.rfc2217
@@ -108,7 +110,7 @@ class Forwarder(ZeroconfService):
try:
self.serial.open()
self.serial.setRTS(False)
- except Exception, msg:
+ except Exception as msg:
self.handle_serial_error(msg)
self.serial_settings_backup = self.serial.getSettingsDict()
@@ -127,7 +129,7 @@ class Forwarder(ZeroconfService):
try:
self.server_socket.bind( ('', self.network_port) )
self.server_socket.listen(1)
- except socket.error, msg:
+ except socket.error as msg:
self.handle_server_error()
#~ raise
if not options.quiet:
@@ -142,7 +144,7 @@ class Forwarder(ZeroconfService):
def close(self):
"""Close all resources and unpublish service"""
if not options.quiet:
- print "%s: closing..." % (self.device, )
+ print("%s: closing..." % (self.device, ))
self.alive = False
self.unpublish()
if self.server_socket: self.server_socket.close()
@@ -201,7 +203,7 @@ class Forwarder(ZeroconfService):
self.buffer_ser2net += data
else:
self.handle_serial_error()
- except Exception, msg:
+ except Exception as msg:
self.handle_serial_error(msg)
def handle_serial_write(self):
@@ -211,7 +213,7 @@ class Forwarder(ZeroconfService):
n = os.write(self.serial.fileno(), self.buffer_net2ser)
# and see how large that chunk was, remove that from buffer
self.buffer_net2ser = self.buffer_net2ser[n:]
- except Exception, msg:
+ except Exception as msg:
self.handle_serial_error(msg)
def handle_serial_error(self, error=None):
@@ -260,7 +262,7 @@ class Forwarder(ZeroconfService):
self.socket.setblocking(0)
self.socket.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
if not options.quiet:
- print '%s: Connected by %s:%s' % (self.device, addr[0], addr[1])
+ print('%s: Connected by %s:%s' % (self.device, addr[0], addr[1]))
self.serial.setRTS(True)
self.serial.setDTR(True)
self.rfc2217 = serial.rfc2217.PortManager(self.serial, self)
@@ -268,7 +270,7 @@ class Forwarder(ZeroconfService):
# reject connection if there is already one
connection.close()
if not options.quiet:
- print '%s: Rejecting connect from %s:%s' % (self.device, addr[0], addr[1])
+ print('%s: Rejecting connect from %s:%s' % (self.device, addr[0], addr[1]))
def handle_server_error(self):
"""Socket server fails"""
@@ -292,7 +294,7 @@ class Forwarder(ZeroconfService):
self.socket.close()
self.socket = None
if not options.quiet:
- print '%s: Disconnected' % self.device
+ print('%s: Disconnected' % self.device)
def test():
@@ -355,7 +357,7 @@ If running as daemon, write to syslog. Otherwise write to stdout.
if pid > 0:
# exit first parent
sys.exit(0)
- except OSError, e:
+ except OSError as e:
sys.stderr.write("fork #1 failed: %d (%s)\n" % (e.errno, e.strerror))
sys.exit(1)
@@ -373,7 +375,7 @@ If running as daemon, write to syslog. Otherwise write to stdout.
if options.pid_file is not None:
open(options.pid_file,'w').write("%d"%pid)
sys.exit(0)
- except OSError, e:
+ except OSError as e:
sys.stderr.write("fork #2 failed: %d (%s)\n" % (e.errno, e.strerror))
sys.exit(1)
@@ -416,7 +418,7 @@ If running as daemon, write to syslog. Otherwise write to stdout.
except KeyError:
pass
else:
- if not options.quiet: print "unpublish: %s" % (forwarder)
+ if not options.quiet: print("unpublish: %s" % (forwarder))
alive = True
next_check = 0
@@ -439,12 +441,12 @@ If running as daemon, write to syslog. Otherwise write to stdout.
7000+num,
on_close=unpublish
)
- if not options.quiet: print "publish: %s" % (published[device])
+ if not options.quiet: print("publish: %s" % (published[device]))
published[device].open()
else:
# or when it disappeared
if device in published:
- if not options.quiet: print "unpublish: %s" % (published[device])
+ if not options.quiet: print("unpublish: %s" % (published[device]))
published[device].close()
try:
del published[device]
@@ -464,7 +466,7 @@ If running as daemon, write to syslog. Otherwise write to stdout.
error_map.keys(),
5
)
- except select.error, err:
+ except select.error as err:
if err[0] != EINTR:
raise
# select_end = time.time()
diff --git a/examples/rfc2217_server.py b/examples/rfc2217_server.py
index 069900a..886925a 100644
--- a/examples/rfc2217_server.py
+++ b/examples/rfc2217_server.py
@@ -5,16 +5,16 @@
# using RFC 2217
-import sys
+import logging
import os
-import threading
-import time
import socket
+import sys
+import time
+import threading
import serial
import serial.rfc2217
-import logging
-class Redirector:
+class Redirector(object):
def __init__(self, serial_instance, socket, debug=None):
self.serial = serial_instance
self.socket = socket
@@ -59,12 +59,9 @@ class Redirector:
if data:
# escape outgoing data when needed (Telnet IAC (0xff) character)
data = serial.to_bytes(self.rfc2217.escape(data))
- self._write_lock.acquire()
- try:
+ with self._write_lock:
self.socket.sendall(data) # send it over TCP
- finally:
- self._write_lock.release()
- except socket.error, msg:
+ except socket.error as msg:
self.log.error('%s' % (msg,))
# probably got disconnected
break
@@ -73,11 +70,8 @@ class Redirector:
def write(self, data):
"""thread safe socket write with no data escaping. used to send telnet stuff"""
- self._write_lock.acquire()
- try:
+ with self._write_lock:
self.socket.sendall(data)
- finally:
- self._write_lock.release()
def writer(self):
"""loop forever and copy socket->serial"""
@@ -87,7 +81,7 @@ class Redirector:
if not data:
break
self.serial.write(serial.to_bytes(self.rfc2217.filter(data)))
- except socket.error, msg:
+ except socket.error as msg:
self.log.error('%s' % (msg,))
# probably got disconnected
break
@@ -198,7 +192,7 @@ it waits for the next connect.
ser.applySettingsDict(settings)
except KeyboardInterrupt:
break
- except socket.error, msg:
+ except socket.error as msg:
logging.error('%s' % (msg,))
logging.info('--- exit ---')
diff --git a/examples/setup-miniterm-py2exe.py b/examples/setup-miniterm-py2exe.py
index bb5120e..0df67ee 100644
--- a/examples/setup-miniterm-py2exe.py
+++ b/examples/setup-miniterm-py2exe.py
@@ -1,15 +1,18 @@
# setup script for py2exe to create the miniterm.exe
-# $Id: setup-miniterm-py2exe.py,v 1.1 2005-09-21 19:51:19 cliechti Exp $
from distutils.core import setup
-import glob, sys, py2exe, os
+import glob
+import os
+import sys
+import py2exe
sys.path.insert(0, '..')
-sys.argv.extend("py2exe --bundle 1".split())
-
import serial.tools.miniterm
+
+sys.argv.extend("py2exe --bundle 1".split())
+
setup(
name = 'miniterm',
zipfile = None,
diff --git a/examples/setup-rfc2217_server-py2exe.py b/examples/setup-rfc2217_server-py2exe.py
index 54c8dfa..4c98dd7 100644
--- a/examples/setup-rfc2217_server-py2exe.py
+++ b/examples/setup-rfc2217_server-py2exe.py
@@ -1,8 +1,10 @@
-# setup script for py2exe to create the miniterm.exe
-# $Id$
+# setup script for py2exe to create the rfc2217_server.exe
from distutils.core import setup
-import glob, sys, py2exe, os
+import glob
+import os
+import sys
+import py2exe
sys.path.insert(0, '..')
diff --git a/examples/setup-wxTerminal-py2exe.py b/examples/setup-wxTerminal-py2exe.py
index 21b9c94..2ecebb5 100644
--- a/examples/setup-wxTerminal-py2exe.py
+++ b/examples/setup-wxTerminal-py2exe.py
@@ -1,7 +1,8 @@
# This is a setup.py example script for the use with py2exe
from distutils.core import setup
+import os
+import sys
import py2exe
-import sys, os
#this script is only useful for py2exe so just run that distutils command.
#that allows to run it with a simple double click.
@@ -31,5 +32,5 @@ setup(
version = "0.1",
author = "Chris Liechti",
author_email = "cliechti@gmx.net",
- url = "http://pyserial.sf.net",
+ url = "https://pyserial.github.io/pyserial/",
)
diff --git a/examples/tcp_serial_redirect.py b/examples/tcp_serial_redirect.py
index 8900ca9..e821b74 100644
--- a/examples/tcp_serial_redirect.py
+++ b/examples/tcp_serial_redirect.py
@@ -12,13 +12,8 @@ import threading
import socket
import codecs
import serial
-try:
- True
-except NameError:
- True = 1
- False = 0
-class Redirector:
+class Redirector(object):
def __init__(self, serial_instance, socket, ser_newline=None, net_newline=None, spy=False):
self.serial = serial_instance
self.socket = socket
@@ -55,12 +50,9 @@ class Redirector:
# XXX fails for CR+LF in input when it is cut in half at the begin or end of the string
data = net_newline.join(data.split(ser_newline))
# escape outgoing data when needed (Telnet IAC (0xff) character)
- self._write_lock.acquire()
- try:
+ with self._write_lock:
self.socket.sendall(data) # send it over TCP
- finally:
- self._write_lock.release()
- except socket.error, msg:
+ except socket.error as msg:
sys.stderr.write('ERROR: %s\n' % msg)
# probably got disconnected
break
@@ -68,11 +60,8 @@ class Redirector:
def write(self, data):
"""thread safe socket write with no data escaping. used to send telnet stuff"""
- self._write_lock.acquire()
- try:
+ with self._write_lock:
self.socket.sendall(data)
- finally:
- self._write_lock.release()
def writer(self):
"""loop forever and copy socket->serial"""
@@ -90,7 +79,7 @@ class Redirector:
if self.spy:
sys.stdout.write(codecs.escape_encode(data)[0])
sys.stdout.flush()
- except socket.error, msg:
+ except socket.error as msg:
sys.stderr.write('ERROR: %s\n' % msg)
# probably got disconnected
break
@@ -287,7 +276,7 @@ it waits for the next connect.
try:
ser.open()
- except serial.SerialException, e:
+ except serial.SerialException as e:
sys.stderr.write("Could not open serial port %s: %s\n" % (ser.portstr, e))
sys.exit(1)
@@ -319,7 +308,7 @@ it waits for the next connect.
connection.close()
except KeyboardInterrupt:
break
- except socket.error, msg:
+ except socket.error as msg:
sys.stderr.write('ERROR: %s\n' % msg)
sys.stderr.write('\n--- exit ---\n')
diff --git a/examples/wxSerialConfigDialog.py b/examples/wxSerialConfigDialog.py
index b8f833b..6b1a1db 100644
--- a/examples/wxSerialConfigDialog.py
+++ b/examples/wxSerialConfigDialog.py
@@ -12,11 +12,6 @@ SHOW_FLOW = 1<<2
SHOW_TIMEOUT = 1<<3
SHOW_ALL = SHOW_BAUDRATE|SHOW_FORMAT|SHOW_FLOW|SHOW_TIMEOUT
-try:
- enumerate
-except NameError:
- def enumerate(sequence):
- return zip(range(len(sequence)), sequence)
class SerialConfigDialog(wx.Dialog):
"""Serial Port configuration dialog, to be used with pySerial 2.0+
@@ -28,7 +23,7 @@ class SerialConfigDialog(wx.Dialog):
found in this module (not the class)."""
def __init__(self, *args, **kwds):
- #grab the serial keyword and remove it from the dict
+ # grab the serial keyword and remove it from the dict
self.serial = kwds['serial']
del kwds['serial']
self.show = SHOW_ALL
@@ -74,7 +69,7 @@ class SerialConfigDialog(wx.Dialog):
preferred_index = n
self.combo_box_port.SetSelection(preferred_index)
if self.show & SHOW_BAUDRATE:
- #fill in baud rates and select current setting
+ # fill in baud rates and select current setting
self.choice_baudrate.Clear()
for n, baudrate in enumerate(self.serial.BAUDRATES):
self.choice_baudrate.Append(str(baudrate))
@@ -82,21 +77,21 @@ class SerialConfigDialog(wx.Dialog):
index = n
self.choice_baudrate.SetSelection(index)
if self.show & SHOW_FORMAT:
- #fill in data bits and select current setting
+ # fill in data bits and select current setting
self.choice_databits.Clear()
for n, bytesize in enumerate(self.serial.BYTESIZES):
self.choice_databits.Append(str(bytesize))
if self.serial.bytesize == bytesize:
index = n
self.choice_databits.SetSelection(index)
- #fill in stop bits and select current setting
+ # fill in stop bits and select current setting
self.choice_stopbits.Clear()
for n, stopbits in enumerate(self.serial.STOPBITS):
self.choice_stopbits.Append(str(stopbits))
if self.serial.stopbits == stopbits:
index = n
self.choice_stopbits.SetSelection(index)
- #fill in parities and select current setting
+ # fill in parities and select current setting
self.choice_parity.Clear()
for n, parity in enumerate(self.serial.PARITIES):
self.choice_parity.Append(str(serial.PARITY_NAMES[parity]))
@@ -104,7 +99,7 @@ class SerialConfigDialog(wx.Dialog):
index = n
self.choice_parity.SetSelection(index)
if self.show & SHOW_TIMEOUT:
- #set the timeout mode and value
+ # set the timeout mode and value
if self.serial.timeout is None:
self.checkbox_timeout.SetValue(False)
self.text_ctrl_timeout.Enable(False)
@@ -113,11 +108,11 @@ class SerialConfigDialog(wx.Dialog):
self.text_ctrl_timeout.Enable(True)
self.text_ctrl_timeout.SetValue(str(self.serial.timeout))
if self.show & SHOW_FLOW:
- #set the rtscts mode
+ # set the rtscts mode
self.checkbox_rtscts.SetValue(self.serial.rtscts)
- #set the rtscts mode
+ # set the rtscts mode
self.checkbox_xonxoff.SetValue(self.serial.xonxoff)
- #attach the event handlers
+ # attach the event handlers
self.__attach_events()
def __set_properties(self):
@@ -231,23 +226,23 @@ class MyApp(wx.App):
wx.InitAllImageHandlers()
ser = serial.Serial()
- print ser
- #loop until cancel is pressed, old values are used as start for the next run
- #show the different views, one after the other
- #value are kept.
+ print(ser)
+ # loop until cancel is pressed, old values are used as start for the next run
+ # show the different views, one after the other
+ # value are kept.
for flags in (SHOW_BAUDRATE, SHOW_FLOW, SHOW_FORMAT, SHOW_TIMEOUT, SHOW_ALL):
dialog_serial_cfg = SerialConfigDialog(None, -1, "", serial=ser, show=flags)
self.SetTopWindow(dialog_serial_cfg)
result = dialog_serial_cfg.ShowModal()
- print ser
+ print(ser)
if result != wx.ID_OK:
break
- #the user can play around with the values, CANCEL aborts the loop
+ # the user can play around with the values, CANCEL aborts the loop
while 1:
dialog_serial_cfg = SerialConfigDialog(None, -1, "", serial=ser)
self.SetTopWindow(dialog_serial_cfg)
result = dialog_serial_cfg.ShowModal()
- print ser
+ print(ser)
if result != wx.ID_OK:
break
return 0
diff --git a/examples/wxTerminal.py b/examples/wxTerminal.py
index 646c272..5ba8ba7 100644
--- a/examples/wxTerminal.py
+++ b/examples/wxTerminal.py
@@ -48,7 +48,7 @@ class TerminalSetup:
class TerminalSettingsDialog(wx.Dialog):
"""Simple dialog with common terminal settings like echo, newline mode."""
-
+
def __init__(self, *args, **kwds):
self.settings = kwds['settings']
del kwds['settings']
@@ -98,14 +98,14 @@ class TerminalSettingsDialog(wx.Dialog):
def __attach_events(self):
self.Bind(wx.EVT_BUTTON, self.OnOK, id = self.button_ok.GetId())
self.Bind(wx.EVT_BUTTON, self.OnCancel, id = self.button_cancel.GetId())
-
+
def OnOK(self, events):
"""Update data wil new values and close dialog."""
self.settings.echo = self.checkbox_echo.GetValue()
self.settings.unprintable = self.checkbox_unprintable.GetValue()
self.settings.newline = self.radio_box_newline.GetSelection()
self.EndModal(wx.ID_OK)
-
+
def OnCancel(self, events):
"""Do not update data but close dialog."""
self.EndModal(wx.ID_CANCEL)
@@ -115,18 +115,18 @@ class TerminalSettingsDialog(wx.Dialog):
class TerminalFrame(wx.Frame):
"""Simple terminal program for wxPython"""
-
+
def __init__(self, *args, **kwds):
self.serial = serial.Serial()
self.serial.timeout = 0.5 #make sure that the alive event can be checked from time to time
self.settings = TerminalSetup() #placeholder for the settings
self.thread = None
- self.alive = threading.Event()
+ self.alive = threading.Event()
# begin wxGlade: TerminalFrame.__init__
kwds["style"] = wx.DEFAULT_FRAME_STYLE
wx.Frame.__init__(self, *args, **kwds)
self.text_ctrl_output = wx.TextCtrl(self, -1, "", style=wx.TE_MULTILINE|wx.TE_READONLY)
-
+
# Menu Bar
self.frame_terminal_menubar = wx.MenuBar()
self.SetMenuBar(self.frame_terminal_menubar)
@@ -162,7 +162,7 @@ class TerminalFrame(wx.Frame):
self.alive.clear() #clear alive event for thread
self.thread.join() #wait until thread has finished
self.thread = None
-
+
def __set_properties(self):
# begin wxGlade: TerminalFrame.__set_properties
self.SetTitle("Serial Terminal")
@@ -237,7 +237,7 @@ class TerminalFrame(wx.Frame):
if result == wx.ID_OK or event is not None:
try:
self.serial.open()
- except serial.SerialException, e:
+ except serial.SerialException as e:
dlg = wx.MessageDialog(None, str(e), "Serial Port Error", wx.OK | wx.ICON_ERROR)
dlg.ShowModal()
dlg.Destroy()
@@ -265,7 +265,7 @@ class TerminalFrame(wx.Frame):
dialog = TerminalSettingsDialog(None, -1, "", settings=self.settings)
result = dialog.ShowModal()
dialog.Destroy()
-
+
def OnKey(self, event):
"""Key event handler. if the key is in the ASCII range, write it to the serial port.
Newline handling and local echo is also done here."""
@@ -286,7 +286,7 @@ class TerminalFrame(wx.Frame):
self.text_ctrl_output.WriteText(char)
self.serial.write(char) #send the charcater
else:
- print "Extra Key:", code
+ print("Extra Key:", code)
def OnSerialRead(self, event):
"""Handle input from the serial port."""
@@ -314,7 +314,7 @@ class TerminalFrame(wx.Frame):
event = SerialRxEvent(self.GetId(), text)
self.GetEventHandler().AddPendingEvent(event)
#~ self.OnSerialRead(text) #output text in window
-
+
# end of class TerminalFrame