pull/220/head
RobertGawron 2019-08-25 13:01:08 +01:00
rodzic b674042742
commit 08c5656e53
2 zmienionych plików z 54 dodań i 15 usunięć

Wyświetl plik

@ -0,0 +1,19 @@
from serial import Serial
import mcp3425
class IonizationChamber:
def __init__(self, config):
self.config = config
self.openSerialPort()
def openSerialPort(self):
self.serialPort = Serial(self.config.myDeviceId, baudrate = self.config.myBaudrate, timeout=None)
self.serialPort.isOpen()
self.serialPort.flushInput()
def acquireFromDevice(self):
dataIn = self.serialPort.read(5)
(msb, lsb) = (dataIn[2], dataIn[3])
deviceMeasurement = mcp3425.convert(msb, lsb, mcp3425.MCP3425_RESOLUTION.R14)
return deviceMeasurement

Wyświetl plik

@ -1,23 +1,43 @@
from serial import Serial
import datetime
import mcp3425
from IonizationChamber import IonizationChamber
import config
ser = Serial(config.myDeviceId, baudrate = config.myBaudrate, timeout=None)
class IonizationChamberStateMachine:
def __init__(self, config):
self.config = config
self.chamber = IonizationChamber(config)
self.nextState = self.initIonizationChamber
ser.isOpen()
logFile = open('data.csv', 'w')
logFile.write("Time,Counter\n")
ser.flushInput()
def tick(self):
self.nextState()
while True:
dataIn = ser.read(5)
(msb, lsb) = (dataIn[2], dataIn[3])
voltage = mcp3425.convert(msb, lsb, mcp3425.MCP3425_RESOLUTION.R14)
now = datetime.datetime.now()
def initIonizationChamber(self):
self.chamber.openSerialPort()
self.nextState = self.initOutputFile
logFile.write("{0},{1}\n".format(now, voltage))
logFile.flush()
def initOutputFile(self):
self.logFile = open('data.csv', 'w')
self.logFile.write("Time,Counter\n")
self.nextState = self.getMeasurementFromIonizationChamber
print(voltage)
def getMeasurementFromIonizationChamber(self):
self.deviceMeasurement = self.chamber.acquireFromDevice()
self.nextState = self.saveMeasurement
def saveMeasurement(self):
now = datetime.datetime.now()
self.logFile.write("{0},{1}\n".format(now, self.deviceMeasurement))
self.logFile.flush()
self.nextState = self.showMeasurementToUser
def showMeasurementToUser(self):
print(self.deviceMeasurement)
self.nextState = self.getMeasurementFromIonizationChamber
if __name__=="__main__":
machine = IonizationChamberStateMachine(config)
while True:
machine.tick()