def pack_bitstring(bits): """ Creates a string out of an array of bits :param bits: A bit array example:: bits = [False, True, False, True] result = pack_bitstring(bits) """ ret = b'' i = packed = 0 for bit in bits: if bit: packed += 128 i += 1 if i == 8: ret += int2byte(packed) i = packed = 0 else: packed >>= 1 if 0 < i < 8: packed >>= (7 - i) ret += int2byte(packed) return ret
def pack_bitstring(bits): """ Creates a string out of an array of bits :param bits: A bit array example:: bits = [False, True, False, True] result = pack_bitstring(bits) """ ret = b'' i = packed = 0 for bit in bits: if bit: packed += 128 i += 1 if i == 8: ret += int2byte(packed) i = packed = 0 else: packed >>= 1 if 0 < i < 8: packed >>= (7 - i) ret += int2byte(packed) return ret
def encode(self): ''' Encodes the response :returns: The byte encoded message ''' if self.status: status = ModbusStatus.SlaveOn else: status = ModbusStatus.SlaveOff length = len(self.identifier) + 2 packet = int2byte(length) packet += self.identifier # we assume it is already encoded packet += int2byte(status) return packet
def encode(self): ''' Encodes the response :returns: The byte encoded message ''' if self.status: status = ModbusStatus.SlaveOn else: status = ModbusStatus.SlaveOff length = len(self.identifier) + 2 packet = int2byte(length) packet += self.identifier # we assume it is already encoded packet += int2byte(status) return packet
def encode(self): """ Encodes response pdu :returns: The encoded packet message """ result = int2byte(len(self.values) * 2) for register in self.values: result += struct.pack('>H', register) return result
def encode(self): ''' Encodes the response packet :returns: The encoded packet ''' result = int2byte(len(self.registers) * 2) for register in self.registers: result += struct.pack('>H', register) return result
def encode(self): ''' Encodes the response packet :returns: The encoded packet ''' result = int2byte(len(self.registers) * 2) for register in self.registers: result += struct.pack('>H', register) return result
def encode(self): """ Encodes response pdu :returns: The encoded packet message """ result = int2byte(len(self.values) * 2) for register in self.values: result += struct.pack('>H', register) return result
def _setDelimiter(self, char): ''' This changes the serial delimiter character :param char: The new serial delimiter character ''' if isinstance(char, str): self.__delimiter = char.encode() if isinstance(char, bytes): self.__delimiter = char elif isinstance(char, int): self.__delimiter = int2byte(char)
def _setDelimiter(self, char): ''' This changes the serial delimiter character :param char: The new serial delimiter character ''' if isinstance(char, str): self.__delimiter = char.encode() if isinstance(char, bytes): self.__delimiter = char elif isinstance(char, int): self.__delimiter = int2byte(char)
def test_pymodbus_crc(): import pymodbus.utilities from pymodbus.compat import int2byte meins = [] meins.append(0x10) meins.append(0x33) meins.append(0x01) meins.append(0x01) meins1 = b'' for i in meins: meins1 = meins1 + int2byte(i) meins2 = b'\x10\x33\x01\x01' meins3 = bytearray.fromhex("10330101") crc = hex(pymodbus.utilities.computeCRC(b'\x10\x33\x01\x01')) print(crc) crc = hex(pymodbus.utilities.computeCRC(meins)) print(crc) crc = hex(pymodbus.utilities.computeCRC(meins1)) print(crc) crc = hex(pymodbus.utilities.computeCRC(meins2)) print(crc) crc = hex(pymodbus.utilities.computeCRC(meins3)) print(crc) # xihe = "081000000001020100CD90" xihe = "081000000001020100" xihe_bytes = bytes.fromhex(xihe) xihe_bytearray = bytearray.fromhex(xihe) crc = hex(pymodbus.utilities.computeCRC(xihe_bytearray)) print(xihe_bytearray) print(crc) print(type(crc))
def encode(self): """ Encodes a modbus exception response :returns: The encoded exception packet """ return int2byte(self.exception_code)
def encode(self): """ Encodes a modbus exception response :returns: The encoded exception packet """ return int2byte(self.exception_code)