Exemplo n.º 1
0
 def getdata(self):
     """Read the whole set of data registers once"""
     sl = self
     self.gdb['state'] = 'disabled' #disable button while reading
     self.master.update()
     resp = 0
     if not self.jmprButton['text'][-1]=="N": #check for jumper
         util.DEVICE_ID = long(self.did.get())
         util.JMP = 0
     else:
         util.DEVICE_ID = ds['id']
     s['port'] = int(self.com.get()[-1])-1
     ser = modbus.openConn(s)
     if ser:
         resp = modbus.getData(ser)
         ser.close()
     if resp:
         util.errlvl=1
         print resp
         self.volr.set("%.2f"%resp[3]) #read and split response
         self.energyr.set("%.3f"%resp[4])
         self.massr.set("%.2f"%resp[5])
         self.vftotal.set("%.0f"%resp[6])
         self.hetotal.set("%.0f"%resp[7])
         self.cetotal.set("%.0f"%resp[8])
         self.mftotal.set("%.0f"%resp[9])
         self.ltemp.set("%.2f"%resp[10])
         self.rtemp.set("%.2f"%resp[11])
         print ":::"
         print str(log.LOGEN)
         if log.LOGEN == 1: #log?
             print "logging!"
             l = log.log(str(resp[3:12])[1:-1].strip())
             if not l:
                 self.logB()
                 log.REEN = 0
                 self.repeatButton['text'] = "Off"
     else:
         #if util.repeat and log.REEN:
         #    self.getdata()
         if util.errlvl<=3:
             util.errlvl+=1
             self.getdata()
         else:
             self.gdb['state'] = 'normal' #restore get button
             return False
             
     if util.repeat and log.REEN and util.errlvl<4: #repeat this function every util.repeat sec if cont log
         print "sleeping for" + str(util.repeat)
         thread = Thread(target=self.sleeptimer,args=(util.repeat,))
         thread.start() #spawn thread for util.repeat secs
         while thread.is_alive(): #while thread is alive, do nothing
             self.master.update()
             if not log.REEN: #if repeat turned off, stop right away
                 break
         if log.REEN: #once thread ends, if still logging, take getdata
             self.getdata()
         
     self.gdb['state'] = 'normal'
Exemplo n.º 2
0
 def getdata(self):
     """Read the whole set of data registers once"""
     sl = self
     self.gdb['state'] = 'disabled' #disable button while reading
     self.master.update()
     resp = 0
     if not self.jmprButton['text'][-1]=="N": #check for jumper
         util.DEVICE_ID = long(self.did.get())
         util.JMP = 0
     else:
         util.DEVICE_ID = ds['id']
     s['port'] = int(self.com.get()[-1])-1
     ser = modbus.openConn(s)
     if ser:
         resp = modbus.getData(ser)
         ser.close()
     if resp:
         util.errlvl=1
         print resp
         self.volr.set("%.2f"%resp[3]) #read and split response
         self.energyr.set("%.3f"%resp[4])
         self.massr.set("%.2f"%resp[5])
         self.vftotal.set("%.0f"%resp[6])
         self.hetotal.set("%.0f"%resp[7])
         self.cetotal.set("%.0f"%resp[8])
         self.mftotal.set("%.0f"%resp[9])
         self.ltemp.set("%.2f"%resp[10])
         self.rtemp.set("%.2f"%resp[11])
         print ":::"
         print str(log.LOGEN)
         if log.LOGEN == 1: #log?
             print "logging!"
             l = log.log(str(resp[3:12])[1:-1].strip())
             if not l:
                 self.logB()
                 log.REEN = 0
                 self.repeatButton['text'] = "Off"
     else:
         #if util.repeat and log.REEN:
         #    self.getdata()
         if util.errlvl<=3:
             util.errlvl+=1
             self.getdata()
         else:
             self.gdb['state'] = 'normal' #restore get button
             return False
             
     if util.repeat and log.REEN and util.errlvl<4: #repeat this function every util.repeat sec if cont log
         print "sleeping for" + str(util.repeat)
         thread = Thread(target=self.sleeptimer,args=(util.repeat,))
         thread.start() #spawn thread for util.repeat secs
         while thread.is_alive(): #while thread is alive, do nothing
             self.master.update()
             if not log.REEN: #if repeat turned off, stop right away
                 break
         if log.REEN: #once thread ends, if still logging, take getdata
             self.getdata()
         
     self.gdb['state'] = 'normal'
Exemplo n.º 3
0
 def defaultstwo(self):
     """set defaults 2 on the meter"""
     util.errlvl=4 #error on first error
     resp = 0
     s['port'] = int(self.com.get()[-1])-1
     ser = modbus.openConn(s)
     if ser:
         try:
             resp = modbus.writeReg(ser,modbus.fc['reset'],int(modbus.reg['defaults two']),0)
             ser.close()
         except:
             return False
