def readMeasurements(self): if self.dataReady(): hr = self.client.read_holding_registers(self.REG_READING,6, unit=self.SLAVE) if len(hr.registers) == 6: word = hr.registers[0] self.data[0] = word >> 8 self.data[1] = word & 0x00FF word = hr.registers[1] self.data[2] = word >> 8 self.data[3] = word & 0x00FF self.readings[0] = Converter.bytesToFloat(True, self.data) word = hr.registers[2] self.data[0] = word >> 8 self.data[1] = word & 0x00FF word = hr.registers[3] self.data[2] = word >> 8 self.data[3] = word & 0x00FF self.readings[1] = Converter.bytesToFloat(True, self.data) word = hr.registers[4] self.data[0] = word >> 8 self.data[1] = word & 0x00FF word = hr.registers[5] self.data[2] = word >> 8 self.data[3] = word & 0x00FF self.readings[2] = Converter.bytesToFloat(True, self.data) # print("CO2 : {0:.2f}".format(readings[0])) # print("Temperature : {0:.2f}".format(readings[1])) # print("R.H. : {0:.2f}".format(readings[2])) # print("") return self.readings
# Convert to little endian byte array - call as static method data = Converter.floatToBytes(False, f) print("L.E. bytes : {0:X}{1:X}{2:X}{3:X}".format(data[0], data[1], data[2], data[3])) # 12.34 in big endian format datain = [0x41, 0x45, 0x70, 0xA4] print() print("Hex to Float") print("------------") print("B.E. bytes : {0:X}{1:X}{2:X}{3:X}".format(datain[0], datain[1], datain[2], datain[3])) # convert to big endian data to float - call as instance method f = conv.bytesToFloat(True, datain) print("B.E. float : {0}".format(f)) # 12.34 in little endian format datain = [0xA4, 0x70, 0x45, 0x41] print("L.E. bytes : {0:X}{1:X}{2:X}{3:X}".format(datain[0], datain[1], datain[2], datain[3])) # convert to big endian data to float - call as static method f = Converter.bytesToFloat(False, datain) print("L.E. float : {0}".format(f))