This project is a GUI for controlling the Integrated Control Electronics (ICE) product. The program is based on Python 3.4 and PyQt5. For convenience, it is released as binaries as well.
The program entry point, main.py, creates a QtQuick application and sets up the QML environment with hooks for serial communication. The application GUI and logic are contained in the QML files in the UI sub-directory. Serial communications are encapsulated in the iceComm.py module.
The current release of ICE Control is here.
It includes a ZIP package with a Windows binary with additional instructions for dependencies for older OSes.
NOTE: This step is optional and only needs to be done if you have an older operating system and the program doesn't run.
PyQt5 depends on DirectX and OpenGL for graphics and some older versions of Windows 7 or XP don't have the necessary files included. In this case, the user will need to run the Microsoft DirectX runtime installer before the ICE GUI will run.
If the ICE GUI program fails to start, usually an update to DirectX 9.0c is needed. Download the DirectX update utility and install. After installation, the ICE GUI program should run.
Download: DirectX Runtime Web Installer
- Download the binary zip for the ICE GUI from the releases section.
- Unzip the file to a lcoation of your choice.
- Run ice_control.exe.
You may edit and tweak the user interface without any development tools. The user interface files are located in the 'ui' subfolder and can be edited with a text editor. Changes will be reflected the next time ice_control.exe is run. The user interface is programmed using QtQuick QML and javascript.
Setting up the environment should be needed only when you want to develop or change the ICE Control python program. Most of the user interface is contained in the *.qml files distributed with the program and doesn't require a development environment setup to edit.
The main dependencies are Python 3.4, QT5.5, SIP4.6 and PyQt5.4.
The following sections describe how to install the requirements for a development version of ICE Control on Windows.
Download and install git from: https://git-scm.com/download/win
Download and install Python 3.4.latest for windows from: https://www.python.org/downloads/
Download and install binary packages for Windows from: http://www.riverbankcomputing.com/software/pyqt/download5
It is possible to install PyQt5 via pip, as is suggested on the Riverbank website. Our recommendation is to install PyQt5 via a distributed executable, as the pip install does not include some Qt dependencies. These executables can be found at the PyQt project on SourceForge. Be sure to download the executable that matches the bitness (32 vs. 64 bit) of your python install.
The only required python library is PySerial version 2.5 or greater. Install using:
pip install pyserial
Note: PySerial 3.0 is the greatest version that supports Windows XP.
Start git bash, and clone ICE Control:
git clone https://github.com/Vescent/ICE-GUI.git
The main program entry point is main.py. The application can be started by runnning:
python main.py
If you want to build binaries for ICE Control, install PyInstaller as detailed below:
Download and install pywin32 from http://sourceforge.net/projects/pywin32/files/pywin32/Build%20219/
Make sure to download pywin32 for Python 3.4, 64bit or 32bit version depending on which version of Python you installed.
In our experience, using a pip-installed PyQt5 causes problems with PyInstaller. We recommend installing PyQt5 via a distributed executable as detailed above.
Clone the 'vescent' branch of PyInstaller from https://github.com/jtshugrue/pyinstaller.git. This fork of the development version of PyInstaller contains bug fixes to build QtQuick binaries on Windows.
git clone https://github.com/jtshugrue/pyinstaller.git
Extract the ZIP file.
In command prompt, navigate where pyinstaller is unzipped and run:
python setup.py install
Navigate where ICE Control is cloned and run:
pyinstaller --onefile --icon="ui\vescent.ico" --windowed --name="ice_control" main.py
Alternatively, the program can be built using the included specification file, "main.spec", which is a python script that pyinstaller uses to build executables. Some paths of the spec file will need to change. The pathex argument of the Analyze function tells pyinstaller where to find the python file to be build into an executable. Change this path to point to the location of the ICE GUI on your machine. The added_files variable is passed into the Analyze function as well, and tells pyinstaller that a set of files should be included in the build, even if pyinstaller doesn't detect that they're necessary. Depending on how PyQt and Python were installed, this path may or may not need to be
Copy the folder "UI" to the same directory as the resulting binary from the previous step. This folder contains application resources such as the user interface QML files. We choose to not bundle these resources into the executable so that a user may easily tweak or modify the user interface without needing to recompile.
Python ICE GUI is published under the GPLv2 license.