Reindent *.py with reindent.py

This commit is contained in:
Douglas Clowes
2014-07-04 11:28:11 +10:00
parent 7129c0608b
commit 522a5544a8
12 changed files with 635 additions and 638 deletions

View File

@@ -8,62 +8,62 @@ from twisted.protocols.basic import LineReceiver
class CamServ(LineReceiver):
def __init__(self):
self.camState = {'camera': "clock=1mhz,bin=1x,size=2048,gain=1xhs,flip=normal,xpos=0,ypos=0,exposure=0.777,temperature=-50,threshold=800,shutteropentime=100,shutterclosetime=200", 'file': "path=/experiments/dingo/data,basename=DingoTst,startnumber=1,imageformat=tiff,experimentdetail=this is an experiment", 'meta': "sx=100,sy=200,experiment=testing3", 'status': "camera status", 'state': "Idle", 'info': "camera info"}
print "Camera get/set commands: ", self.camState.keys()
self.camState = {'camera': "clock=1mhz,bin=1x,size=2048,gain=1xhs,flip=normal,xpos=0,ypos=0,exposure=0.777,temperature=-50,threshold=800,shutteropentime=100,shutterclosetime=200", 'file': "path=/experiments/dingo/data,basename=DingoTst,startnumber=1,imageformat=tiff,experimentdetail=this is an experiment", 'meta': "sx=100,sy=200,experiment=testing3", 'status': "camera status", 'state': "Idle", 'info': "camera info"}
print "Camera get/set commands: ", self.camState.keys()
def getCmd(self, par):
if par in self.camState:
self.sendLine(self.camState[par])
else:
self.sendLine("ERROR: Unknown parameter, " + par)
if par in self.camState:
self.sendLine(self.camState[par])
else:
self.sendLine("ERROR: Unknown parameter, " + par)
def setCmd(self, s):
par,val = s.split(',',1)
if par in self.camState:
self.camState[par] = val
self.sendLine("OK")
else:
self.sendLine("ERROR: Unknown parameter, " + par)
par,val = s.split(',',1)
if par in self.camState:
self.camState[par] = val
self.sendLine("OK")
else:
self.sendLine("ERROR: Unknown parameter, " + par)
def takeCmd(self, cmd):
if cmd == 'shot':
self.sendLine("OK")
elif cmd == 'multishot':
self.sendLine("OK")
else:
self.sendLine("ERROR:1")
if cmd == 'shot':
self.sendLine("OK")
elif cmd == 'multishot':
self.sendLine("OK")
else:
self.sendLine("ERROR:1")
def clearCmd(self, par):
if par == 'meta':
self.sendLine("OK")
else:
self.sendLine("ERROR:1")
if par == 'meta':
self.sendLine("OK")
else:
self.sendLine("ERROR:1")
def lineReceived(self, line):
print "RECEIVED: " + line
cmd = line.split()
if len(cmd) == 0:
self.sendLine(line)
return
if cmd[0] == "get":
self.getCmd(cmd[1])
elif cmd[0] =="set":
if len(cmd) == 1:
self.sendLine("ERROR:2")
return
self.setCmd(cmd[1])
elif cmd[0] == "take":
if len(cmd) == 1:
self.sendLine("ERROR:2")
return
self.takeCmd(cmd[1])
elif cmd[0] == "clear":
if len(cmd) == 1:
self.sendLine("ERROR:2")
return
self.clearCmd(cmd[1])
else:
self.sendLine("ERROR: Unknown command, " + line)
print "RECEIVED: " + line
cmd = line.split()
if len(cmd) == 0:
self.sendLine(line)
return
if cmd[0] == "get":
self.getCmd(cmd[1])
elif cmd[0] =="set":
if len(cmd) == 1:
self.sendLine("ERROR:2")
return
self.setCmd(cmd[1])
elif cmd[0] == "take":
if len(cmd) == 1:
self.sendLine("ERROR:2")
return
self.takeCmd(cmd[1])
elif cmd[0] == "clear":
if len(cmd) == 1:
self.sendLine("ERROR:2")
return
self.clearCmd(cmd[1])
else:
self.sendLine("ERROR: Unknown command, " + line)
def main():

