Esempio n. 1
0
    def get_f1002_received_data(self) -> (str, int):
        """

        :return:f1002 respond packet
        """
        try:
            # 写数据
            result = self.ser.write(Converter.hex_array2bytes(self.f1002_packet))
            print("写总字节数:", result)

        except Exception as e:
            print("---异常---:", e)
        trans_data = ''

        while True:
            num = 0
            try:
                num = self.ser.inWaiting()
            except Exception as e:
                print(e)
            if num > 0:
                print(num)
                data = self.ser.read(num)
                for i in range(0, len(data)):
                    tmp_data = '{:02X}'.format(data[i])
                    trans_data = trans_data + tmp_data
                    if tmp_data == '16':
                        leng = Converter.reversed_hex2int(trans_data[-34:-26])
                        return trans_data, leng
Esempio n. 2
0
    def construct_f1002(filename: str) -> str:
        """

        :param filename:
        :return:hex f1002 packet of file
        """
        return FPacket(Converter.str2reversed_space_hex(filename)).get_assemble_packet()
Esempio n. 3
0
    def file_receive(self) -> None:
        """
        this is to send f1003 packet to get file data
        append packet file data to instance filed ata filed
        :return:
        """
        offset_ = 0
        print(self.file_size)
        left_data_size = self.file_size
        all_count = 0
        while left_data_size > 0:
            if 0 < left_data_size <= 1000:
                epacket = SerialClient.construct_f1003(self.filename, offset_, left_data_size)
                left_data_size -= left_data_size
            else:
                epacket = SerialClient.construct_f1003(self.filename, offset_, 1000)
                offset_ += 1000
                left_data_size -= 1000
            try:
                # 写数据
                result = self.ser.write(Converter.hex_array2bytes(epacket.get_assemble_packet()))
                print(epacket.get_assemble_packet())
                print("写总字节数:", result)
            except Exception as e:
                print("---异常---:", e)
            trans_data = ''

            FLAG = True
            sleep_flag = True
            while FLAG:
                if sleep_flag:
                    time.sleep(1)
                    sleep_flag = False
                try:
                    num = self.ser.inWaiting()
                except Exception as e:
                    FLAG = False
                    print(e)
                if num > 0:
                    print('num', num)
                    data = self.ser.read(num)
                    for i in range(0, len(data)):
                        tmp_data = '{:02X}'.format(data[i])
                        trans_data = trans_data + tmp_data
                if num == 0:
                    all_count += len(trans_data[48:-4])
                    data_serial = re.findall('.{2}', trans_data[48:-4])[::-1]
                    final_data = ''.join(data_serial)
                    print(' '.join(data_serial))
                    f = open('append.txt', 'a+')
                    f.write(final_data)
                    f.close()
                    FLAG = False
                # if num > 0:
                #     this_count+=num
                #     data = self.ser.read(num)
                #     for i in range(0, len(data)):
                #         tmp_data = '{:02X}'.format(data[i])
                #         trans_data = trans_data + tmp_data
                #         if tmp_data == '16':
                #             print(trans_data,this_count)
                #             all_count += len(trans_data[48:-4])
                #             data_serial = re.findall('.{2}', trans_data[48:-4])[::-1]
                #             final_data = ''.join(data_serial)
                #             f = open('append.txt', 'a+')
                #             f.write(final_data)
                #             f.close()
                #             FLAG = False
            print(all_count, left_data_size, 'result')
Esempio n. 4
0
    def construct_f1003(filename: str, offset: int, packet_size: int) -> EPacket:
        """
        :return:EPacket
        """

        return EPacket(Converter.str2reversed_space_hex(filename), offset, packet_size)
Esempio n. 5
0
    ser = None
    try:
        # 端口,GNU / Linux上的/ dev / ttyUSB0 等 或 Windows上的 COM3 等
        portx = "COM3"
        # 波特率,标准值之一:50,75,110,134,150,200,300,600,1200,1800,2400,4800,9600,19200,38400,57600,115200
        bps = 9600
        # 超时设置,None:永远等待操作,0为立即返回请求结果,其他值为等待超时时间(单位为秒)
        timex = 60
        # 打开串口,并得到串口对象
        ser = serial.Serial(portx, bps,timeout=timex)
        ser.parity = 'E'
    except Exception as e:
        print(e)
    try:
        # 写数据
        result = ser.write(Converter.hex_array2bytes(
            '68 9e 00 9e 00 68 4b 02 37 02 00 06 0c 71 00 00 04 7d 13 00 68 73 2e 6b 63 65 68 63 2f 6c 61 63 6f 6c 2f 74 6e 6d 2f 00 00 00 00 e8 03 76 16'))
        print("写总字节数:", result)

    except Exception as e:
        print("---异常---:", e)
    trans_data = ''

    while True:
        num = 0
        try:
            num = ser.inWaiting()
        except Exception as e:
            print(e)
        count = 0
        if num > 0:
            print(num)
