def ModbusWrite(): try: try: modbus = ModbusProtocol(updatecallback=RegisterResults, address=modbusaddress, name=device, rate=baudrate, Parity=parity, OnePointFiveStopBits=OnePointFiveStopBits) except Exception as e1: print("Test all: Error opening serial device...: " + str(e1)) return False LowByte = writevalue & 0x00FF HighByte = writevalue >> 8 Data = [] Data.append(HighByte) # Value for register (High byte) Data.append(LowByte) # Value for register (Low byte) RegStr = "%04x" % startregister modbus.ProcessMasterSlaveWriteTransaction(RegStr, len(Data) / 2, Data) DisplayComErrors(modbus) except Exception as e1: print("Error write device: " + str(e1)) return False return True
def TestAllAddresses(): try: modbus = ModbusProtocol(updatecallback=RegisterResults, address=0, name=device, rate=baudrate, Parity=parity, OnePointFiveStopBits=OnePointFiveStopBits) except Exception as e1: print("Test all: Error opening serial device...: " + str(e1)) return False try: for Address in range(0, 0x100): modbus.Address = Address print("Testing modbus address %02x" % Address) for Reg in range(startregister, endregister): RegStr = "%04x" % Reg modbus.ProcessTransaction(RegStr, 1) DisplayComErrors(modbus) except Exception as e1: print("Error reading device: " + str(e1)) return False return True
try: modbus = None if writevalue != None and modbusaddress != "all": if not ModbusWrite(): sys.exit(2) elif modbusaddress != "all": try: if not useTCP: modbus = ModbusProtocol( updatecallback=RegisterResults, address=modbusaddress, name=device, rate=baudrate, Parity=parity, OnePointFiveStopBits=OnePointFiveStopBits) else: modbus = ModbusProtocol(updatecallback=RegisterResults, address=modbusaddress, host=hostIP, port=TCPport) except Exception as e1: print("Error opening serial device...: " + str(e1)) sys.exit(2) try: for Reg in range(startregister, endregister): RegStr = "%04x" % Reg modbus.ProcessTransaction(RegStr, 1)
if not stopbits == None: OnePointFiveStopBits = True else: OnePointFiveStopBits = False if not parity == None: if not parity == 1 and not parity == 2: print(HelpStr) sys.exit(2) modbus = None try: modbus = ModbusProtocol(RegisterResults, modbusaddress, device, baudrate, Parity=parity, OnePointFiveStopBits=OnePointFiveStopBits) pass except Exception as e1: print("Error opening serial device...: " + str(e1)) sys.exit(2) try: for Reg in range(startregister, endregister): RegStr = "%04x" % Reg modbus.ProcessMasterSlaveTransaction(RegStr, 1) except Exception as e1: print("Error reading device: " + str(e1)) sys.exit(2) print("OK")