Exemplo n.º 4
0
 def resetvf(self):
     """reset volume flow"""
     util.errlvl=4 #error on first error
     resp = 0
     s['port'] = int(self.com.get()[-1])-1
     ser = modbus.openConn(s)
     if ser:
         try:
             resp = modbus.writeReg(ser,modbus.fc['reset'],int(modbus.reg['reset flow total']),0)
             ser.close()
         except Exception, e:
             print "exception: "+str(e)
             return False
Exemplo n.º 5
0
 def resetvf(self):
     """reset volume flow"""
     util.errlvl=4 #error on first error
     resp = 0
     s['port'] = int(self.com.get()[-1])-1
     ser = modbus.openConn(s)
     if ser:
         try:
             resp = modbus.writeReg(ser,modbus.fc['reset'],int(modbus.reg['reset flow total']),0)
             ser.close()
         except Exception, e:
             print "exception: "+str(e)
             return False
Exemplo n.º 6
0
 def resetce(self):
     """Reset cooling energy"""
     util.errlvl=4 #error on first error
     resp = 0
     s['port'] = int(self.com.get()[-1])-1
     ser = modbus.openConn(s)
     if ser:
         try:
             resp = modbus.writeReg(ser,modbus.fc['reset'],int(modbus.reg['reset cooling total']),0)
             ser.close()
         except:
             return False
     if resp:
         self.cetotal.set("0.0")
Exemplo n.º 7
0
 def resetce(self):
     """Reset cooling energy"""
     util.errlvl=4 #error on first error
     resp = 0
     s['port'] = int(self.com.get()[-1])-1
     ser = modbus.openConn(s)
     if ser:
         try:
             resp = modbus.writeReg(ser,modbus.fc['reset'],int(modbus.reg['reset cooling total']),0)
             ser.close()
         except:
             return False
     if resp:
         self.cetotal.set("0.0")
Exemplo n.º 8
0
 def readunits(self):
     """retrieves unit settings from meter"""
     util.errlvl=4
     self.retreive['state'] = 'disabled' #prevent multiple presses
     self.master.update() #prob extranious
     resp = 0
     if not self.jmprButton['text'][-1]=="N": #jumper status
         util.DEVICE_ID = long(self.did.get())
         util.JMP = 0
     else:
         util.DEVICE_ID = ds['id']
     s['port'] = int(self.com.get()[-1])-1 #COM port num
     ser = modbus.openConn(s)
     if ser:
         print "getting units.."
         resp = modbus.getUnits(ser)
         ser.close()
     if resp:
         print "units: "
         readunits = resp[6:26]
         print readunits
         chunks = len(readunits)
         numsize = 2
         units=[readunits[i:i+numsize] for i in range(0,chunks,numsize)]
         print units
         self.pot.set(self.po['values'][int(units[6],16)%3])
         self.fru.set(self.fr['values'][int(units[0],16)%3])
         self.eru.set(self.er['values'][(int(units[1],16)-3)%4])
         self.mfru.set(self.mf['values'][(int(units[2],16)-7)%2])
         self.ftu.set(self.ft['values'][(int(units[3],16)-9)%3])
         selection = (int(units[4],16)-12)
         if selection==5:
             self.etu.set(self.et['values'][3])
         else:
             self.etu.set(self.et['values'][selection%3])
         self.mtu.set(self.mt['values'][(int(units[5],16)-15)%2])
         self.tou.set(self.to['values'][int(units[7],16)%2])
         self.met.set(self.me['values'][int(units[8],16)])
         per=str(int(units[9],16)) #since 2 digits must specify hex
         self.peg.set(per)
         self.ppg.set(per)
         self.mediaf(util.root)
     if not resp:
         print "units failed"
         
     self.retreive['state'] = 'enabled'
