Use plistlib instead of biplist Replace the no-longer-working biplist library for reading the Info.plist file with plistlib. This is now in http://dmgbuild.readthedocs.io/en/latest/example.html Also remove a couple unnecessary imports.
by Chris Satterlee 1 year 11 months
e8f83c97
Add pyzmq to pip install list Update the python3 README to add pyzmq to the pip install command line. Also remove the now-obsolete downlevel install of matplotlib.
by Chris Satterlee 1 year 11 months
213a3e22
Make port/interval changes take effect on OK (#Issue #198) Modified the rcmd_apply() method to handle the case where remote commands are already enabled, and the user changes the port number and/or the polling interval. Previously, such a change would not take effect when the user clicked OK. They would only take effect if the GUI was closed or if the user disabled and then re-enabled remote commands. Now, in this case, the remote command monitor is canceled and restarted with the new port and/or interval.
by Chris Satterlee 1 year 11 months
9f8f7a91
Catch exception for port in use (Issue #197) Added try/except for call to zmq_socket.bind. Display error dialog if caught. Also in __init__, start remote_monitor() with after_idle so exceptions will be handled normally rather than with handle_early_exception().
by Chris Satterlee 1 year 11 months
30bbf57a
Add C version of sample rcmd client Added C language version of the example of a remote command client
by Chris Satterlee 1 year 11 months
a3cb8318
Fix some BOM part numbers I made these changes four months ago but didn't commit. The DIP sockets had an incorrect part Mouser number (8-pin instead of 4-pin).
by Chris Satterlee 1 year 11 months
91b6fcbd
Update version to 2.8.0 Update from v2.7.1 to v2.8.0 Note that this is for python3 only. The version.txt in the python directory is still at v2.7.1 because that is where the support for Python 2 ended.
by Chris Satterlee 1 year 11 months
d4dce922
Add remote command feature (Issue #196) This commit adds the Remote Command feature. It uses the ZeroMQ (aka ZMQ, 0MQ) messaging library. This allows client programs to be written in various languages. The basic REQ/REP (client/server) messaging pattern is used. The server is implemented as part of the GUI. This was a design decision (the other choice being to implement it at the lower IV_Swinger2.py level that controls the IV Swinger 2 hardware.) This means the remote commands are handled by the GUI, and the effects of the commands are visible on the GUI. Namely, when an IV curve is initiated remotely, the curve is displayed on the local screen just as if the user had clicked the "Swing!"button. A new tab has been added to the Preferences dialog to configure the Remote Command feature. This tab is used to enable/disable remote command monitoring, to specify a TCP port to communicate over, and to specify the polling interval. If the "instances" feature is used, each instance is configured independently and can receive and execute remote commands concurrently with the other instances. Like other preferences, the choices on the Remote Command tab are saved in the Config file so they persist across runs. The only remote command implemented in this commit is the "Swing" command. This command triggers the measurement of an IV curve and returns a summary of the results to the requester. If the command succeeds, the Isc, Voc, and MPP values are returned along with the name of the run directory. If the command fails, the name of the failing return code is returned. When remote command monitoring is enabled, the port number is displayed at the top of the GUI.
by Chris Satterlee 1 year 11 months
798ae738
Change get_dts_with_spin to get_dts_with_sleep (Issue #195) Replace the "while True" loop in get_dts_with_spin to a sleep for the remainder of the one second, and change its name to get_dts_with_sleep. This fixes the issue of the GUI being unresponsive when looping without a rate limit (Issue #195.)
by Chris Satterlee 1 year 11 months
0e184279
Replace myTkSimpleDialog (Issue #194) This commit removes the myTkSimpleDialog.py module and replaces it with internal classes and functions. These dialogs now require the specification of the master window that the dialog is associated with.
by Chris Satterlee 1 year 11 months
8b87650d
Report a bug