Exemplo n.º 1
0
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
Exemplo n.º 2
0
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
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
    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
Exemplo n.º 5
0
 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
Exemplo n.º 6
0
    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
Exemplo n.º 7
0
    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
Exemplo n.º 9
0
    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)
Exemplo n.º 10
0
    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))
Exemplo n.º 12
0
    def encode(self):
        """ Encodes a modbus exception response

        :returns: The encoded exception packet
        """
        return int2byte(self.exception_code)
Exemplo n.º 13
0
    def encode(self):
        """ Encodes a modbus exception response

        :returns: The encoded exception packet
        """
        return int2byte(self.exception_code)