|
|
#!/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("")
|
|
|
|