def read_input_registers(self, slave_addr, starting_address=0, register_quantity=10, signed=True): register_value = list(range(6)) modbus_pdu = uModBusFunctions.read_input_registers( starting_address, register_quantity) #resp_data=bytearray(b'\t%\x00Z\x00\x00\x00d\x00\x00\x00\x19\x00\x00\x01\xf4\x00/\x00\x00') resp_data = self._send_receive(modbus_pdu, slave_addr, True) register_value[0] = int.from_bytes(resp_data[0:2], 'big') * 0.1 #1LSB 0.1V register_value[1]=(int.from_bytes(resp_data[2:4],'big') \ + int.from_bytes(resp_data[4:6],'big')*65536) \ * 0.001 #1LSB 0.001A register_value[2]=(int.from_bytes(resp_data[6:8],'big') \ + int.from_bytes(resp_data[8:10],'big')*65536) \ * 0.1 #1LSB 0.1W register_value[3]=(int.from_bytes(resp_data[10:12],'big') \ + int.from_bytes(resp_data[12:14],'big')*65536) \ * 1 #1LSB 1Wh register_value[4] = int.from_bytes(resp_data[14:16], 'big') * 0.1 #1LSB 0.1Hz register_value[5] = int.from_bytes(resp_data[16:18], 'big') * 0.01 #1LSB 0.01V return register_value
def read_input_registers(self, slave_addr, starting_address, register_quantity, signed=True): modbus_pdu = functions.read_input_registers(starting_address, register_quantity) resp_data = self._send_receive(modbus_pdu, slave_addr, True) register_value = self._to_short(resp_data, signed) return register_value