JEOL Goniotool
Warning
GonioTool is a JEOL internal engineering tool. It can set all sorts of internal microscope settings if you are not careful with it.
One of the issues with the JEOL internal API is that it does not offer access to setting the rotation speed. GonioTool.exe
(C:\JEOL\TOOL\GonioTool.exe
) is an engineering tool that can update the rotation speed of the sample stage directly. It can be used to manually override the rotation speed of the goniometer.
Instamatic contains code that interfaces with GonioTool.exe
to automate setting the rotation speed on a
JEOL microscope by adjusting the stepping frequency of the motor. The key value here is in f1/rate
-> TX
. The value can be set from 1 to 12, where 12 is maximum speed and 1 is the
slowest. The speed is linear up the maximum speed, where 1 is approximately
50 degrees/minute. We believe this to be contant, but your mileage may vary.
On the computer with GonioTool.exe
, run instamatic.goniotoolserver
. This will start a process that will start goniotool. It waits for you to enter the password (gonio
). The process monitors the GonioTool window and simulates mouse clicks using an internal Windows API.
It tries to find the f1/rate
controls tab and the entry box for TX
. The program can read and set this value (nothing else).
Finally, instamatic.goniotoolserver
sets up a server over the given port, which can be accessed from instamatic over the network.
On the main PC running instamatic, in settings.yaml
:
use_goniotool: True
goniotool_server_host: 'localhost'
goniotool_server_port: 8090
The controls are then available in the python API
via ctrl.stage
in your own script/notebook:
ctrl.stage.set_rotation_speed(1) # super slow
ctrl.stage.set_rotation_speed(12) # super fast
Or to rotate to the given angle at the given speed (set wait=False
for non-blocking call):
ctrl.set_a_with_speed(a=20, speed=6, wait=True)
Code using this is available for the Gatan and TVIPS experiments:
src/instamatic/experiments/cred_gatan/experiment.py
src/instamatic/experiments/cred_tvips/experiment.py
Code for the server:
And for the client: