prologix_usb_gpib.py
88 lines
| 2.3 KiB
| text/x-python
|
PythonLexer
/ lppinstru / prologix_usb_gpib.py
Alexis Jeandet
|
r3 | #!/usr/bin/env python | ||
#-*- coding: utf-8 -*- | ||||
"""Simple python library to communicate with Prologix USB GPIB module. | ||||
""" | ||||
import time | ||||
import sys | ||||
import os | ||||
import matplotlib.pyplot as plt | ||||
import numpy as np | ||||
import serial | ||||
__author__ = "Alexis Jeandet" | ||||
__copyright__ = "Copyright 2015, Laboratory of Plasma Physics" | ||||
__credits__ = [] | ||||
__license__ = "GPLv2" | ||||
__version__ = "1.0.0" | ||||
__maintainer__ = "Alexis Jeandet" | ||||
__email__ = "alexis.jeandet@member.fsf.org" | ||||
__status__ = "Development" | ||||
class UsbGpib(object): | ||||
modedic = {0:"DEVICE" , | ||||
1:"CONTROLLER" ,} | ||||
revmodedic = {"DEVICE":"0" , | ||||
"CONTROLLER":"1" ,} | ||||
r9 | def __init__(self,port,address=0,baudrate=9600): | |||
self._port=serial.Serial(port,timeout=0.1,baudrate=baudrate) | ||||
Alexis Jeandet
|
r3 | self._address=address | ||
r9 | self.write("++auto 1") | |||
self._auto=1 | ||||
self.mode=1 | ||||
Alexis Jeandet
|
r3 | self.write("++ver") | ||
self.version=self.read() | ||||
r9 | ||||
Alexis Jeandet
|
r3 | |||
def set_as_device(self): | ||||
self.write("++mode 0") | ||||
def set_as_controller(self): | ||||
self.write("++mode 1") | ||||
@property | ||||
def mode(self): | ||||
self.write("++mode") | ||||
self._mode= self.modedic[int(self.read())] | ||||
return self._mode | ||||
@mode.setter | ||||
def mode(self,new_mode): | ||||
r9 | if type(new_mode) == type("str"): | |||
self._mode=self.revmodedic[new_mode] | ||||
elif type(new_mode) == type(1): | ||||
self._mode=new_mode | ||||
Alexis Jeandet
|
r3 | self.write("++mode %d" % self._mode) | ||
@property | ||||
def address(self): | ||||
self._address=int(self.read("++addr")) | ||||
return self._address | ||||
@address.setter | ||||
def address(self,value): | ||||
self._address=int(value) | ||||
self.write("++addr %d" % self._address) | ||||
def write(self,command): | ||||
r9 | self._port.write(("%s\n\r" % command).encode()) | |||
Alexis Jeandet
|
r3 | self._port.flush() | ||
r9 | def read(self,command=""): | |||
Alexis Jeandet
|
r3 | if not command=="": | ||
self.write(command) | ||||
r9 | if command[0:2]!="++" and self._auto==0: | |||
Alexis Jeandet
|
r3 | self.write("++read") | ||
return self._port.readall() | ||||
def idn(self): | ||||
return self.read("*IDN?") | ||||
r9 | ||||
@property | ||||
def auto_read_after_write(self): | ||||
self._auto=int(self.read("++auto")) | ||||
return self._auto | ||||
@auto_read_after_write.setter | ||||
def auto_read_after_write(self,enabled): | ||||
self._auto=enabled | ||||
self.write("++auto %d" % self._auto) | ||||