#!/usr/bin/env python #-*- coding: utf-8 -*- """Simple python library to drive DLP-TEMP module from www.dlpdesign.com """ 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__ = "Production" class dlp_temp(object): sensors = {0 : b'S', 1 : b'T', 2 : b'U', } aninputs = {0 : b'A', 1 : b'B', 2 : b'C', } digitin= {0 : b'M', 1 : b'N', 2 : b'O', } digithigh= {0 : b'J', 1 : b'K', 2 : b'L', } digitlow= {0 : b'G', 1 : b'H', 2 : b'I', } def __init__(self,port): self.i=0 self.__port=serial.Serial(port,timeout=0.5) def ping(self): self.__port.write(b"P") return b'Q' == self.__port.read(1) def read_sensor(self,index): if index < 3: self.__port.write(self.sensors.get(index)) dat=self.__port.read(9) test=( int(ord(dat[0])) + (int(ord(dat[1]))*256) ) temp=float(test)*0.0625 return temp #(temp-32.0)/1.8 raise UserWarning("Parameter out of bound") def read_analog_in(self,index): if index < 3: self.__port.write(self.aninputs.get(index)) dat=self.__port.read(2) test=( int(ord(dat[0])) + (int(ord(dat[1]))*256) ) val=float(test)/512.0 return val raise UserWarning("Parameter out of bound") def digit_in(self,index): if index < 3: self.__port.write(self.digitin.get(index)) dat=self.__port.read(1) return dat raise UserWarning("Parameter out of bound") def digit_out(self,index,val): if index < 3: if val: self.__port.write(self.digithigh.get(index)) else: self.__port.write(self.digitlow.get(index)) raise UserWarning("Parameter out of bound") @property def sensor1(self): return self.read_sensor(0) @property def sensor2(self): return self.read_sensor(1) @property def sensor3(self): return self.read_sensor(2) @property def AN1(self): return self.read_analog_in(0) @property def AN2(self): return self.read_analog_in(1) @property def AN3(self): return self.read_analog_in(2) @property def GP2(self): return self.digit_in(0) @GP2.setter def GP2(self,value): return self.digit_out(0,val) @property def GP0(self): return self.digit_in(1) @GP0.setter def GP0(self,value): return self.digit_out(1,val) @property def GP4(self): return self.digit_in(2) @GP4.setter def GP4(self,value): return self.digit_out(2,val) if __name__ == '__main__': print("")