#!/usr/bin/python3 # -*- coding: utf-8 -*- from time import sleep from huskylensPythonLibrary import HuskyLensLibrary from base64 import b16decode b16_table = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', 'A', 'B', 'C', 'D', 'E', 'F'] hu = HuskyLensLibrary("I2C", "", address=0x32) encode_str = '' control_flag = 0 while 1: ret_learned = hu.command_request_blocks_learned() if len(ret_learned) == 10: # 返回的顺序不合要求,自行排序 ret_learned.sort(key=lambda x: x[1]) ret1 = sorted(ret_learned[:4], key=lambda x: x[0]) ret2 = sorted(ret_learned[4:8], key=lambda x: x[0]) ret3 = ret_learned[-2:] ret_learned = ret1 + ret2 + ret3 if ret_learned[-1][4] == 18: continue elif ret_learned[-1][4] == 20: # 最后一位是控制位,20是停止位标签 break pass elif ret_learned[-1][4] == 19: # 19表示开始 # 如果接收信息,ret_learned的长度应该是 10 if control_flag != ret_learned[8][4]: # index 8 是控制位 for rec in ret_learned[:-2]: # 第index 4 位是标签,前面的0-3是矩形框位置 # 这里为了方便计算,就不判断位置了 encode_str = encode_str + b16_table[rec[4]] control_flag = ret_learned[8][4] # index 8 是控制位 sleep(0.3) print(b16decode(encode_str).decode('utf-8'))