From afe75a328ace52b9993d418d3ff0b9e70e4c8afe Mon Sep 17 00:00:00 2001 From: Andrew R Antonitis Date: Tue, 24 Oct 2017 11:10:43 -0400 Subject: [PATCH] Fixed #11 by changing how PlotWindow methods are overridden. Added documentation for ARCOS SAY command. The send_command method of the ARCOS Client now accepts bytes objects as well as strings. --- dist/Soar-1.3.5.tar.gz | Bin 0 -> 58194 bytes docs/source/conf.py | 4 ++-- soar/__init__.py | 4 ++-- soar/client.py | 14 +++++++++----- soar/gui/plot_window.py | 7 +++++-- soar/robot/arcos.py | 10 ++++++---- 6 files changed, 24 insertions(+), 15 deletions(-) create mode 100644 dist/Soar-1.3.5.tar.gz diff --git a/dist/Soar-1.3.5.tar.gz b/dist/Soar-1.3.5.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..d28b04ec08fdde4116c8005c3aeaf0e07a098226 GIT binary patch literal 58194 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�oU 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 z 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

>LgDF-r)8VT2VM z2e;vXc-|N&>xMDNm?&n4JA%f|JY)^MCTN0zzAln33>SRU=?e9yU3J<%?#gkqS5A@E z?i)>TpCsq=bX|&?P%6o(@?wR(BF|~z^P6-uq|D@kWhz0ht!)Tyd!+!bNXH73n&q}h ze0O(O9*n1yP>JQra4;EqF!9TvvFMaDQh1)`3^)s45kKg>Gtz6GoI{+KCch_U?bF*g zxyxfAXh+3ZHxVw+GA>7{Py!ULnq&D%5_$QDob{nSKHpKIL@IFN%peroQ{WDc4@ovthzgyN{>>U@Awss29T3l zWnmSigufKQv`z?OSCV@w)_ zfdy2w`lww>2q33`<2$!2n;(&$5{{(;lRfQj_9k|k_LOhMq>d-Y0$jb+{+;q5VwAgp z-Q8&mL+rbB88F3y8r|TmbbwO*F-|Z!xIGo6{@qLL& zI}R1JhF-1>hMX0VsIui+C8}3eUJZ92{X>g;j=$WJ$wzJ@e7PWCgOs|s*8r^=D`~XDy#{QWt%}mOHfdc*Vm=}(=na>(c>SCX z!yp$^jD<<>6j85>(~D!VKSA>+tflb(QS(xq^w8@;9QDR9V20uhb*qkYX%V+IvBtTt zn@X)a?^gbw{dVLXH$R^)S^igRJ3CdB{~v2R+prW6{#UJ5SMq-u;cG7qaHf0zWGP!0 z)$$goW5|X?Xp{9E28nYq9f6|%KpfqRk-N^9Xw>s2h_F3tleJGmwVv}elP^4ywskQp zZJiT^zVV!eZI%}3-U0Jac(6f%2$#*@ny0@v?HG0O1W>BrfBnbYz^RqNvjJ4Q&^H27 z?P|>nsM^(BB(Q4N?bQHl?n`ERn1EON%^Lx*xmvsokj*9kGXUDm{Sa>o)D|{(iNLL4 z!d?o1t6jd93gj9Bx>o_Zh2Ltq0B>eszBiz^u>Y0|{Mv4pO9FuPNwc2~2rm2_O9zJY z%f(`W;#~e2;8;D(*a2r^z7>#Mq<9%%IrsJ_1DcELw`AbCxDr1N5S^=@0jAXxgN9~Q zv$q4P3)Hh$0oTQC)IfHwotd`&8Njx_{B3T4yST|&z`L;Bv&~;50A4f|9tXtr5eNf} z>qI{U$cqHm9DuoK)Rj7TLJ1b8{35e>vq2L1MFFAzzcwOJK=Kx zcRT*8fpr$1OS{=d2TVP_Wq+1Xm*|4Rv1y}^JOny;NS82CJs8iM|jXHz#a5F f3ahXRtFQ{IunMcN3ahXR??3zxlFo-D0O$h%BDpwL literal 0 HcmV?d00001 diff --git a/docs/source/conf.py b/docs/source/conf.py index 03f41fa..5123ac3 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -67,9 +67,9 @@ def __getattr__(cls, name): # built documents. # # The short X.Y version. -version = '1.3.4' +version = '1.3.5' # The full version, including alpha/beta/rc tags. -release = '1.3.4' +release = '1.3.5' # The language for content autogenerated by Sphinx. Refer to documentation # for a list of supported languages. diff --git a/soar/__init__.py b/soar/__init__.py index a7379f2..096725a 100644 --- a/soar/__init__.py +++ b/soar/__init__.py @@ -15,13 +15,13 @@ # along with this program. If not, see . # # soar/__init__.py -""" Soar (Snakes on a Robot) v1.3.4 +""" Soar (Snakes on a Robot) v1.3.5 An extensible Python framework for both simulating and interacting with robots. Copyright (C) 2017 Andrew Antonitis. Licensed under the LGPLv3. """ -__version__ = '1.3.4' +__version__ = '1.3.5' blerb = 'Soar (Snakes on a Robot) v' + __version__ + ': A Python robotics framework.\n' \ 'https://github.com/arantonitis/soar\n\n' \ 'Copyright (C) 2017 Andrew Antonitis. Licensed under the LGPLv3.' diff --git a/soar/client.py b/soar/client.py index c976a38..080ebe0 100644 --- a/soar/client.py +++ b/soar/client.py @@ -93,6 +93,7 @@ def tk_wrap(*args, **kwargs): return_val = gui.synchronous_future(func, *args, after_idle=True, **kwargs) if isinstance(return_val, Exception): # If the function returned an exception, raise it raise return_val + return return_val return tk_wrap @@ -266,12 +267,15 @@ def __init__(self, title='Plotting Window', visible=True): plots.append(self) def __getattribute__(self, name): - attr = PlotWindow.__getattribute__(self, name) # Call base class method to avoid infinite recursion - # Wrap class methods so that they run in the Tk mainloop, if not already running in it - if callable(attr) and current_thread() != main_thread(): - return tkinter_execute(return_exceptions(attr)) - else: + if current_thread() != main_thread(): # If not on the main thread + # Force accessing the attribute to run on the main thread + attr = tkinter_execute(return_exceptions(PlotWindow.__getattribute__))(self, name) + # If the attribute is callable, wrap it so that it runs on the main thread + if callable(attr): + return tkinter_execute(return_exceptions(attr)) return attr + else: + return PlotWindow.__getattribute__(self, name) else: def __init__(self, title='Plotting Window', visible=True): # Ensure the window is not visible, and add the plot to the global list diff --git a/soar/gui/plot_window.py b/soar/gui/plot_window.py index 03c96c2..ce02150 100644 --- a/soar/gui/plot_window.py +++ b/soar/gui/plot_window.py @@ -6,8 +6,11 @@ Unlike use of the :func:`soar.hooks.tkinter_hook`, use of this module will not force brain methods to run on the main thread alongside Soar's GUI event loop. - `PlotWindow` is wrapped by the client if it is imported by a Soar brain. This wrapper ensures that the proper mode - (GUI or headless) is enforced, despite what the brain might pass to the constructor. + However, methods of `PlotWindow` *will* run on the main thread, regardless of what thread the other brain methods + run in. + + `PlotWindow` is wrapped by the client to ensure that the proper mode (GUI or headless) is enforced regardless + of the arguments passed to the constructor by the brain methods. The client will also ensure that, if logging is occurring, any `PlotWindow` objects will have their image data included in the log whenever the controller is shut down. diff --git a/soar/robot/arcos.py b/soar/robot/arcos.py index 876716d..2025ee1 100644 --- a/soar/robot/arcos.py +++ b/soar/robot/arcos.py @@ -39,9 +39,10 @@ DHEAD = 13 #: Turn at `SETRV` speed relative to current heading; (+) counterclockwise or (-) clockwise degrees. SAY = 15 """ Play up to 20 duration, tone sound pairs through User Control panel piezo speaker. -The argument is a string consisting of duration, tone pair bytes. Duration is in 20 millisecond increments. -A value of 0 means silence. The values 1-127 are the corresponding MIDI notes. The remaining values are frequencies -computed as `tone - 127*32` equivalent frequencies from 1-4096, in 32Hz increments. +The argument is a string whose first byte must be the number of (duration, tone) pairs to play, followed by each (duration, tone) pair. +Duration is in 20 millisecond increments. +A value of 0 means silence. The values 1-127 are the corresponding MIDI notes, with 60 being middle C. The remaining values are frequencies +computed as `(tone - 127)*32`, ranging from 1-4096 in 32Hz increments. """ CONFIG = 18 #: Request a configuration SIP. ENCODER = 19 #: Request a single (1), a continuous stream (>1), or stop (0) encoder SIPS. @@ -332,6 +333,7 @@ def send_command(self, code, data=None): Args: code: The command code. Must be in :data:`soar.robot.arcos.command_types`. data (optional): The associated command argument, assumed to be of the correct type. + For commands that take a string argument, a `bytes` object may also be used. Raises: `Timeout`: If the write timeout of the port was exceeded. @@ -347,7 +349,7 @@ def send_command(self, code, data=None): b = [data & 0xff, (data >> 8) & 0xff] self.send_packet(code, arg_type, *b) else: # command_types[code] == str - b = [ord(c) for c in data] # Convert the string to bytes and add a null terminator + b = list(bytes(data)) b.append(0) arg_type = 0x2b self.send_packet(code, arg_type, *b)