#!/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" ,} def __init__(self,port,address=0,baudrate=9600): self._port=serial.Serial(port,timeout=0.1,baudrate=baudrate) self._address=address self.write("++auto 1") self._auto=1 self.mode=1 self.write("++ver") self.version=self.read() 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): if type(new_mode) == type("str"): self._mode=self.revmodedic[new_mode] elif type(new_mode) == type(1): self._mode=new_mode 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): self._port.write(("%s\n\r" % command).encode()) self._port.flush() def read(self,command=""): if not command=="": self.write(command) if command[0:2]!="++" and self._auto==0: self.write("++read") return self._port.readall() def idn(self): return self.read("*IDN?") @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)