''' 功能描述 ''' import math import sensor, image, time, lcd import binascii from Maix import GPIO from machine import Timer, PWM, UART, Timer from fpioa_manager import fm #--------------感光芯片配置 START ------------------- DISTORTION_FACTOR = 1.5 # 设定畸变系数 def init_sensor(): ''' 初始化感光芯片 ''' lcd.init(freq=15000000) #初始化LCD sensor.reset() #复位和初始化摄像头,执行sensor.run(0)停止。 sensor.set_vflip(1) #将摄像头设置成后置方式(所见即所得) # sensor.set_pixformat(sensor.RGB565) # 设置像素格式为彩色 RGB565 sensor.set_pixformat(sensor.GRAYSCALE) # 设置像素格式为灰色 sensor.set_framesize(sensor.QVGA) # 设置帧大小为 QVGA (320x240) sensor.skip_frames(time = 2000) # 等待设置生效. clock = time.clock() # 创建一个时钟来追踪 FPS(每秒拍摄帧数) init_sensor() #--------------感光芯片配置 END ------------------- #--------------串口UART部分 START ------------------- #映射串口引脚 fm.register(6, fm.fpioa.UART1_RX, force=True) fm.register(7, fm.fpioa.UART1_TX, force=True) #初始化串口 uart = UART(UART.UART1, 115200, read_buf_len=4096) def get_symbol(num): ''' 根据数值正负,返回数值对应的符号 正数: ‘+’, 负数‘-’ 主要为了方便C语言解析待符号的数值。 ''' if num >=0: return ord('+') else: return ord('-') def UsartSend(str_data): ''' 串口发送函数 ''' uart.write(str_data) #--------------串口UART部分 END ------------------- #--------------二维码识别部分 START ------------------- def QR_Check(): ''' 二维码函数 ''' res = img.find_qrcodes() # 寻找二维码 if len(res) > 0: # 在图片和终端显示二维码信息 img.draw_rectangle(res[0].rect()) img.draw_string(2,2, res[0].payload(), color=(0,128,0), scale=2) print(res[0].payload()) uart.write(bytes([0x55])) uart.write(bytes([0x92])) uart.write(bytes([0x01])) uart.write(bytes([len(res[0].payload())])) for qrdata in res[0].payload(): uart.write(bytes([ord(qrdata)])) #print(chr(ord(qrdata))) uart.write(bytes([0xbb])) #--------------二维码识别部分 END ------------------- #---------------------MAIN----------------------- #将蓝灯引脚IO12配置到GPIO0,K210引脚支持任意配置 fm.register(12, fm.fpioa.GPIO0) LED_B = GPIO(GPIO.GPIO0, GPIO.OUT) #构建LED对象 while True: LED_B.value(0) #点亮LED # 串口数据接收判断 data = uart.read(8) if data is not None: print(data) print(len(data)) print(binascii.hexlify(data).decode('utf_8')) if(len(data) >= 8): if((data[1] == 0x02)&(data[7] == 0xBB)): if(data[2] == 0x92): print("识别二维码") if(data[3] == 0x01): print("开始识别") if(data[3] == 0x02): print("停止识别") # 拍摄图片 img = sensor.snapshot() # 去除图像畸变 img.lens_corr(DISTORTION_FACTOR) # 二维码识别 QR_Check() # 在LCD上显示 lcd.display(img)