View File

@@ -82,236 +82,236 @@ _POSDIR = _CW
# Some descriptive names for default register values per chopper.
# The values are indexed by UID.
RVAL = {
'mode': {1: _RPM, 2: _PHASE, 3: _PHASE},
'dir' : {1: _POSDIR, 2: _POSDIR, 3: _POSDIR}
'mode': {1: _RPM, 2: _PHASE, 3: _PHASE},
'dir' : {1: _POSDIR, 2: _POSDIR, 3: _POSDIR}
}
class Fermi_Prot(LineReceiver):
def __init__(self):
self.flags = INFO
self.mbhlen = 7
self.fcbyte = 7
self.datstart=8
self.MBAP = namedtuple('MBAP','TID PID len UID')
self.MBFN={1:self.rcoils,3:self.rhregs,5:self.wcoil,16:self.wmregs}
self.setRawMode()
self.RegVal = {}
self.FermiCoil = {}
for uid in [1,2,3]:
self.FermiCoil[uid] = [0,0,0,0]
mode = RVAL['mode'][uid]
dir = RVAL['dir'][uid]
sys_stat = _AVC_ON|_OK
self.RegInfo = {
10: ['U16', 'System Status Information (R)'],
12: ['U16', 'Interlock Status Information (R)'],
14: ['U16', 'Rotational Speed (R)'],
16: ['F32', 'Encoder Angle (MB350PC/R ONLY) (R)'],
18: ['U32', 'Phase Veto Count (R)'],
20: ['U32', 'Read and Clear Phase Veto Count (R)'],
22: ['U32', 'Read and Clear Phase Veto Count (R)' ],
24: ['F32', 'Read PHASE ACCURACY (R)'],
26: ['F32', 'Read PHASE REPEATABILITY (R)'],
28: ['F32', 'Read PHASE OK (R)'],
30: ['U32', 'Set VETO WINDOW 100ns (RW)'],
32: ['U32', 'Set VETO WINDOW 50ns (RW)'],
34: ['U32', 'Set MOTOR CONTROL MODE (RW)'],
1000: ['U32', 'Set ROTATIONAL SPEED SETPOINT (RW)'],
1002: ['F32', 'Set HOMING ANGLE SETPOINT (MB350PC/R ONLY) (RW)'],
1004: ['F32', 'Set MOTOR KP (RW)'],
1006: ['F32', 'Set MOTOR KI (RW)'],
1008: ['F32', 'Set MOTOR KPhase (RW)'],
1010: ['F32', 'Set REFERENCE DELAY (RW)'],
1012: ['F32', 'Set REFERENCE PERIOD (RW)'],
1014: ['U32', 'Set SYNC SOURCE (RW)'],
1016: ['U32', 'Set MOTOR DIRECTION (RW)']
}
self.RegVal[uid] = {
10: sys_stat,
12: 0x0,
14: 0,
16: 0,
18: 0,
20: 0,
22: 0,
24: 0,
26: 0,
28: 0,
30: 0,
32: 0,
34: mode,
1000: 0,
1002: 0,
1004: 0,
1006: 0,
1008: 0,
1010: 0,
1012: 400000,
1014: 0,
1016: dir
}
self.flags = INFO
self.mbhlen = 7
self.fcbyte = 7
self.datstart=8
self.MBAP = namedtuple('MBAP','TID PID len UID')
self.MBFN={1:self.rcoils,3:self.rhregs,5:self.wcoil,16:self.wmregs}
self.setRawMode()
self.RegVal = {}
self.FermiCoil = {}
for uid in [1,2,3]:
self.FermiCoil[uid] = [0,0,0,0]
mode = RVAL['mode'][uid]
dir = RVAL['dir'][uid]
sys_stat = _AVC_ON|_OK
self.RegInfo = {
10: ['U16', 'System Status Information (R)'],
12: ['U16', 'Interlock Status Information (R)'],
14: ['U16', 'Rotational Speed (R)'],
16: ['F32', 'Encoder Angle (MB350PC/R ONLY) (R)'],
18: ['U32', 'Phase Veto Count (R)'],
20: ['U32', 'Read and Clear Phase Veto Count (R)'],
22: ['U32', 'Read and Clear Phase Veto Count (R)' ],
24: ['F32', 'Read PHASE ACCURACY (R)'],
26: ['F32', 'Read PHASE REPEATABILITY (R)'],
28: ['F32', 'Read PHASE OK (R)'],
30: ['U32', 'Set VETO WINDOW 100ns (RW)'],
32: ['U32', 'Set VETO WINDOW 50ns (RW)'],
34: ['U32', 'Set MOTOR CONTROL MODE (RW)'],
1000: ['U32', 'Set ROTATIONAL SPEED SETPOINT (RW)'],
1002: ['F32', 'Set HOMING ANGLE SETPOINT (MB350PC/R ONLY) (RW)'],
1004: ['F32', 'Set MOTOR KP (RW)'],
1006: ['F32', 'Set MOTOR KI (RW)'],
1008: ['F32', 'Set MOTOR KPhase (RW)'],
1010: ['F32', 'Set REFERENCE DELAY (RW)'],
1012: ['F32', 'Set REFERENCE PERIOD (RW)'],
1014: ['U32', 'Set SYNC SOURCE (RW)'],
1016: ['U32', 'Set MOTOR DIRECTION (RW)']
}
self.RegVal[uid] = {
10: sys_stat,
12: 0x0,
14: 0,
16: 0,
18: 0,
20: 0,
22: 0,
24: 0,
26: 0,
28: 0,
30: 0,
32: 0,
34: mode,
1000: 0,
1002: 0,
1004: 0,
1006: 0,
1008: 0,
1010: 0,
1012: 400000,
1014: 0,
1016: dir
}
def debug(self, flags, *args):
if (self.flags & flags):
print args
if (self.flags & flags):
print args
def getFR(self, SA,QR):
uid = self.mbap.UID
type = self.RegInfo[SA][0]
if (type == 'U32' or type == 'F32'):
NE = QR/2
else:
NE = QR
EA = 2*NE + SA
self.debug(RREG, 'NE = %d EA = %d ' % (NE,EA))
data = []
for a in range(SA, EA, 2):
self.debug(RREG, 'reg %d = %s' % (a, self.RegInfo[a][1]))
data += [self.RegVal[uid][a]]
return data
uid = self.mbap.UID
type = self.RegInfo[SA][0]
if (type == 'U32' or type == 'F32'):
NE = QR/2
else:
NE = QR
EA = 2*NE + SA
self.debug(RREG, 'NE = %d EA = %d ' % (NE,EA))
data = []
for a in range(SA, EA, 2):
self.debug(RREG, 'reg %d = %s' % (a, self.RegInfo[a][1]))
data += [self.RegVal[uid][a]]
return data
def setFR(self, SA, QR, data):
uid = self.mbap.UID
type = self.RegInfo[SA][0]
if (type == 'U32' or type == 'F32'):
NE = QR/2
fs = '>%dI'
else:
NE = QR
fs = '>%dH'
EA = 2*NE + SA
self.debug(WREG, 'NE = %d EA = %d ' % (NE,EA))
t = unpack(fs % NE,data)
self.debug(WREG, 'setFR(): t = ', map(hex, t))
i = 0
for a in range(SA, EA, 2):
n = t[i]
self.debug(WREG, 'setFR() a = ', a, ' i = ', i, 'setFR() n = ', n)
self.debug(INFO, 'set reg %d = %s' % (a, self.RegInfo[a][1]), ' to ', hex(n))
self.RegVal[uid][a] = n
i += 1
return
uid = self.mbap.UID
type = self.RegInfo[SA][0]
if (type == 'U32' or type == 'F32'):
NE = QR/2
fs = '>%dI'
else:
NE = QR
fs = '>%dH'
EA = 2*NE + SA
self.debug(WREG, 'NE = %d EA = %d ' % (NE,EA))
t = unpack(fs % NE,data)
self.debug(WREG, 'setFR(): t = ', map(hex, t))
i = 0
for a in range(SA, EA, 2):
n = t[i]
self.debug(WREG, 'setFR() a = ', a, ' i = ', i, 'setFR() n = ', n)
self.debug(INFO, 'set reg %d = %s' % (a, self.RegInfo[a][1]), ' to ', hex(n))
self.RegVal[uid][a] = n
i += 1
return
def rawDataReceived(self, ADU):
self.debug(COMS, "Received ADU ", ADU.encode('hex'))
self.ADU = ADU
dl = len(ADU)
self.mbap = self.MBAP._make(unpack('>3HB',ADU[:self.mbhlen]))
self.fcode = unpack('>B', ADU[self.fcbyte])[0]
self.debug(COMS, self.mbap, 'fcode = ', self.fcode)
self.MBFN[self.fcode]()
self.debug(COMS, "Received ADU ", ADU.encode('hex'))
self.ADU = ADU
dl = len(ADU)
self.mbap = self.MBAP._make(unpack('>3HB',ADU[:self.mbhlen]))
self.fcode = unpack('>B', ADU[self.fcbyte])[0]
self.debug(COMS, self.mbap, 'fcode = ', self.fcode)
self.MBFN[self.fcode]()
def connectionMade(self):
self.debug(INFO, "Connection made")
self.debug(INFO, "Connection made")
def getPDU(self):
return self.ADU[self.datstart:]
return self.ADU[self.datstart:]
def rcoils(self):
# FC = Function Code
# SA = Start Address, QC = Quantity of Coils
# BC = Byte Count, CS = Coil Status (each bit = status of one coil)
# Request: FC<1B>, SA<2B>, QC<2B>
# Response: FC<1B>, BC<1B>, CS<n*B>
# n = number of eights in QC plus 1 if there is a remainder.
# ie n = QC // 8 + (1 if QC % 8 else 0)
uid = self.mbap.UID
PDU = self.getPDU()
(SA, QC) = unpack('>2H',PDU)
self.debug(RCOIL, 'rcoils:SA=%d, QC=%d' % (SA,QC))
hdr = self.mbap._replace(len = 4)
BC = 1 # ByteCount
#TODO Coil values should be an array of bytes with each bit representing a coil
if (self.FermiCoil[uid][SA] == 0xFF00):
data = 1
else:
data = 0
resp = pack('>3HB', *hdr) + pack('>2B%dB' % BC, self.fcode, BC, data)
self.debug(RCOIL, 'resp = ', resp.encode('hex'))
self.sendLine(resp)
# FC = Function Code
# SA = Start Address, QC = Quantity of Coils
# BC = Byte Count, CS = Coil Status (each bit = status of one coil)
# Request: FC<1B>, SA<2B>, QC<2B>
# Response: FC<1B>, BC<1B>, CS<n*B>
# n = number of eights in QC plus 1 if there is a remainder.
# ie n = QC // 8 + (1 if QC % 8 else 0)
uid = self.mbap.UID
PDU = self.getPDU()
(SA, QC) = unpack('>2H',PDU)
self.debug(RCOIL, 'rcoils:SA=%d, QC=%d' % (SA,QC))
hdr = self.mbap._replace(len = 4)
BC = 1 # ByteCount
#TODO Coil values should be an array of bytes with each bit representing a coil
if (self.FermiCoil[uid][SA] == 0xFF00):
data = 1
else:
data = 0
resp = pack('>3HB', *hdr) + pack('>2B%dB' % BC, self.fcode, BC, data)
self.debug(RCOIL, 'resp = ', resp.encode('hex'))
self.sendLine(resp)
def wcoil(self):
uid = self.mbap.UID
PDU = self.getPDU()
(OA, OV) = unpack('>2H', self.ADU[self.datstart:])
self.debug(WCOIL, 'wcoil:OA=%d, OV=%X' % (OA,OV))
# TODO This really just toggles IDLE speed so it's only correct for OA=2 (ie coil 3)
self.FermiCoil[uid][OA] ^= OV
if (OA == CSTART):
self.debug(INFO, "START")
self.RegVal[uid][10] |= (_RUN|_LEV)
self.debug(INFO, 'RUNNING, LEVITATING')
# Don't set speed if idling
if (self.FermiCoil[uid][2] == 0x0000):
# Set RotSpeed value
self.RegVal[uid][14] = self.RegVal[uid][1000]
if (self.RegVal[uid][34] == _PHASE):
self.debug(INFO, 'PHASELOCKED')
self.RegVal[uid][10] |= _PHLOCK
else:
self.debug(INFO, 'UP TO SPEED')
self.RegVal[uid][10] |= _UP_TO_SPEED
elif (OA == CSTOP):
self.debug(INFO, "STOP")
self.RegVal[uid][14] = 0
if (self.RegVal[uid][34] == _PHASE):
self.debug(INFO, 'NOT UP TO SPEED, NOT RUNNING, NOT LEVITATING, NOT PHASELOCKED')
self.RegVal[uid][10] &= ~(_UP_TO_SPEED|_RUN|_LEV|_PHLOCK)
else:
self.debug(INFO, 'NOT UP TO SPEED, NOT RUNNING, NOT LEVITATING')
self.RegVal[uid][10] &= ~(_UP_TO_SPEED|_RUN|_LEV)
elif (OA == CIDLE):
self.debug(INFO, "TOGGLE IDLE")
if (self.RegVal[uid][34] == _PHASE):
lockflag = _PHLOCK
flagname = '_PHLOCK'
else:
lockflag = _UP_TO_SPEED
flagname = '_UP_TO_SPEED'
if ( (self.RegVal[uid][10] & lockflag) > 0):
self.debug(INFO, "SET IDLE SPEED")
self.RegVal[uid][14] = 0
self.debug(INFO, "UNSET %s" % flagname)
self.RegVal[uid][10] &= ~(lockflag)
else:
self.debug(INFO, "SET RUN SPEED")
self.RegVal[uid][14] = self.RegVal[uid][1000]
self.debug(INFO, "SET %s" % flagname)
self.RegVal[uid][10] |= lockflag
elif (OA == CRESET):
self.debug(INFO, "RESET")
self.debug(WCOIL, 'resp = ', self.ADU.encode('hex'))
self.sendLine(self.ADU)
uid = self.mbap.UID
PDU = self.getPDU()
(OA, OV) = unpack('>2H', self.ADU[self.datstart:])
self.debug(WCOIL, 'wcoil:OA=%d, OV=%X' % (OA,OV))
# TODO This really just toggles IDLE speed so it's only correct for OA=2 (ie coil 3)
self.FermiCoil[uid][OA] ^= OV
if (OA == CSTART):
self.debug(INFO, "START")
self.RegVal[uid][10] |= (_RUN|_LEV)
self.debug(INFO, 'RUNNING, LEVITATING')
# Don't set speed if idling
if (self.FermiCoil[uid][2] == 0x0000):
# Set RotSpeed value
self.RegVal[uid][14] = self.RegVal[uid][1000]
if (self.RegVal[uid][34] == _PHASE):
self.debug(INFO, 'PHASELOCKED')
self.RegVal[uid][10] |= _PHLOCK
else:
self.debug(INFO, 'UP TO SPEED')
self.RegVal[uid][10] |= _UP_TO_SPEED
elif (OA == CSTOP):
self.debug(INFO, "STOP")
self.RegVal[uid][14] = 0
if (self.RegVal[uid][34] == _PHASE):
self.debug(INFO, 'NOT UP TO SPEED, NOT RUNNING, NOT LEVITATING, NOT PHASELOCKED')
self.RegVal[uid][10] &= ~(_UP_TO_SPEED|_RUN|_LEV|_PHLOCK)
else:
self.debug(INFO, 'NOT UP TO SPEED, NOT RUNNING, NOT LEVITATING')
self.RegVal[uid][10] &= ~(_UP_TO_SPEED|_RUN|_LEV)
elif (OA == CIDLE):
self.debug(INFO, "TOGGLE IDLE")
if (self.RegVal[uid][34] == _PHASE):
lockflag = _PHLOCK
flagname = '_PHLOCK'
else:
lockflag = _UP_TO_SPEED
flagname = '_UP_TO_SPEED'
if ( (self.RegVal[uid][10] & lockflag) > 0):
self.debug(INFO, "SET IDLE SPEED")
self.RegVal[uid][14] = 0
self.debug(INFO, "UNSET %s" % flagname)
self.RegVal[uid][10] &= ~(lockflag)
else:
self.debug(INFO, "SET RUN SPEED")
self.RegVal[uid][14] = self.RegVal[uid][1000]
self.debug(INFO, "SET %s" % flagname)
self.RegVal[uid][10] |= lockflag
elif (OA == CRESET):
self.debug(INFO, "RESET")
self.debug(WCOIL, 'resp = ', self.ADU.encode('hex'))
self.sendLine(self.ADU)
def rhregs(self):
uid = self.mbap.UID
PDU = self.getPDU()
(SA, QR) = unpack('>2H', self.ADU[self.datstart:])
self.debug(RHREGS, 'rhregs:SA=%d, QR=%d' % (SA,QR))
regval = self.getFR(SA,QR)
self.debug(RHREGS, 'rhregs:data = ', regval)
hdr = self.mbap._replace(len = 3 + 2*QR)
self.debug(RHREGS, 'hdr = ', hdr)
type = self.RegInfo[SA][0]
if (type == 'U32' or type == 'F32'):
NE = QR/2
resp = pack('>3HB', *hdr) + pack('>2B%dI' % NE, self.fcode, 2*QR, *regval)
else:
resp = pack('>3HB', *hdr) + pack('>2B%dH' % QR, self.fcode, 2*QR, *regval)
self.debug(RHREGS, 'resp = ', resp.encode('hex'))
self.sendLine(resp)
uid = self.mbap.UID
PDU = self.getPDU()
(SA, QR) = unpack('>2H', self.ADU[self.datstart:])
self.debug(RHREGS, 'rhregs:SA=%d, QR=%d' % (SA,QR))
regval = self.getFR(SA,QR)
self.debug(RHREGS, 'rhregs:data = ', regval)
hdr = self.mbap._replace(len = 3 + 2*QR)
self.debug(RHREGS, 'hdr = ', hdr)
type = self.RegInfo[SA][0]
if (type == 'U32' or type == 'F32'):
NE = QR/2
resp = pack('>3HB', *hdr) + pack('>2B%dI' % NE, self.fcode, 2*QR, *regval)
else:
resp = pack('>3HB', *hdr) + pack('>2B%dH' % QR, self.fcode, 2*QR, *regval)
self.debug(RHREGS, 'resp = ', resp.encode('hex'))
self.sendLine(resp)
def wmregs(self):
PDU = self.getPDU()
(SA, QR, BC) = unpack('>2HB',PDU[:5])
data = PDU[5:]
self.debug(WMREGS, 'wmregs:SA=%d, QR=%d, BC=%d' % (SA,QR,BC), 'data = ', map(hex, unpack('>%dH' % QR, data)) )
self.setFR(SA, QR, data)
hdr = self.mbap._replace(len = 7)
resp = pack('>3HB', *hdr) + pack('>B2H', self.fcode, SA, QR)
self.debug(WMREGS, 'resp = ', resp.encode('hex'))
self.sendLine(resp)
PDU = self.getPDU()
(SA, QR, BC) = unpack('>2HB',PDU[:5])
data = PDU[5:]
self.debug(WMREGS, 'wmregs:SA=%d, QR=%d, BC=%d' % (SA,QR,BC), 'data = ', map(hex, unpack('>%dH' % QR, data)) )
self.setFR(SA, QR, data)
hdr = self.mbap._replace(len = 7)
resp = pack('>3HB', *hdr) + pack('>B2H', self.fcode, SA, QR)
self.debug(WMREGS, 'resp = ', resp.encode('hex'))
self.sendLine(resp)