Esempio n. 6
0
 def connection_made(self, transport):
     self.transport = transport
     print('port opened', transport)
     transport.serial.rts = False
     transport.write(Converter.hex_array2bytes(
         '68 9e 00 9e 00 68 4b 02 37 02 00 06 0c 71 00 00 04 7d 13 00 68 73 2e 6b 63 65 68 63 2f 6c 61 63 6f 6c 2f 74 6e 6d 2f 00 00 00 00 e8 03 76 16'))
Esempio n. 7
0
        final_hex_str = hex_str.rjust(4, '0')
        fhs_array = re.findall('.{2}', final_hex_str)
        return ' '.join(fhs_array[::-1])

    @staticmethod
    def get_crc32(s: str) -> str:
        """

        :param s:
        :return:hex str of crc
        """
        s_list = s.split(' ')
        hex_list = [int('0x' + x, 16) for x in s_list]
        return str(hex(sum(hex_list)))[-2:]

    @staticmethod
    def get_data_len_field(data: str) -> str:
        bytes_len = len(data.split(' '))
        bin_shift_len = bin(bytes_len)[2:] + '10'
        hex_str = hex(int(bin_shift_len, 2))[2:]
        final_hex_str = hex_str.rjust(4, '0')
        fhs_array = re.findall('.{2}', final_hex_str)
        return ' '.join(fhs_array[::-1])


if __name__ == '__main__':
    # 实例化类
    packet = FPacket(
        Converter.str2reversed_space_hex('/mnt/local/version.inf'))
    print(packet.get_assemble_packet())
Esempio n. 8
0
        :param val:
        :return:reversed hex str of offset
        """
        hex_str = hex(val)[2:]
        final_hex_str = hex_str.rjust(8, '0')
        fhs_array = re.findall('.{2}', final_hex_str)
        return ' '.join(fhs_array[::-1])

    @staticmethod
    def get_reversed_packet_len(val: int) -> str:
        """

        :param val:
        :return: reversed hex str of packet len
        """
        hex_str = hex(val)[2:]
        final_hex_str = hex_str.rjust(4, '0')
        fhs_array = re.findall('.{2}', final_hex_str)
        return ' '.join(fhs_array[::-1])


if __name__ == '__main__':
    # 实例化类
    test = EPacket(Converter.str2reversed_space_hex('/mnt/local/sge800app'), 0,
                   1000)
    print(test.get_data_field())
    print(test.get_assemble_packet())
    # packet = EPacket(Converter.str2reversed_space_hex('/mnt/local/start.sh'))
    # print(packet.get_assemble_packet())
Esempio n. 9
0
def file_name(file_dir):
    files = []
    count = 1
    child_path = []
    for root, dirs, file_names in os.walk(file_dir):
        # print(root)  # 当前目录路径

        if count == 1:
            files.extend(file_names)
            child_path = dirs
        else:
            files.extend([(child_path[count - 2] + '/' + x)
                          for x in file_names])
            # files.extend([os.path.join(child_path[count - 2], x) for x in file_names])
        count += 1
    return files


if __name__ == '__main__':
    # ans = file_name('C:\\Users\\23303\\Desktop\\电表项目\\集中器U盘安装包\\install\sge800app')
    # ans = file_name('C:\\Users\\23303\\Desktop\\电表项目\\5.项目文档\\集中器程序目标码')
    ans = file_name(
        'C:\\Users\\23303\\Desktop\\集中器U盘安装包20190520\\集中器U盘安装包20190520\\install\\sge800app'
    )
    print(ans)
    file_list = ['/mnt/local/' + x for x in ans]
    print(file_list)
    for x in file_list:
        path = Converter.str2reversed_space_hex(x)
        print(FPacket(path).get_assemble_packet(), '  path: ' + path, x)
Esempio n. 10
0
        trans_data = trans_data + tmp_data
    return trans_data


if __name__ == '__main__':
    bind_ip = '192.168.100.102'
    bind_port = 7020

    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server.bind((bind_ip, bind_port))
    server.listen(10)  # max backlog of connections
    newSocket, clientAddr = server.accept()
    print(newSocket)

    newSocket, clientAddr = server.accept()
    print('ok')
    print(unicode2hex_str(newSocket.recv(1024)))
    answer_data = '68 32 00 32 00 68 40 02 37 02 00 06 00 60 00 00 01 00 e2 16'
    newSocket.send(Converter.hex_array2bytes(answer_data))
    # print(unicode2hex_str(newSocket.recv(1024)))
    f1002 = '68 8a 00 8a 00 68 4b 02 37 02 00 06 0c 71 00 00 02 7d 14 00 70 70 61 30 30 38 65 67 73 2f 6c 61 63 6f 6c 2f 74 6e 6d 2f 9b 16'
    newSocket.send(Converter.hex_array2bytes(f1002))
    print(unicode2hex_str(newSocket.recv(2048)))
    while True:
        data = newSocket.recv(1024)
        sendData = ''
        newSocket.send(Converter.hex_array2bytes(sendData))
        print(unicode2hex_str(data))

    # print(recvData)