python-microscope / microscope

Python library for control of microscope devices, supporting hardware triggers and distribution of devices over the network for performance and flexibility.
https://www.python-microscope.org
GNU General Public License v3.0
73 stars 42 forks source link

Add support to PI piezo stages #196

Open gjover opened 3 years ago

gjover commented 3 years ago

Hi, At ALBA we are installing a CryoSIM system. For this project we need devices for different hardware. One of them is a z-stage from PI (physikinstrumente).

I have develop an stage device for the e754 controller, but can be generalized to other ones.

iandobbie commented 3 years ago

We actually already use several PI stages. The M687 is current in cockpit and needs to be moved to microscope, but for the others we drive then via analogue voltage as we need the control to be synchronous during experiments. Any other settings we do once from the PI application and then save to NV ram.

gjover commented 3 years ago

Hi, I just added support for rfc2217 protocol.

For serial controllers one could use ser2net to allow socket communication. The configuration would be: /etc/ser2net.conf 3000:telnet:600:/dev/ttyS0:19200 8DATABITS NONE 1STOPBIT

And one could construct the device as:

PIM687_CONF = dict(url='rfc2217://127.0.0.3:3000') DEVICES = [ device(pi_stage.PIm687, host, port, conf=PIM687_CONF), ]

But this setup has not been tested

iandobbie commented 3 years ago

I don't understand what this provides that a wrapper using pyserial wouldn't. It adds another dependency and a new different way to talk to devices. Unless there is a very clear advantage I think it would be better to talk to the stage with pyserial as we do with every other stage.

carandraug commented 1 year ago

Issue #259 (now closed as duplicate of this one) suggests using PIPython (https://github.com/PI-PhysikInstrumente/PIPython) to do this.