View File

@@ -85,4 +85,3 @@ class GalilFactory(ServerFactory):
p = self.protocol(self.device)
p.factory = self
return p

View File

@@ -26,9 +26,9 @@ class HidenFactory(ServerFactory):
if __name__ == '__main__':
class TestProtocol:
def __init__(self, theDevice, theTerm = "\n"):
self.device = theDevice
self.response = ""
self.term = theTerm
self.device = theDevice
self.response = ""
self.term = theTerm
class TestDevice:
def __init__(self):

View File

@@ -6,48 +6,48 @@ from twisted.internet import reactor, protocol
class NVS_Prot(protocol.Protocol):
def __init__(self):
self.fields = [
'state' , 'rspeed', 'aspeed', 'sspeed', 'aveto' , 'ploss' , 'sploss',
'ttang' , 'rtemp' , 'wflow' , 'winlt' , 'woutt' , 'vacum' , 'wvalv' ,
'vvalv' , 'vibrt' , 'bcuun' , 'sdate' , 'stime'
]
self.state = {
'state' : {'fname': '#STATE ', 'fval':'BRAKING'},
'rspeed': {'fname': '#RSPEED', 'fval': 25476},
'aspeed': {'fname': '#ASPEED', 'fval': 0},
'sspeed': {'fname': '#SSPEED', 'fval': 0.3},
'aveto' : {'fname': '#AVETO ', 'fval': 'nok'},
'ploss' : {'fname': '#PLOSS ', 'fval': 290.2},
'sploss': {'fname': '#SPLOS ', 'fval': 25422},
'ttang' : {'fname': '#TTANG ', 'fval': 0.000},
'rtemp' : {'fname': '#RTEMP ', 'fval': 23.9},
'wflow' : {'fname': '#WFLOW ', 'fval': 0.1},
'winlt' : {'fname': '#WINLT ', 'fval': 20.3},
'woutt' : {'fname': '#WOUTT ', 'fval': 21.0},
'vacum' : {'fname': '#VACUM ', 'fval': 0.1922},
'wvalv' : {'fname': '#WVALV ', 'fval': ' clos'},
'vvalv' : {'fname': '#VVALV ', 'fval': ' open'},
'vibrt' : {'fname': '#VIBRT ', 'fval': 0.08},
'bcuun' : {'fname': '#BCUUN ', 'fval': 0.0},
'sdate' : {'fname': '#SDATE ', 'fval': '24.04.2013'},
'stime' : {'fname': '#STIME ', 'fval': '13:53:10'}
}
def __init__(self):
self.fields = [
'state' , 'rspeed', 'aspeed', 'sspeed', 'aveto' , 'ploss' , 'sploss',
'ttang' , 'rtemp' , 'wflow' , 'winlt' , 'woutt' , 'vacum' , 'wvalv' ,
'vvalv' , 'vibrt' , 'bcuun' , 'sdate' , 'stime'
]
self.state = {
'state' : {'fname': '#STATE ', 'fval':'BRAKING'},
'rspeed': {'fname': '#RSPEED', 'fval': 25476},
'aspeed': {'fname': '#ASPEED', 'fval': 0},
'sspeed': {'fname': '#SSPEED', 'fval': 0.3},
'aveto' : {'fname': '#AVETO ', 'fval': 'nok'},
'ploss' : {'fname': '#PLOSS ', 'fval': 290.2},
'sploss': {'fname': '#SPLOS ', 'fval': 25422},
'ttang' : {'fname': '#TTANG ', 'fval': 0.000},
'rtemp' : {'fname': '#RTEMP ', 'fval': 23.9},
'wflow' : {'fname': '#WFLOW ', 'fval': 0.1},
'winlt' : {'fname': '#WINLT ', 'fval': 20.3},
'woutt' : {'fname': '#WOUTT ', 'fval': 21.0},
'vacum' : {'fname': '#VACUM ', 'fval': 0.1922},
'wvalv' : {'fname': '#WVALV ', 'fval': ' clos'},
'vvalv' : {'fname': '#VVALV ', 'fval': ' open'},
'vibrt' : {'fname': '#VIBRT ', 'fval': 0.08},
'bcuun' : {'fname': '#BCUUN ', 'fval': 0.0},
'sdate' : {'fname': '#SDATE ', 'fval': '24.04.2013'},
'stime' : {'fname': '#STIME ', 'fval': '13:53:10'}
}
def dataReceived(self, data):
print "RECEIVED ", data
reply = 'N#SOS#ACCEPT'
for k in self.fields:
reply += self.state[k]['fname'] + '= ' + str(self.state[k]['fval'])
reply += '#'
print "REPLY ", reply
self.transport.write(reply)
def dataReceived(self, data):
print "RECEIVED ", data
reply = 'N#SOS#ACCEPT'
for k in self.fields:
reply += self.state[k]['fname'] + '= ' + str(self.state[k]['fval'])
reply += '#'
print "REPLY ", reply
self.transport.write(reply)
def main():
factory = protocol.ServerFactory()
factory.protocol = NVS_Prot
reactor.listenTCP(60001,factory)
reactor.run()
factory = protocol.ServerFactory()
factory.protocol = NVS_Prot
reactor.listenTCP(60001,factory)
reactor.run()
if __name__ == '__main__':
main()
main()