Exemplo n.º 9
0
 def readunits(self):
     """retrieves unit settings from meter"""
     util.errlvl=4
     self.retreive['state'] = 'disabled' #prevent multiple presses
     self.master.update() #prob extranious
     resp = 0
     if not self.jmprButton['text'][-1]=="N": #jumper status
         util.DEVICE_ID = long(self.did.get())
         util.JMP = 0
     else:
         util.DEVICE_ID = ds['id']
     s['port'] = int(self.com.get()[-1])-1 #COM port num
     ser = modbus.openConn(s)
     if ser:
         print "getting units.."
         resp = modbus.getUnits(ser)
         ser.close()
     if resp:
         print "units: "
         readunits = resp[6:26]
         print readunits
         chunks = len(readunits)
         numsize = 2
         units=[readunits[i:i+numsize] for i in range(0,chunks,numsize)]
         print units
         self.pot.set(self.po['values'][int(units[6],16)%3])
         self.fru.set(self.fr['values'][int(units[0],16)%3])
         self.eru.set(self.er['values'][(int(units[1],16)-3)%4])
         self.mfru.set(self.mf['values'][(int(units[2],16)-7)%2])
         self.ftu.set(self.ft['values'][(int(units[3],16)-9)%3])
         selection = (int(units[4],16)-12)
         if selection==5:
             self.etu.set(self.et['values'][3])
         else:
             self.etu.set(self.et['values'][selection%3])
         self.mtu.set(self.mt['values'][(int(units[5],16)-15)%2])
         self.tou.set(self.to['values'][int(units[7],16)%2])
         self.met.set(self.me['values'][int(units[8],16)])
         per=str(int(units[9],16)) #since 2 digits must specify hex
         self.peg.set(per)
         self.ppg.set(per)
         self.mediaf(util.root)
     if not resp:
         print "units failed"
         
     self.retreive['state'] = 'enabled'
Exemplo n.º 10
0
 def apply(self):
     
     util.errlvl=4
     data = dict()
     data['baudrate'] = long(self.br.get())
     data['slave id'] = long(self.did.get())
     data['parity'] = self.parity['values'].index(self.par.get())
     data['flow rate units'] = self.fr['values'].index(self.fru.get())
     data['energy rate units'] = self.er['values'].index(self.eru.get())+3
     data['mass flow rate units'] = self.mf['values'].index(self.mfru.get())+7
     data['flow total units'] = self.ft['values'].index(self.ftu.get())+9
     data['energy total units'] = self.et['values'].index(self.etu.get())+12
     if data['energy total units']==15:
         data['energy total units'] = 17
     data['mass total units'] = self.mt['values'].index(self.mtu.get())+15
     data['pulse output'] = self.po['values'].index(self.pot.get())
     data['pulse output source'] = self.pulos['values'].index(self.pos.get())
     data['temperature units'] = self.to['values'].index(self.tou.get())
     data['media type'] = self.me['values'].index(self.me.get())
     if self.esb["state"]=="normal":
         data['per cent'] = long(self.peg.get())
     elif self.didi["state"]=="normal":
         data['per cent'] = long(self.ppg.get())
     else:
         data['per cent'] = 10
     
     #Check for jumper and setup comm
     if not self.jmprButton['text'][-1]=="N":
         util.DEVICE_ID = data['slave id']
         #util.PARITY = 'NOE'[data['parity']]
         #util.BAUDRATE = data['baudrate']
         util.JMP = 0
     else:
         util.DEVICE_ID = ds['id']
         s['parity'] = ds['parity']
         s['baud'] = ds['baud']
         
     #set defaults
     defaults.set("Settings","id",str(self.did.get()))
     defaults.set("Settings","br",str(self.br.get()))
     defaults.set("Settings","pa",str(self.parity['values'].index(self.par.get())))
     defaults.set("Settings","fr",str(self.fr['values'].index(self.fru.get())))
     defaults.set("Settings","er",str(self.er['values'].index(self.eru.get())))
     defaults.set("Settings","mf",str(self.mf['values'].index(self.mfru.get())))
     defaults.set("Settings","ft",str(self.ft['values'].index(self.ftu.get())))
     defaults.set("Settings","et",str(self.et['values'].index(self.etu.get())))
     defaults.set("Settings","mt",str(self.mt['values'].index(self.mtu.get())))
     defaults.set("Settings","po",str(self.po['values'].index(self.pot.get())))
     defaults.set("Settings","pulos",str(self.pulos['values'].index(self.pulos.get())))
     defaults.set("Settings","to",str(self.to['values'].index(self.tou.get())))
     defaults.set("Settings","me",str(default["me"]))
     defaults.set("Settings","peg",str(default["peg"]))
     defaults.set("Settings","ppg",str(default["ppg"]))
     
     s['port'] = int(self.com.get()[-1])-1
     ser = modbus.openConn(s)
     if ser:
         #setup to write
         self.pbar.grid() #place progress bar where apply button is
         self.applyButton.grid_remove() #hide apply button
         self.pbar.start(50)
         self.retreive['state'] = 'disabled' #grey out all buttons b/c not threadsafe
         self.rvf['state'] = 'disabled'
         self.rmf['state'] = 'disabled'
         self.rthe['state'] = 'disabled'
         self.rce['state'] = 'disabled'
         self.gdb['state'] = 'disabled'
         self.logPathButton['state'] = 'disabled'
         if not self.jmprButton['text'][-1]=="N": 
             util.JMP = 0 #if jumper off,use custom comm settings
         self.master.update()
         modbus.setup(self.master,ser,data)
         ser.close()
         self.pbar.stop() #restore gui
         self.pbar.grid_remove()
         self.applyButton.grid()
         self.retreive['state'] = 'enabled'
         self.rvf['state'] = 'enabled'
         self.rmf['state'] = 'enabled'
         self.rthe['state'] = 'enabled'
         self.rce['state'] = 'enabled'
         self.gdb['state'] = 'enabled'
         self.logPathButton['state'] = 'enabled'
