Embedded_game/002_B_Car/百科融创/main.py
2025-01-02 12:48:11 +08:00

123 lines
3.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

'''
功能描述
'''
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配置到GPIO0K210引脚支持任意配置
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)