View File

@@ -26,9 +26,9 @@ class PfeifferFactory(ServerFactory):
if __name__ == '__main__':
class TestProtocol:
def __init__(self, theDevice, theTerm = "\r\n"):
self.device = theDevice
self.response = ""
self.term = theTerm
self.device = theDevice
self.response = ""
self.term = theTerm
class TestDevice:
def __init__(self):

View File

@@ -22,9 +22,9 @@ class LakeshoreFactory(ServerFactory):
if __name__ == '__main__':
class TestProtocol:
def __init__(self, theDevice, theTerm = "\r\n"):
self.device = theDevice
self.response = ""
self.term = theTerm
self.device = theDevice
self.response = ""
self.term = theTerm
class TestDevice:
def __init__(self):

View File

@@ -26,9 +26,9 @@ class MercuryFactory(ServerFactory):
if __name__ == '__main__':
class TestProtocol:
def __init__(self, theDevice, theTerm = "\r\n"):
self.device = theDevice
self.response = ""
self.term = theTerm
self.device = theDevice
self.response = ""
self.term = theTerm
class TestDevice:
def __init__(self):

View File

@@ -9,11 +9,11 @@ import matplotlib.pyplot as plt
import argparse
def make_delta(q):
delta_q = np.zeros(len(q))
delta_q[0] = 0.0
for i in range(1, len(q)):
delta_q[i] = q[i] - q[i - 1]
return delta_q
delta_q = np.zeros(len(q))
delta_q[0] = 0.0
for i in range(1, len(q)):
delta_q[i] = q[i] - q[i - 1]
return delta_q
parser = argparse.ArgumentParser()
parser.add_argument("csv_file", help="TrackingFile.csv", nargs="?")
@@ -28,10 +28,10 @@ data = np.loadtxt(csv_file, delimiter=",", skiprows=1, unpack=True)
t, p, s, c = data
if False:
print dir(data)
#print data.T
print len(data)
print len(t)
print dir(data)
#print data.T
print len(data)
print len(t)
delta_t = make_delta(t)
delta_p = make_delta(p)
@@ -50,15 +50,15 @@ print "StepsPerCount: %.6f" % steps_per_count
delta_spc = np.zeros(len(t))
for i in range(len(delta_spc)):
if delta_c[i] == 0:
delta_spc[i] = 0
else:
delta_spc[i] = delta_s[i] / delta_c[i]
if delta_c[i] == 0:
delta_spc[i] = 0
else:
delta_spc[i] = delta_s[i] / delta_c[i]
if False:
print len(t), len(delta_s), len(delta_spc)
print delta_spc
for i in range(len(t)):
print "%4d: %18.6f %18.6f %18.6f %18.6f %18.6f" % (i, t[i], delta_t[i], delta_s[i], delta_c[i], delta_spc[i])
print len(t), len(delta_s), len(delta_spc)
print delta_spc
for i in range(len(t)):
print "%4d: %18.6f %18.6f %18.6f %18.6f %18.6f" % (i, t[i], delta_t[i], delta_s[i], delta_c[i], delta_spc[i])
ax1.plot(p, delta_spc - steps_per_count, c='r', label='delta steps per count')
ax1.plot(p, (s - s[0])/(c - c[0]) - steps_per_count, c='b', label='steps / counts')