Beispiel #1
0
 def run(self):
     self.connectTibbo()
     self.connectSelf()
     self.sServer.send(
         pack('!L', self.id) + '\x00\x00\x00\xFF' + '\x00\x00\x00\x00')
     dat = readin_strict(self.sServer, 2)
     if dat != '\x01\x00':
         raise Exception, 'No 1-0 combo'
     while True:
         data = self.readpacket_server()
         if data[0] == '\x03':  # GET HOLDING RET ERROR
             register = ord(data[1]) * 256 + ord(data[2])
             modbus = ord(data[3])
             dat = self.modbus.generateREAD_HOLDING(modbus, register)
             self.sTibbo.send(dat)
             sdt = readin_strict(self.sTibbo, 7)
             val = self.modbus.parseREAD_HOLDING(sdt, modbus, register)
             self.sServer.send('\x03\x00' + chr(val // 256) +
                               chr(val & 255))
         elif data[0] == '\x04':  # GET COIL RET ERROR
             register = ord(data[1]) * 256 + ord(data[2])
             modbus = ord(data[3])
             dat = self.modbus.generateREAD_COIL(modbus, register)
             self.sTibbo.send(dat)
             sdt = readin_strict(self.sTibbo, 6)
             val = self.modbus.parseREAD_COIL(sdt, modbus, register)
             self.sServer.send('\x02\x00' + chr(val))
         elif data[0] == '\x05':  # WRITE HOLDING
             register = ord(data[1]) * 256 + ord(data[2])
             value = ord(data[3]) * 256 + ord(data[4])
             address = ord(data[5])
             dat = self.modbus.generateWRITE_HOLDING(
                 address, register, value)
             self.sTibbo.send(dat)
             sdt = readin_strict(self.sTibbo, 8)
             self.modbus.parseWRITE_HOLDING(sdt, address, register)
             self.sServer.send('\x02\x00\x00')
             readin_strict(self.sTibbo, 1)
         elif data[0] == '\x06':  # WRITE COIL
             register = ord(data[1]) * 256 + ord(data[2])
             value = ord(data[3])
             address = ord(data[4])
             dat = self.modbus.generateWRITE_COIL(address, register, value)
             self.sTibbo.send(dat)
             sdt = readin_strict(self.sTibbo, 8)
             self.modbus.parseWRITE_COIL(sdt, address, register)
             self.sServer.send('\x02\x00\x00')
             readin_strict(self.sTibbo, 1)
         else:
             raise Exception, 'Invalid data recv'
Beispiel #2
0
 def run(self):
     self.connectTibbo()
     self.connectSelf()
     self.sServer.send(pack('!L', self.id)+'\x00\x00\x00\xFF'+'\x00\x00\x00\x00')
     dat = readin_strict(self.sServer, 2)
     if dat != '\x01\x00':
         raise Exception, 'No 1-0 combo'
     while True:
         data = self.readpacket_server()
         if data[0] == '\x03':           # GET HOLDING RET ERROR
             register = ord(data[1])*256 + ord(data[2])
             modbus = ord(data[3])
             dat = self.modbus.generateREAD_HOLDING(modbus, register)
             self.sTibbo.send(dat)
             sdt = readin_strict(self.sTibbo, 7)
             val = self.modbus.parseREAD_HOLDING(sdt, modbus, register)
             self.sServer.send('\x03\x00'+ chr(val // 256) + chr(val & 255))
         elif data[0] == '\x04':           # GET COIL RET ERROR
             register = ord(data[1])*256 + ord(data[2])
             modbus = ord(data[3])
             dat = self.modbus.generateREAD_COIL(modbus, register)
             self.sTibbo.send(dat)
             sdt = readin_strict(self.sTibbo, 6)
             val = self.modbus.parseREAD_COIL(sdt, modbus, register)
             self.sServer.send('\x02\x00'+ chr(val))
         elif data[0] == '\x05':           # WRITE HOLDING
             register = ord(data[1])*256 + ord(data[2])
             value = ord(data[3])*256 + ord(data[4])
             address = ord(data[5])
             dat = self.modbus.generateWRITE_HOLDING(address, register, value)
             self.sTibbo.send(dat)
             sdt = readin_strict(self.sTibbo, 8)
             self.modbus.parseWRITE_HOLDING(sdt, address, register)
             self.sServer.send('\x02\x00\x00')
             readin_strict(self.sTibbo, 1)
         elif data[0] == '\x06':           # WRITE COIL
             register = ord(data[1])*256 + ord(data[2])
             value = ord(data[3])
             address = ord(data[4])
             dat = self.modbus.generateWRITE_COIL(address, register, value)
             self.sTibbo.send(dat)
             sdt = readin_strict(self.sTibbo, 8)
             self.modbus.parseWRITE_COIL(sdt, address, register)
             self.sServer.send('\x02\x00\x00')
             readin_strict(self.sTibbo, 1)
         else:
             raise Exception, 'Invalid data recv'
Beispiel #3
0
 def readpacket_server(self):
     dt = ord(readin_strict(self.sServer, 1))
     return readin_strict(self.sServer, dt)
Beispiel #4
0
 def readpacket_server(self):
     dt = ord(readin_strict(self.sServer, 1))
     return readin_strict(self.sServer, dt)