import sys sys.path.append('../') sys.path.append('../../') sys.path.append('../../../') from protocol.ModBus.rtuslave_example import RTUSlave import modbus_tk.defines as cst class HartSimulate(object): def __init__(self): self.rtuSlave = RTUSlave(port = 'COM7', baudrate = 9600, bytesize = 8, parity = 'E', stopbits = 1, xonxoff = 0) self.varAddrList = [x for x in range(4100, 4107) if x % 2 == 0] self.spanAddrList = [4200, 4202] self.writeList = self.varAddrList + self.spanAddrList def start(self): self.rtuSlave.start() try: self.addSlave() except: pass def stop(self): self.rtuSlave.server.stop() def addSlave(self): self.rtuSlave.server.add_slave(1) slave = self.rtuSlave.server.get_slave(1) slave.add_block('4', cst.HOLDING_REGISTERS, 4000, 5000) def readValue(self): valueList = [] for index, address in enumerate(self.writeList): order = 'ABCD' value = self.rtuSlave.readValue(1, '4', address, order = order) valueList.append(value) return valueList def writeValue(self, index, value): index = int(index) # if index < 4: value = float(value) order = 'ABCD' # else: # value = int(value) # order = 'int' self.rtuSlave.setValue(1, '4', self.writeList[index], value, order = order) if __name__ == '__main__': a = HartSimulate() a.start() # a.addSlave() a.writeValue(1, 16.5) a.writeValue(3, 1) # print(a.readValue()) # print(a.writeList)