dlp_temp.py
127 lines
| 3.1 KiB
| text/x-python
|
PythonLexer
/ lppinstru / dlp_temp.py
Alexis Jeandet
|
r3 | #!/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") | ||||
Alexis Jeandet
|
r7 | @property | ||
Alexis Jeandet
|
r3 | def sensor1(self): | ||
Alexis Jeandet
|
r7 | return self.read_sensor(0) | ||
Alexis Jeandet
|
r3 | |||
Alexis Jeandet
|
r7 | @property | ||
Alexis Jeandet
|
r3 | def sensor2(self): | ||
Alexis Jeandet
|
r7 | return self.read_sensor(1) | ||
Alexis Jeandet
|
r3 | |||
Alexis Jeandet
|
r7 | @property | ||
Alexis Jeandet
|
r3 | def sensor3(self): | ||
Alexis Jeandet
|
r7 | return self.read_sensor(2) | ||
Alexis Jeandet
|
r3 | |||
Alexis Jeandet
|
r7 | @property | ||
Alexis Jeandet
|
r3 | def AN1(self): | ||
Alexis Jeandet
|
r7 | return self.read_analog_in(0) | ||
@property | ||||
Alexis Jeandet
|
r3 | def AN2(self): | ||
Alexis Jeandet
|
r7 | return self.read_analog_in(1) | ||
@property | ||||
Alexis Jeandet
|
r3 | def AN3(self): | ||
Alexis Jeandet
|
r7 | return self.read_analog_in(2) | ||
Alexis Jeandet
|
r3 | |||
Alexis Jeandet
|
r7 | @property | ||
Alexis Jeandet
|
r3 | def GP2(self): | ||
return self.digit_in(0) | ||||
@GP2.setter | ||||
def GP2(self,value): | ||||
return self.digit_out(0,val) | ||||
Alexis Jeandet
|
r7 | @property | ||
Alexis Jeandet
|
r3 | def GP0(self): | ||
return self.digit_in(1) | ||||
@GP0.setter | ||||
def GP0(self,value): | ||||
return self.digit_out(1,val) | ||||
Alexis Jeandet
|
r7 | @property | ||
Alexis Jeandet
|
r3 | def GP4(self): | ||
return self.digit_in(2) | ||||
@GP4.setter | ||||
def GP4(self,value): | ||||
return self.digit_out(2,val) | ||||
if __name__ == '__main__': | ||||
print("") | ||||