Exemplo n.º 11
0
 def apply(self):
     
     util.errlvl=4
     data = dict()
     data['baudrate'] = long(self.br.get())
     data['slave id'] = long(self.did.get())
     data['parity'] = self.parity['values'].index(self.par.get())
     data['flow rate units'] = self.fr['values'].index(self.fru.get())
     data['energy rate units'] = self.er['values'].index(self.eru.get())+3
     data['mass flow rate units'] = self.mf['values'].index(self.mfru.get())+7
     data['flow total units'] = self.ft['values'].index(self.ftu.get())+9
     data['energy total units'] = self.et['values'].index(self.etu.get())+12
     if data['energy total units']==15:
         data['energy total units'] = 17
     data['mass total units'] = self.mt['values'].index(self.mtu.get())+15
     data['pulse output'] = self.po['values'].index(self.pot.get())
     data['pulse output source'] = self.pulos['values'].index(self.pos.get())
     data['temperature units'] = self.to['values'].index(self.tou.get())
     data['media type'] = self.me['values'].index(self.me.get())
     if self.esb["state"]=="normal":
         data['per cent'] = long(self.peg.get())
     elif self.didi["state"]=="normal":
         data['per cent'] = long(self.ppg.get())
     else:
         data['per cent'] = 10
     
     #Check for jumper and setup comm
     if not self.jmprButton['text'][-1]=="N":
         util.DEVICE_ID = data['slave id']
         #util.PARITY = 'NOE'[data['parity']]
         #util.BAUDRATE = data['baudrate']
         util.JMP = 0
     else:
         util.DEVICE_ID = ds['id']
         s['parity'] = ds['parity']
         s['baud'] = ds['baud']
         
     #set defaults
     defaults.set("Settings","id",str(self.did.get()))
     defaults.set("Settings","br",str(self.br.get()))
     defaults.set("Settings","pa",str(self.parity['values'].index(self.par.get())))
     defaults.set("Settings","fr",str(self.fr['values'].index(self.fru.get())))
     defaults.set("Settings","er",str(self.er['values'].index(self.eru.get())))
     defaults.set("Settings","mf",str(self.mf['values'].index(self.mfru.get())))
     defaults.set("Settings","ft",str(self.ft['values'].index(self.ftu.get())))
     defaults.set("Settings","et",str(self.et['values'].index(self.etu.get())))
     defaults.set("Settings","mt",str(self.mt['values'].index(self.mtu.get())))
     defaults.set("Settings","po",str(self.po['values'].index(self.pot.get())))
     defaults.set("Settings","pulos",str(self.pulos['values'].index(self.pulos.get())))
     defaults.set("Settings","to",str(self.to['values'].index(self.tou.get())))
     defaults.set("Settings","me",str(default["me"]))
     defaults.set("Settings","peg",str(default["peg"]))
     defaults.set("Settings","ppg",str(default["ppg"]))
     
     s['port'] = int(self.com.get()[-1])-1
     ser = modbus.openConn(s)
     if ser:
         #setup to write
         self.pbar.grid() #place progress bar where apply button is
         self.applyButton.grid_remove() #hide apply button
         self.pbar.start(50)
         self.retreive['state'] = 'disabled' #grey out all buttons b/c not threadsafe
         self.rvf['state'] = 'disabled'
         self.rmf['state'] = 'disabled'
         self.rthe['state'] = 'disabled'
         self.rce['state'] = 'disabled'
         self.gdb['state'] = 'disabled'
         self.logPathButton['state'] = 'disabled'
         if not self.jmprButton['text'][-1]=="N": 
             util.JMP = 0 #if jumper off,use custom comm settings
         self.master.update()
         modbus.setup(self.master,ser,data)
         ser.close()
         self.pbar.stop() #restore gui
         self.pbar.grid_remove()
         self.applyButton.grid()
         self.retreive['state'] = 'enabled'
         self.rvf['state'] = 'enabled'
         self.rmf['state'] = 'enabled'
         self.rthe['state'] = 'enabled'
         self.rce['state'] = 'enabled'
         self.gdb['state'] = 'enabled'
         self.logPathButton['state'] = 'enabled'