|
@@ -1,568 +1,590 @@
|
|
|
-#!/usr/bin/env python
|
|
|
-#version : 2024.08.08
|
|
|
-#language : zh
|
|
|
-#hardware : pi
|
|
|
-import time
|
|
|
-from maix import *
|
|
|
-import gc
|
|
|
-import os,sys
|
|
|
-import sys
|
|
|
-sys.path.append('/root/')
|
|
|
-from CocoPi import BUTTON
|
|
|
-from CocoPi import stm8s
|
|
|
-from CocoPi import multiFuncGpio
|
|
|
-from CocoPi import singleRgb
|
|
|
-from CocoPi import LED
|
|
|
-
|
|
|
-gc.enable()
|
|
|
-gc.collect()
|
|
|
-iic_slaver=stm8s()
|
|
|
-iic_slaver.clear()
|
|
|
-PIXEL_LED1= multiFuncGpio(0,7)
|
|
|
-PIXEL_LED2= multiFuncGpio(1,7)
|
|
|
-PIXEL_LED1.pixelInit_()
|
|
|
-PIXEL_LED2.pixelInit_()
|
|
|
-time.sleep(0.1)
|
|
|
-L1=singleRgb()
|
|
|
-L1.setColor(0,0,0)
|
|
|
-L1.show()
|
|
|
-time.sleep(0.1)
|
|
|
-L2=LED()
|
|
|
-L2.out(0)
|
|
|
-del iic_slaver
|
|
|
-del PIXEL_LED1
|
|
|
-del PIXEL_LED2
|
|
|
-del L1
|
|
|
-del L2
|
|
|
-
|
|
|
-count = 0
|
|
|
-
|
|
|
-def gc_log():
|
|
|
- global count
|
|
|
- gc.collect()
|
|
|
- count = count + 1
|
|
|
-
|
|
|
-splash_theme_color = (15,21,46)
|
|
|
-btn_selected = (255,255,255)
|
|
|
-btn_unselected = (76,86,127)
|
|
|
-txt_selected = (255,255,255)
|
|
|
-txt_unselected = (76,86,127)
|
|
|
-color_splash_theme = (15,21,46)
|
|
|
-color_blue = (31,61,185)
|
|
|
-color_blue_lighter = (60,131,211)
|
|
|
-color_white = (255,255,255)
|
|
|
-color_gray = (60,73,126)
|
|
|
-color_orange = (255,165,0)
|
|
|
-color_red = (255,0,0)
|
|
|
-
|
|
|
-
|
|
|
-btn_width = 134
|
|
|
-btn_height = 52
|
|
|
-btn_y_base = 5
|
|
|
-btn_col = (btn_y_base, btn_y_base+btn_width, btn_y_base+152)
|
|
|
-btn_row = 180
|
|
|
-
|
|
|
-main_title = (
|
|
|
- "运行",
|
|
|
- "上次程序",
|
|
|
- "打开",
|
|
|
- "样例菜单",
|
|
|
- "B",
|
|
|
- "A"
|
|
|
- )
|
|
|
-splash_text = (
|
|
|
- "系统版本: 2024-08-08 ",
|
|
|
- "System version: N/A",
|
|
|
- "2. 加载程序后,按下A键两秒退出程序界面.",
|
|
|
- " ",
|
|
|
- " ",
|
|
|
- "启动上次程序中...",
|
|
|
- "错误: 未找到程序...",
|
|
|
- "错误: 语法有误",
|
|
|
- "正在打开样例菜单...",
|
|
|
- "未找到样例菜单.",
|
|
|
- "运行",
|
|
|
- "加载...",
|
|
|
- "返回",
|
|
|
- "按下C键返回主界面",
|
|
|
- "按下D键重启",
|
|
|
- "按下B键关机",
|
|
|
- "1. 按下A键七秒来关闭或者重启CocoPi系统.",
|
|
|
- " ",
|
|
|
- " ",
|
|
|
- "CocoPi V6",
|
|
|
- "/ Linux / AIot /Python /",
|
|
|
- "/Graphical programming /",
|
|
|
- "------------- 基础 --------------",
|
|
|
- "----------- 人工智能 ----------",
|
|
|
- "------------ 物联网 ------------",
|
|
|
- )
|
|
|
-
|
|
|
-title_logo_text = image.open("/root/preset/img/cocorobo_text.jpg")
|
|
|
-iconUpNp = image.open("/root/preset/img/arrow_up_filled.jpg")
|
|
|
-iconUpP = image.open("/root/preset/img/arrow_up_pressed.jpg")
|
|
|
-iconDownNp = image.open("/root/preset/img/arrow_down_filled.jpg")
|
|
|
-iconDownP = image.open("/root/preset/img/arrow_down_pressed.jpg")
|
|
|
-frostedGlass = image.open("/root/preset/img/frostedglass_.jpg")
|
|
|
-#backUp = image.open("/root/preset/img/backup_48x48.png")
|
|
|
-#powerOff = image.open("/root/preset/img/poweroff_48x48.png")
|
|
|
-#reBoot = image.open("/root/preset/img/reboot_48x48.png")
|
|
|
-
|
|
|
-run_user_code_path='/root/user_latest_code.py'
|
|
|
-run_try_demo_path='/root/play_music.py'
|
|
|
-
|
|
|
-
|
|
|
-key_A = BUTTON(14)
|
|
|
-key_B = BUTTON(8)
|
|
|
-key_C = BUTTON(13)
|
|
|
-key_D = BUTTON(7)
|
|
|
-
|
|
|
-splash = image.new(size=(320, 240),mode = "RGB")
|
|
|
-img_drop=image.new(size=(320,240),mode="RGB")
|
|
|
-
|
|
|
-demo_i=0
|
|
|
-demo_j=0
|
|
|
-demo_m=0
|
|
|
-demo_n=0
|
|
|
-pressTime=0
|
|
|
-systemRunNum=0
|
|
|
-
|
|
|
-image.load_freetype("/root/preset/fonts/simhei.ttf")
|
|
|
-def screenFirstPage():
|
|
|
- from maix import display,image,camera
|
|
|
- global splash,title_logo_text,btn_col,btn_row,splash_text,txt_unselected,txt_selected,btn_selected,btn_unselected,\
|
|
|
-splash_theme_color,btn_height,btn_width,main_title,menuSelect,gc_log,demo_i,demo_j,demo_m,demo_n,screenShow,img_drop,\
|
|
|
-frostedGlass
|
|
|
- gc_log()
|
|
|
- image.load_freetype("/root/preset/fonts/simhei.ttf")
|
|
|
- splash.clear()
|
|
|
- splash.draw_rectangle(0,0,320,320,color=splash_theme_color,thickness=-1)
|
|
|
- splash.draw_image(title_logo_text, btn_col[0]+16, 10)
|
|
|
- x, y = image.get_string_size(splash_text[0], 1)
|
|
|
-
|
|
|
- splash.draw_string(btn_col[0]+16, 40, splash_text[19]+" "+splash_text[0], color=(0,255,255), thickness = 1)
|
|
|
-# splash.draw_string(btn_col[0], 60, splash_text[20], color=(0,255,255), thickness = 1)
|
|
|
-# splash.draw_string(btn_col[0], 80, splash_text[21], color=(0,255,255), thickness = 1)
|
|
|
-# splash.draw_string(btn_col[0], 60, splash_text[0], color=(0,255,255), thickness = 1)
|
|
|
- splash.draw_string(btn_col[0]+16, btn_row-105, splash_text[16], color=txt_unselected, thickness = 1)
|
|
|
- splash.draw_string(btn_col[0]+16, btn_row-85, splash_text[17], color=txt_unselected, thickness = 1)
|
|
|
- #splash.draw_string(btn_col[0], btn_row-105, splash_text[18], color=txt_unselected, thickness = 1)
|
|
|
- splash.draw_string(btn_col[0]+16, btn_row-65, splash_text[2], color=txt_unselected, thickness = 1)
|
|
|
- splash.draw_string(btn_col[0]+16, btn_row-45, splash_text[3], color=txt_unselected, thickness = 1)
|
|
|
- splash.draw_string(btn_col[0]+16, btn_row-25, splash_text[4], color=txt_unselected, thickness = 1)
|
|
|
-
|
|
|
- if menuSelect==0:
|
|
|
- splash.draw_rectangle(btn_col[1]+40, btn_row, btn_col[1]+btn_width+42, btn_row+btn_height, color=btn_selected, thickness=1)
|
|
|
- splash.draw_string(btn_col[1]+52, btn_row+7, main_title[2], color=txt_selected, thickness = 1)
|
|
|
- splash.draw_string(btn_col[1]+52, btn_row+27, main_title[3], color=txt_selected, thickness = 1)
|
|
|
- splash.draw_string(btn_col[1]+157, btn_row+27, main_title[5], color=txt_unselected, thickness = 1)
|
|
|
-
|
|
|
- splash.draw_rectangle(btn_col[0], btn_row, btn_col[0]+btn_width, btn_row+btn_height, color=btn_selected, thickness=1)
|
|
|
- splash.draw_string(btn_col[0]+96, btn_row+7, main_title[0], color=txt_selected, thickness = 1)
|
|
|
- splash.draw_string(btn_col[0]+68, btn_row+27, main_title[1], color=txt_selected, thickness = 1)
|
|
|
- splash.draw_string(btn_col[0]+7, btn_row+27, main_title[4], color=txt_unselected, thickness = 1)
|
|
|
-
|
|
|
- if menuSelect==1:
|
|
|
- splash.draw_rectangle(btn_col[0], btn_row, btn_col[0]+btn_width, btn_row+btn_height, color=btn_unselected, thickness=1)
|
|
|
- splash.draw_string(btn_col[0]+7, btn_row+7, main_title[0], color=txt_unselected, thickness = 1)
|
|
|
- splash.draw_string(btn_col[0]+7, btn_row+27, main_title[1], color=txt_unselected, thickness = 1)
|
|
|
-
|
|
|
- splash.draw_rectangle(btn_col[1], btn_row, btn_col[1]+btn_width, btn_row+btn_height, color=btn_selected, thickness=1)
|
|
|
- splash.draw_string(btn_col[1]+7, btn_row+7, main_title[2], color=txt_selected, thickness = 1)
|
|
|
- splash.draw_string(btn_col[1]+7, btn_row+27, main_title[3], color=txt_selected, thickness = 1)
|
|
|
-
|
|
|
- splash.draw_image(frostedGlass, 0, 0,alpha=0.2)
|
|
|
- #screenShow()
|
|
|
- display.show(splash)
|
|
|
-
|
|
|
-def screenSecondPage():
|
|
|
- from maix import display, image,camera
|
|
|
- global splash,title_logo_text,btn_col,btn_row,splash_text,txt_unselected,txt_selected,btn_selected,btn_unselected,\
|
|
|
-splash_theme_color,btn_height,btn_width,main_title,demoSelect,gc_log,color_splash_theme,color_blue,color_blue_lighter,\
|
|
|
-color_white,color_gray,color_orange,color_red,iconUpNp,iconUpP,iconDownNp,iconDownP,demoListText,screenShow,img_drop,\
|
|
|
-frostedGlass
|
|
|
- gc_log()
|
|
|
- image.load_freetype("/root/preset/fonts/simhei.ttf")
|
|
|
- splash.clear()
|
|
|
- splash.draw_rectangle(0,0,320,240,color=splash_theme_color,thickness=-1)
|
|
|
- splash.draw_rectangle(0,0,320,32,color=color_blue,thickness=-1)
|
|
|
- splash.draw_image(iconUpNp, 3, 3)
|
|
|
- splash.draw_image(iconDownNp, 287, 3)
|
|
|
-
|
|
|
- splash.draw_rectangle(0,214,50,240,color=color_blue,thickness=-1)
|
|
|
- splash.draw_rectangle(270,214,320,240,color=color_blue,thickness=-1)
|
|
|
- splash.draw_string(12, 218, splash_text[10], color=(255,255,255), thickness = 1)
|
|
|
- splash.draw_string(282, 218, splash_text[12], color=(255,255,255), thickness = 1)
|
|
|
-
|
|
|
- demo_i=int(demoSelect/6)
|
|
|
- demo_j=demoSelect%6
|
|
|
- demo_m=int(demoNum/6)
|
|
|
- demo_n=demoNum%6
|
|
|
- for j in range(6):
|
|
|
- if demo_i==demo_m:
|
|
|
- if j>=demo_n:
|
|
|
- pass
|
|
|
- else:
|
|
|
- if j==demo_j:
|
|
|
- pass
|
|
|
- else:
|
|
|
- splash.draw_rectangle(0,33+30*j,319,33+30*(j+1),color=color_gray,thickness=1)
|
|
|
- splash.draw_string(8, 39+30*j,demoListText[j+demo_i*6] , color=color_gray, thickness = 1)
|
|
|
- else:
|
|
|
- if j==demo_j:
|
|
|
- pass
|
|
|
- else:
|
|
|
- splash.draw_rectangle(0,33+30*j,319,33+30*(j+1),color=color_gray,thickness=1)
|
|
|
- splash.draw_string(8, 39+30*j,demoListText[j+demo_i*6] , color=color_gray, thickness = 1)
|
|
|
- if demoSelect<13:
|
|
|
- splash.draw_string(72, 10, splash_text[22], color=(255,255,255), thickness = 1)
|
|
|
- elif demoSelect<23:
|
|
|
- splash.draw_string(72, 10, splash_text[23], color=(255,255,255), thickness = 1)
|
|
|
- else:
|
|
|
- splash.draw_string(72, 10, splash_text[24], color=(255,255,255), thickness = 1)
|
|
|
- splash.draw_rectangle(0,33+30*demo_j,319,33+30*(demo_j+1),color=color_white,thickness=1)
|
|
|
- splash.draw_string(8, 39+30*demo_j,demoListText[demoSelect] , color=color_white, thickness = 1)
|
|
|
- splash.draw_string(146, 218, str(demoSelect+1), color=(255,255,255), thickness = 1)
|
|
|
- splash.draw_string(160, 218, "/"+str(demoNum), color=(255,255,255), thickness = 1)
|
|
|
- splash.draw_image(frostedGlass, 0, 0,alpha=0.2)
|
|
|
- #screenShow()
|
|
|
- display.show(splash)
|
|
|
-
|
|
|
-def systemPage():
|
|
|
- from maix import display, image,camera
|
|
|
- import time
|
|
|
- global splash,title_logo_text,btn_col,btn_row,splash_text,txt_unselected,txt_selected,btn_selected,btn_unselected,\
|
|
|
-splash_theme_color,btn_height,btn_width,main_title,demoSelect,gc_log,color_splash_theme,color_blue,color_blue_lighter,\
|
|
|
-color_white,color_gray,color_orange,color_red,iconUpNp,iconUpP,iconDownNp,iconDownP,demoListText,screenShow,img_drop,\
|
|
|
-frostedGlass
|
|
|
- image.load_freetype("/root/preset/fonts/simhei.ttf")
|
|
|
- for i in range(10):
|
|
|
- splash.draw_image(frostedGlass, 0, 0,alpha=0.2)
|
|
|
- #screenShow()
|
|
|
- display.show(splash)
|
|
|
- splash.draw_string(80, 68, splash_text[13], 1,color=(0,255,0), thickness = 1)
|
|
|
- splash.draw_string(80, 118, splash_text[14], 1,color=(255,255,0), thickness = 1)
|
|
|
- splash.draw_string(80, 168, splash_text[15], 1,color=(255,0,0), thickness = 1)
|
|
|
- #splash.draw_image(backUp, 20, 140)
|
|
|
- #screenShow()
|
|
|
- splash.draw_image((image.open("/root/preset/img/backup_00ff00_32x32.png")).rotate(0, adjust=0),40,60,alpha=1)
|
|
|
- splash.draw_image((image.open("/root/preset/img/reboot_ffff00_32x32.png")).rotate(0, adjust=0),40,110,alpha=1)
|
|
|
- splash.draw_image((image.open("/root/preset/img/poweroff_ff0000_32x32.png")).rotate(0, adjust=0),40,160,alpha=1)
|
|
|
-
|
|
|
- display.show(splash)
|
|
|
-
|
|
|
-pageVal=0
|
|
|
-menuSelect=0
|
|
|
-demoSelect=0
|
|
|
-execVal=0
|
|
|
-demoListText=(
|
|
|
- "相机",
|
|
|
- "相册",
|
|
|
- "颜色分析",
|
|
|
- "录音机",
|
|
|
- "音频播放器",
|
|
|
- "播放演示音乐",
|
|
|
- "播放演示视频",
|
|
|
- "秒表计时器",
|
|
|
- "系统时钟显示",
|
|
|
- "舵机操控",
|
|
|
- "电机操控",
|
|
|
- "图片轮播",
|
|
|
- "二维码扫描",
|
|
|
- "人形识别",
|
|
|
- "人脸检测",
|
|
|
- "人脸比对",
|
|
|
- "物体识别",
|
|
|
- "边缘检测",
|
|
|
- "手写数字识别",
|
|
|
- "车牌识别",
|
|
|
- "口罩识别",
|
|
|
- "手势识别",
|
|
|
- "猜拳识别",
|
|
|
- "扫码连接WIFI",
|
|
|
- "关于CocoPi",
|
|
|
- "无线相机",
|
|
|
- "网络天气",
|
|
|
- "网络时钟",
|
|
|
- "环境监测",
|
|
|
- "模型训练:数据集采集",
|
|
|
- "模型训练:模型部署",
|
|
|
- "手写数字识别本地训练",
|
|
|
- "手写数字识别即时训练模型测试",
|
|
|
- "可可派-GPT",
|
|
|
- "可可派-终端",
|
|
|
- "图片分析",
|
|
|
- "语音输入生成图片",
|
|
|
- "跳跳机器人",
|
|
|
- "贪吃蛇",
|
|
|
- "声音响度分析",
|
|
|
- "声音频谱分析",
|
|
|
- "切换语言",
|
|
|
- "检查更新",
|
|
|
- "撤销更新",
|
|
|
-
|
|
|
-)
|
|
|
-demoNameList=(
|
|
|
- "01_camera",
|
|
|
- "02_photoViewer",
|
|
|
- "03_colorDetection",
|
|
|
- "04_recorder",
|
|
|
- "05_audioPlayer",
|
|
|
- "06_musicPlayer",
|
|
|
- "07_videoPlayer",
|
|
|
- "08_timeCounter",
|
|
|
- "09_localTimeClock",
|
|
|
- "10_servoControl",
|
|
|
- "11_motorControl",
|
|
|
- "12_pictureLoopPlay",
|
|
|
- "13_qrCodeScanner",
|
|
|
- "14_humanDetection",
|
|
|
- "15_faceDetection",
|
|
|
- "16_faceComparison",
|
|
|
- "17_objectRecognition",
|
|
|
- "18_edgeDetection",
|
|
|
- "19_handWrittenDigiRecognition",
|
|
|
- "20_carLicensePlateRecognition",
|
|
|
- "21_maskDetection",
|
|
|
- "22_gestureRecognition",
|
|
|
- "23_fingerGuessing",
|
|
|
- "24_connectWiFi",
|
|
|
- "25_aboutCocoPi",
|
|
|
- "26_internetCamera",
|
|
|
- "27_internetWeatherPrediction",
|
|
|
- "28_internetTimeClock",
|
|
|
- "29_environmentDetection",
|
|
|
- "30_training_data_collect",
|
|
|
- "31_training_deploy_model",
|
|
|
- "32_mnistModelTraining",
|
|
|
- "33_mnistCameraTest",
|
|
|
- "34_CocoGPT",
|
|
|
- "35_CocoTerminal",
|
|
|
- "36_pictureAnalysis",
|
|
|
- "37_speechToImageSynthesis",
|
|
|
- "38_jumpbot",
|
|
|
- "39_gluttonousSnake",
|
|
|
- "40_soundLoudnessAnalysis",
|
|
|
- "41_soundSpectrumAnalysis",
|
|
|
- "checkout",
|
|
|
- "pull",
|
|
|
- "reset",
|
|
|
-
|
|
|
-)
|
|
|
-demoNum=len(demoListText)
|
|
|
-pageSig=1
|
|
|
-selectSig=1
|
|
|
-def buttonDectect():
|
|
|
- from maix import display, image,camera
|
|
|
- import time
|
|
|
- import os
|
|
|
- global key_A,key_B,key_C,key_D,pageVal,menuSelect,execVal,demoNum,demoSelect,splash,iconUpP,iconDownP,screenShow,img_drop,systemRunNum,pageSig,selectSig
|
|
|
-
|
|
|
- if(pageVal==0):
|
|
|
- if(key_A.is_pressed()):
|
|
|
- pressTime=time.perf_counter()
|
|
|
- while key_A.is_pressed()==1:
|
|
|
- if(time.perf_counter()-pressTime)<5:
|
|
|
- time.sleep(0.001)
|
|
|
- pageVal=1
|
|
|
- else:
|
|
|
- pageVal=2
|
|
|
- break
|
|
|
- execVal=0
|
|
|
- elif(key_B.is_pressed()):
|
|
|
- while key_B.is_pressed()==1:
|
|
|
- time.sleep(0.001)
|
|
|
- execVal=1
|
|
|
-# elif (key_B.is_pressed()):
|
|
|
-# while key_B.is_pressed()==1:
|
|
|
-# time.sleep(0.001)
|
|
|
-# pageVal=1
|
|
|
- else:
|
|
|
- pass
|
|
|
- elif(pageVal==1):
|
|
|
- if execVal==0:
|
|
|
- if(key_D.is_pressed()):
|
|
|
- splash.draw_image(iconUpP, 3, 3)
|
|
|
- #screenShow()
|
|
|
- display.show(splash)
|
|
|
- while key_D.is_pressed()==1:
|
|
|
- time.sleep(0.001)
|
|
|
- demoSelect=demoSelect-1
|
|
|
- if(demoSelect==-1):
|
|
|
- demoSelect=demoNum-1
|
|
|
- elif (key_C.is_pressed()):
|
|
|
- splash.draw_image(iconDownP, 287, 3)
|
|
|
- #screenShow()
|
|
|
- display.show(splash)
|
|
|
- while key_C.is_pressed()==1:
|
|
|
- time.sleep(0.001)
|
|
|
- demoSelect=demoSelect+1
|
|
|
- if(demoSelect==demoNum):
|
|
|
- demoSelect=0
|
|
|
- elif (key_B.is_pressed()):
|
|
|
- while key_B.is_pressed()==1:
|
|
|
- time.sleep(0.001)
|
|
|
- execVal=2+demoSelect
|
|
|
- elif (key_A.is_pressed()):
|
|
|
- while key_A.is_pressed()==1:
|
|
|
- time.sleep(0.001)
|
|
|
- menuSelect=0
|
|
|
- pageVal=0
|
|
|
- demoSelect=0
|
|
|
- execVal=0
|
|
|
- try:
|
|
|
- with open( '/tmp/page.txt', 'w' ) as f:
|
|
|
- f.write(str(pageVal))
|
|
|
- except:
|
|
|
- pass
|
|
|
- try:
|
|
|
- with open( '/tmp/menu.txt', 'w' ) as f:
|
|
|
- f.write(str(demoSelect))
|
|
|
- except:
|
|
|
- pass
|
|
|
- pageSig=1
|
|
|
- selectSig=1
|
|
|
- else:
|
|
|
- pass
|
|
|
- else:
|
|
|
- if (key_A.is_pressed()):
|
|
|
- while key_A.is_pressed()==1:
|
|
|
- time.sleep(0.001)
|
|
|
- menuSelect=0
|
|
|
- pageVal=0
|
|
|
- demoSelect=0
|
|
|
- execVal=0
|
|
|
- systemRunNum=0
|
|
|
- elif pageVal==2:
|
|
|
- if(key_C.is_pressed()):
|
|
|
- pageVal=0
|
|
|
- menuSelect=0
|
|
|
- pageVal=0
|
|
|
- demoSelect=0
|
|
|
- execVal=0
|
|
|
- systemRunNum=0
|
|
|
- elif key_B.is_pressed():
|
|
|
- os.system("poweroff")
|
|
|
- elif key_D.is_pressed():
|
|
|
- os.system("reboot")
|
|
|
- else:
|
|
|
- pass
|
|
|
-
|
|
|
-def running():
|
|
|
- from maix import display, image,camera
|
|
|
- global splash,title_logo_text,btn_col,btn_row,splash_text,txt_unselected,txt_selected,btn_selected,btn_unselected,\
|
|
|
-splash_theme_color,btn_height,btn_width,main_title,menuSelect,pageVal,execVal,screenFirstPage,screenSecondPage,\
|
|
|
-color_splash_theme,color_blue,color_blue_lighter,color_white,color_gray,color_orange,color_red,demo_i,demo_j,\
|
|
|
-demo_m,demo_n,screenShow,img_drop,systemRunNum,systemPage,demoNameList,pageSig,selectSig,demoSelect
|
|
|
- if pageSig==1:
|
|
|
- try:
|
|
|
- with open( '/tmp/page.txt', 'r' ) as f:
|
|
|
- pageVal=int(f.read())
|
|
|
- print(pageVal)
|
|
|
- pageSig=0
|
|
|
- except:
|
|
|
- pass
|
|
|
- if selectSig==1:
|
|
|
- try:
|
|
|
- with open( '/tmp/menu.txt', 'r' ) as f:
|
|
|
- demoSelect=int(f.read())
|
|
|
- print(demoSelect)
|
|
|
- selectSig=0
|
|
|
- except:
|
|
|
- pass
|
|
|
-
|
|
|
- if(pageVal==0):
|
|
|
- screenFirstPage()
|
|
|
- if(execVal==0):
|
|
|
- pass
|
|
|
- #splash.draw_rectangle(btn_col[0], btn_row-26,btn_col[0]+220,26, color=splash_theme_color, thickness=1)
|
|
|
- #screenShow()
|
|
|
- #display.show(splash)
|
|
|
- else:
|
|
|
- try:
|
|
|
- splash.draw_string(btn_col[0], btn_row-25, splash_text[5], color=(0,255,255),thickness = 1)
|
|
|
- #screenShow()
|
|
|
- display.show(splash)
|
|
|
- time.sleep(0.5)
|
|
|
- os.system("ln -sf %s /tmp/event && touch /tmp/start" % "/root/user_latest_code.py")
|
|
|
-
|
|
|
- except BaseException as e:
|
|
|
- execVal=0
|
|
|
- print(str(e))
|
|
|
- splash.draw_rectangle(btn_col[0], btn_row-26,btn_col[0]+220,26, color=splash_theme_color, thickness=1)
|
|
|
- splash.draw_string(btn_col[0], btn_row-85, splash_text[9], color=(255,0,0), thickness = 1)
|
|
|
- #screenShow()
|
|
|
- display.show(splash)
|
|
|
- elif(pageVal==1):
|
|
|
- if(execVal==0):
|
|
|
- screenSecondPage()
|
|
|
- #print("show(demoSelect)")
|
|
|
- else:
|
|
|
- demo_i=int(demoSelect/6)
|
|
|
- demo_j=demoSelect%6
|
|
|
- demo_m=int(demoNum/6)
|
|
|
- demo_n=demoNum%6
|
|
|
- splash.draw_rectangle(0,33+30*demo_j,319,33+30*(demo_j+1),color=color_orange,thickness=-1)
|
|
|
- splash.draw_rectangle(0,33+30*demo_j,319,33+30*(demo_j+1),color=color_white,thickness=1)
|
|
|
- splash.draw_string(8, 39+30*demo_j,splash_text[11] , color=color_white, thickness = 1)
|
|
|
- #screenShow()
|
|
|
- display.show(splash)
|
|
|
- time.sleep(0.5)
|
|
|
- app_path_1='ln -sf /root/preset/app/'
|
|
|
- app_path_2='.py /tmp/event && touch /tmp/start'
|
|
|
- app_path=app_path_1+demoNameList[execVal-2]+app_path_2
|
|
|
- #print(app_path)
|
|
|
- try:
|
|
|
- with open( '/tmp/page.txt', 'w' ) as f:
|
|
|
- f.write(str(pageVal))
|
|
|
- except:
|
|
|
- pass
|
|
|
- try:
|
|
|
- with open( '/tmp/menu.txt', 'w' ) as f:
|
|
|
- f.write(str(demoSelect))
|
|
|
- except:
|
|
|
- pass
|
|
|
- pageSig=1
|
|
|
- selectSig=1
|
|
|
- os.system(app_path)
|
|
|
- else:
|
|
|
- if systemRunNum==0:
|
|
|
- systemPage()
|
|
|
- systemRunNum=systemRunNum+1
|
|
|
- else:
|
|
|
- pass
|
|
|
-
|
|
|
-def screenShow():
|
|
|
- from maix import image,display,camera
|
|
|
- global img_drop
|
|
|
- screenCapture=splash.crop(0,0,240,320)
|
|
|
- img_drop.draw_image((screenCapture.rotate(0,adjust=1)),0,0)
|
|
|
- #img_drop.draw_image((screenCapture.rotate(-90,adjust=1)),0,0)
|
|
|
- display.show(img_drop)
|
|
|
-try:
|
|
|
- with open( '/tmp/filesyStem.txt', 'w' ) as f:
|
|
|
- f.write("a")
|
|
|
- #os.system("rm /etc/wifi/wpa_supplicant.conf && touch /etc/wifi/wpa_supplicant.conf && sync && fsck.ext4 -p /dev/root && mount -o remount -o rw /dev/root && rm /etc/wifi/wpa_supplicant.conf && touch /etc/wifi/wpa_supplicant.conf && sync &")
|
|
|
- os.system("sync && rm /tmp/filesyStem.txt && sync")
|
|
|
- #os.system("fsck.ext4 -p /dev/root && mount -o remount -o rw /dev/root")
|
|
|
- #os.system("rm /etc/wifi/wpa_supplicant.conf && touch /etc/wifi/wpa_supplicant.conf && sync")
|
|
|
-
|
|
|
-except:
|
|
|
- os.system("fsck.ext4 -p /dev/root && mount -o remount -o rw /dev/root")
|
|
|
-
|
|
|
-try:
|
|
|
- os.popen("cd /root/preset/server/ && python wirelessServer.py &")
|
|
|
-except:
|
|
|
- pass
|
|
|
-while True:
|
|
|
- buttonDectect()
|
|
|
- running()
|
|
|
-
|
|
|
-del key_A
|
|
|
-del key_B
|
|
|
-del key_C
|
|
|
-del key_D
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
+#!/usr/bin/env python
|
|
|
+#version : 2024.08.08
|
|
|
+#language : en
|
|
|
+#hardware : pi
|
|
|
+import time
|
|
|
+from maix import *
|
|
|
+import gc
|
|
|
+import os,sys
|
|
|
+import sys
|
|
|
+sys.path.append('/root/')
|
|
|
+from CocoPi import BUTTON
|
|
|
+from CocoPi import stm8s
|
|
|
+from CocoPi import multiFuncGpio
|
|
|
+from CocoPi import singleRgb
|
|
|
+from CocoPi import LED
|
|
|
+
|
|
|
+gc.enable()
|
|
|
+gc.collect()
|
|
|
+iic_slaver=stm8s()
|
|
|
+iic_slaver.clear()
|
|
|
+PIXEL_LED1= multiFuncGpio(0,0)
|
|
|
+PIXEL_LED2= multiFuncGpio(1,0)
|
|
|
+PIXEL_LED1.pixelInit_()
|
|
|
+PIXEL_LED2.pixelInit_()
|
|
|
+time.sleep(0.1)
|
|
|
+L1=singleRgb()
|
|
|
+L1.setColor(0,0,0)
|
|
|
+L1.show()
|
|
|
+time.sleep(0.1)
|
|
|
+L2=LED()
|
|
|
+L2.out(0)
|
|
|
+del iic_slaver
|
|
|
+del PIXEL_LED1
|
|
|
+del PIXEL_LED2
|
|
|
+del L1
|
|
|
+del L2
|
|
|
+
|
|
|
+count = 0
|
|
|
+
|
|
|
+def gc_log():
|
|
|
+ global count
|
|
|
+ gc.collect()
|
|
|
+ count = count + 1
|
|
|
+
|
|
|
+splash_theme_color = (15,21,46)
|
|
|
+btn_selected = (255,255,255)
|
|
|
+btn_unselected = (76,86,127)
|
|
|
+txt_selected = (255,255,255)
|
|
|
+txt_unselected = (76,86,127)
|
|
|
+color_splash_theme = (15,21,46)
|
|
|
+color_blue = (31,61,185)
|
|
|
+color_blue_lighter = (60,131,211)
|
|
|
+color_white = (255,255,255)
|
|
|
+color_gray = (60,73,126)
|
|
|
+color_orange = (255,165,0)
|
|
|
+color_red = (255,0,0)
|
|
|
+
|
|
|
+
|
|
|
+btn_width = 134
|
|
|
+btn_height = 52
|
|
|
+btn_y_base = 5
|
|
|
+btn_col = (btn_y_base, btn_y_base+btn_width, btn_y_base+152)
|
|
|
+btn_row = 180
|
|
|
+
|
|
|
+main_title = (
|
|
|
+ "Run",
|
|
|
+ "Latest code",
|
|
|
+ "Open",
|
|
|
+ "Demo list",
|
|
|
+ "B",
|
|
|
+ "A"
|
|
|
+ )
|
|
|
+splash_text = (
|
|
|
+ "Version: 2024-08-08 ",
|
|
|
+ "System version: N/A",
|
|
|
+ "2. After loading the code,press ",
|
|
|
+ " KEY-A for 2s to back to start ",
|
|
|
+ " interface.",
|
|
|
+ "Running Latest Code...",
|
|
|
+ "Error: code not found.",
|
|
|
+ "Error: invalid syntax",
|
|
|
+ "Opening Demo Menu...",
|
|
|
+ "Demo menu not found.",
|
|
|
+ "Run",
|
|
|
+ "Loading...",
|
|
|
+ "Back",
|
|
|
+ "Press KEY-C To Back",
|
|
|
+ "Press KEY-D To Reboot",
|
|
|
+ "Press KEY-B To Poweroff",
|
|
|
+ "1. Press KEY-A for 5s to shut down",
|
|
|
+ " the CocoPi or reboot the CocoPi.",
|
|
|
+ " ",
|
|
|
+ "CocoPi V6",
|
|
|
+ "/ Linux / AIot /Python /",
|
|
|
+ "/Graphical programming /",
|
|
|
+ "------- BASIC -------",
|
|
|
+ "-------- AI ---------",
|
|
|
+ "-------- IoT --------",
|
|
|
+ )
|
|
|
+
|
|
|
+title_logo_text = image.open("/root/preset/img/cocorobo_text.jpg")
|
|
|
+iconUpNp = image.open("/root/preset/img/arrow_up_filled.jpg")
|
|
|
+iconUpP = image.open("/root/preset/img/arrow_up_pressed.jpg")
|
|
|
+iconDownNp = image.open("/root/preset/img/arrow_down_filled.jpg")
|
|
|
+iconDownP = image.open("/root/preset/img/arrow_down_pressed.jpg")
|
|
|
+frostedGlass = image.open("/root/preset/img/frostedglass_.jpg")
|
|
|
+#backUp = image.open("/root/preset/img/backup_48x48.png")
|
|
|
+#powerOff = image.open("/root/preset/img/poweroff_48x48.png")
|
|
|
+#reBoot = image.open("/root/preset/img/reboot_48x48.png")
|
|
|
+
|
|
|
+run_user_code_path='/root/user_latest_code.py'
|
|
|
+
|
|
|
+
|
|
|
+key_A = BUTTON(14)
|
|
|
+key_B = BUTTON(8)
|
|
|
+key_C = BUTTON(13)
|
|
|
+key_D = BUTTON(7)
|
|
|
+
|
|
|
+splash = image.new(size=(320, 240),mode = "RGB")
|
|
|
+img_drop=image.new(size=(320,240),mode="RGB")
|
|
|
+
|
|
|
+demo_i=0
|
|
|
+demo_j=0
|
|
|
+demo_m=0
|
|
|
+demo_n=0
|
|
|
+pressTime=0
|
|
|
+systemRunNum=0
|
|
|
+
|
|
|
+image.load_freetype("/root/preset/fonts/CascadiaCodePL-Italic.ttf")
|
|
|
+def screenFirstPage():
|
|
|
+ from maix import display,image,camera
|
|
|
+ global splash,title_logo_text,btn_col,btn_row,splash_text,txt_unselected,txt_selected,btn_selected,btn_unselected,\
|
|
|
+splash_theme_color,btn_height,btn_width,main_title,menuSelect,gc_log,demo_i,demo_j,demo_m,demo_n,screenShow,img_drop,\
|
|
|
+frostedGlass
|
|
|
+ gc_log()
|
|
|
+
|
|
|
+ splash.clear()
|
|
|
+ splash.draw_rectangle(0,0,320,320,color=splash_theme_color,thickness=-1)
|
|
|
+ splash.draw_image(title_logo_text, btn_col[0]+16, 10)
|
|
|
+ x, y = image.get_string_size(splash_text[0], 1)
|
|
|
+
|
|
|
+ splash.draw_string(btn_col[0]+16, 40, splash_text[19]+" "+splash_text[0], color=(0,255,255), thickness = 1)
|
|
|
+# splash.draw_string(btn_col[0], 60, splash_text[20], color=(0,255,255), thickness = 1)
|
|
|
+# splash.draw_string(btn_col[0], 80, splash_text[21], color=(0,255,255), thickness = 1)
|
|
|
+# splash.draw_string(btn_col[0], 60, splash_text[0], color=(0,255,255), thickness = 1)
|
|
|
+ splash.draw_string(btn_col[0]+16, btn_row-105, splash_text[16], color=txt_unselected, thickness = 1)
|
|
|
+ splash.draw_string(btn_col[0]+16, btn_row-85, splash_text[17], color=txt_unselected, thickness = 1)
|
|
|
+ #splash.draw_string(btn_col[0], btn_row-105, splash_text[18], color=txt_unselected, thickness = 1)
|
|
|
+ splash.draw_string(btn_col[0]+16, btn_row-65, splash_text[2], color=txt_unselected, thickness = 1)
|
|
|
+ splash.draw_string(btn_col[0]+16, btn_row-45, splash_text[3], color=txt_unselected, thickness = 1)
|
|
|
+ splash.draw_string(btn_col[0]+16, btn_row-25, splash_text[4], color=txt_unselected, thickness = 1)
|
|
|
+
|
|
|
+ if menuSelect==0:
|
|
|
+ splash.draw_rectangle(btn_col[1]+40, btn_row, btn_col[1]+btn_width+42, btn_row+btn_height, color=btn_selected, thickness=1)
|
|
|
+ splash.draw_string(btn_col[1]+52, btn_row+7, main_title[2], color=txt_selected, thickness = 1)
|
|
|
+ splash.draw_string(btn_col[1]+52, btn_row+27, main_title[3], color=txt_selected, thickness = 1)
|
|
|
+ splash.draw_string(btn_col[1]+157, btn_row+27, main_title[5], color=txt_unselected, thickness = 1)
|
|
|
+
|
|
|
+ splash.draw_rectangle(btn_col[0], btn_row, btn_col[0]+btn_width, btn_row+btn_height, color=btn_selected, thickness=1)
|
|
|
+ splash.draw_string(btn_col[0]+96, btn_row+7, main_title[0], color=txt_selected, thickness = 1)
|
|
|
+ splash.draw_string(btn_col[0]+26, btn_row+27, main_title[1], color=txt_selected, thickness = 1)
|
|
|
+ splash.draw_string(btn_col[0]+7, btn_row+27, main_title[4], color=txt_unselected, thickness = 1)
|
|
|
+
|
|
|
+ if menuSelect==1:
|
|
|
+ splash.draw_rectangle(btn_col[0], btn_row, btn_col[0]+btn_width, btn_row+btn_height, color=btn_unselected, thickness=1)
|
|
|
+ splash.draw_string(btn_col[0]+7, btn_row+7, main_title[0], color=txt_unselected, thickness = 1)
|
|
|
+ splash.draw_string(btn_col[0]+7, btn_row+27, main_title[1], color=txt_unselected, thickness = 1)
|
|
|
+
|
|
|
+ splash.draw_rectangle(btn_col[1], btn_row, btn_col[1]+btn_width, btn_row+btn_height, color=btn_selected, thickness=1)
|
|
|
+ splash.draw_string(btn_col[1]+7, btn_row+7, main_title[2], color=txt_selected, thickness = 1)
|
|
|
+ splash.draw_string(btn_col[1]+7, btn_row+27, main_title[3], color=txt_selected, thickness = 1)
|
|
|
+
|
|
|
+ splash.draw_image(frostedGlass, 0, 0,alpha=0.2)
|
|
|
+ #screenShow()
|
|
|
+ display.show(splash)
|
|
|
+
|
|
|
+def screenSecondPage():
|
|
|
+ from maix import display, image,camera
|
|
|
+ global splash,title_logo_text,btn_col,btn_row,splash_text,txt_unselected,txt_selected,btn_selected,btn_unselected,\
|
|
|
+splash_theme_color,btn_height,btn_width,main_title,demoSelect,gc_log,color_splash_theme,color_blue,color_blue_lighter,\
|
|
|
+color_white,color_gray,color_orange,color_red,iconUpNp,iconUpP,iconDownNp,iconDownP,demoListText,screenShow,img_drop,\
|
|
|
+frostedGlass
|
|
|
+ gc_log()
|
|
|
+ splash.clear()
|
|
|
+ splash.draw_rectangle(0,0,320,240,color=splash_theme_color,thickness=-1)
|
|
|
+ splash.draw_rectangle(0,0,320,32,color=color_blue,thickness=-1)
|
|
|
+ splash.draw_image(iconUpNp, 3, 3)
|
|
|
+ splash.draw_image(iconDownNp, 287, 3)
|
|
|
+
|
|
|
+ splash.draw_rectangle(0,214,50,240,color=color_blue,thickness=-1)
|
|
|
+ splash.draw_rectangle(270,214,320,240,color=color_blue,thickness=-1)
|
|
|
+ splash.draw_string(12, 218, splash_text[10], color=(255,255,255), thickness = 1)
|
|
|
+ splash.draw_string(282, 218, splash_text[12], color=(255,255,255), thickness = 1)
|
|
|
+
|
|
|
+ demo_i=int(demoSelect/6)
|
|
|
+ demo_j=demoSelect%6
|
|
|
+ demo_m=int(demoNum/6)
|
|
|
+ demo_n=demoNum%6
|
|
|
+ for j in range(6):
|
|
|
+ if demo_i==demo_m:
|
|
|
+ if j>=demo_n:
|
|
|
+ pass
|
|
|
+ else:
|
|
|
+ if j==demo_j:
|
|
|
+ pass
|
|
|
+ else:
|
|
|
+ splash.draw_rectangle(0,33+30*j,319,33+30*(j+1),color=color_gray,thickness=1)
|
|
|
+ splash.draw_string(8, 39+30*j,demoListText[j+demo_i*6] , color=color_gray, thickness = 1)
|
|
|
+ else:
|
|
|
+ if j==demo_j:
|
|
|
+ pass
|
|
|
+ else:
|
|
|
+ splash.draw_rectangle(0,33+30*j,319,33+30*(j+1),color=color_gray,thickness=1)
|
|
|
+ splash.draw_string(8, 39+30*j,demoListText[j+demo_i*6] , color=color_gray, thickness = 1)
|
|
|
+ if demoSelect<13:
|
|
|
+ splash.draw_string(72, 10, splash_text[22], color=(255,255,255), thickness = 1)
|
|
|
+ elif demoSelect<31:
|
|
|
+ splash.draw_string(72, 10, splash_text[23], color=(255,255,255), thickness = 1)
|
|
|
+ else:
|
|
|
+ splash.draw_string(72, 10, splash_text[24], color=(255,255,255), thickness = 1)
|
|
|
+ splash.draw_rectangle(0,33+30*demo_j,319,33+30*(demo_j+1),color=color_white,thickness=1)
|
|
|
+ splash.draw_string(8, 39+30*demo_j,demoListText[demoSelect] , color=color_white, thickness = 1)
|
|
|
+ splash.draw_string(146, 218, str(demoSelect+1), color=(255,255,255), thickness = 1)
|
|
|
+ splash.draw_string(160, 218, "/"+str(demoNum), color=(255,255,255), thickness = 1)
|
|
|
+ splash.draw_image(frostedGlass, 0, 0,alpha=0.2)
|
|
|
+ #screenShow()
|
|
|
+ display.show(splash)
|
|
|
+
|
|
|
+def systemPage():
|
|
|
+ from maix import display, image,camera
|
|
|
+ import time
|
|
|
+ global splash,title_logo_text,btn_col,btn_row,splash_text,txt_unselected,txt_selected,btn_selected,btn_unselected,\
|
|
|
+splash_theme_color,btn_height,btn_width,main_title,demoSelect,gc_log,color_splash_theme,color_blue,color_blue_lighter,\
|
|
|
+color_white,color_gray,color_orange,color_red,iconUpNp,iconUpP,iconDownNp,iconDownP,demoListText,screenShow,img_drop,\
|
|
|
+frostedGlass
|
|
|
+ for i in range(10):
|
|
|
+ splash.draw_image(frostedGlass, 0, 0,alpha=0.2)
|
|
|
+ #screenShow()
|
|
|
+ display.show(splash)
|
|
|
+ splash.draw_string(80, 68, splash_text[13], 1,color=(0,255,0), thickness = 1)
|
|
|
+ splash.draw_string(80, 118, splash_text[14], 1,color=(255,255,0), thickness = 1)
|
|
|
+ splash.draw_string(80, 168, splash_text[15], 1,color=(255,0,0), thickness = 1)
|
|
|
+ #splash.draw_image(backUp, 20, 140)
|
|
|
+ #screenShow()
|
|
|
+ splash.draw_image((image.open("/root/preset/img/backup_00ff00_32x32.png")).rotate(0, adjust=0),40,60,alpha=1)
|
|
|
+ splash.draw_image((image.open("/root/preset/img/reboot_ffff00_32x32.png")).rotate(0, adjust=0),40,110,alpha=1)
|
|
|
+ splash.draw_image((image.open("/root/preset/img/poweroff_ff0000_32x32.png")).rotate(0, adjust=0),40,160,alpha=1)
|
|
|
+
|
|
|
+ display.show(splash)
|
|
|
+
|
|
|
+pageVal=0
|
|
|
+menuSelect=0
|
|
|
+demoSelect=0
|
|
|
+execVal=0
|
|
|
+demoListText=(
|
|
|
+ "Camera",
|
|
|
+ "Photo Viewer",
|
|
|
+ "Color Detection",
|
|
|
+ "Audio Recorder",
|
|
|
+ "Audio Player",
|
|
|
+ "Play Music",
|
|
|
+ "Play Video",
|
|
|
+ "Time Counter",
|
|
|
+ "Local Time Clock",
|
|
|
+ "Servo Control",
|
|
|
+ "Motor Control",
|
|
|
+ "Picture Loop Play",
|
|
|
+ "QR Code Scanner",
|
|
|
+ "Human Detection",
|
|
|
+ "Face Recognition",
|
|
|
+ "Face Comparison",
|
|
|
+ "Object Recognition",
|
|
|
+ "Edge Detection",
|
|
|
+ "Handwritten Digit Recognition",
|
|
|
+ "Car License Plate Recognition",
|
|
|
+ "Mask Detection",
|
|
|
+ "Gesture Recognition",
|
|
|
+ "Finger Guessing",
|
|
|
+ "Wi-Fi QR Code Scanner",
|
|
|
+ "About CocoPi",
|
|
|
+ "Internet Camera",
|
|
|
+ "Internet Weather Prediction",
|
|
|
+ "Internet Time Clock",
|
|
|
+ "Environment Detection",
|
|
|
+ "Model Training:Data Collect",
|
|
|
+ "Model Training:Deploy Model",
|
|
|
+ "Mnist Model Training",
|
|
|
+ "Mnist Camera Test",
|
|
|
+ "CocoGPT",
|
|
|
+ "CocoTerminal",
|
|
|
+ "Picture Analysis",
|
|
|
+ "Speech To Image",
|
|
|
+ "Jumpbot",
|
|
|
+ "Gluttonous Snake",
|
|
|
+ "Sound Loudness Analysis",
|
|
|
+ "Sound Spectrum Analysis",
|
|
|
+ "checkout",
|
|
|
+ "pull",
|
|
|
+ "reset",
|
|
|
+
|
|
|
+)
|
|
|
+demoNameList=(
|
|
|
+ "01_camera",
|
|
|
+ "02_photoViewer",
|
|
|
+ "03_colorDetection",
|
|
|
+ "04_recorder",
|
|
|
+ "05_audioPlayer",
|
|
|
+ "06_musicPlayer",
|
|
|
+ "07_videoPlayer",
|
|
|
+ "08_timeCounter",
|
|
|
+ "09_localTimeClock",
|
|
|
+ "10_servoControl",
|
|
|
+ "11_motorControl",
|
|
|
+ "12_pictureLoopPlay",
|
|
|
+ "13_qrCodeScanner",
|
|
|
+ "14_humanDetection",
|
|
|
+ "15_faceDetection",
|
|
|
+ "16_faceComparison",
|
|
|
+ "17_objectRecognition",
|
|
|
+ "18_edgeDetection",
|
|
|
+ "19_handWrittenDigiRecognition",
|
|
|
+ "20_carLicensePlateRecognition",
|
|
|
+ "21_maskDetection",
|
|
|
+ "22_gestureRecognition",
|
|
|
+ "23_fingerGuessing",
|
|
|
+ "24_connectWiFi",
|
|
|
+ "25_aboutCocoPi",
|
|
|
+ "26_internetCamera",
|
|
|
+ "27_internetWeatherPrediction",
|
|
|
+ "28_internetTimeClock",
|
|
|
+ "29_environmentDetection",
|
|
|
+ "30_training_data_collect",
|
|
|
+ "31_training_deploy_model",
|
|
|
+ "32_mnistModelTraining",
|
|
|
+ "33_mnistCameraTest",
|
|
|
+ "34_CocoGPT",
|
|
|
+ "35_CocoTerminal",
|
|
|
+ "36_pictureAnalysis",
|
|
|
+ "37_speechToImageSynthesis",
|
|
|
+ "38_jumpbot",
|
|
|
+ "39_gluttonousSnake",
|
|
|
+ "40_soundLoudnessAnalysis",
|
|
|
+ "41_soundSpectrumAnalysis",
|
|
|
+ "checkout",
|
|
|
+ "pull",
|
|
|
+ "reset",
|
|
|
+)
|
|
|
+demoNum=len(demoListText)
|
|
|
+pageSig=1
|
|
|
+selectSig=1
|
|
|
+
|
|
|
+###需要查询的文件夹目录及文件格式后缀###
|
|
|
+def getAimFileList(filePath="/root/",selectFile=".REC"):
|
|
|
+ import os
|
|
|
+ FileList=[]
|
|
|
+ aimFilePath=filePath
|
|
|
+ aimFile=selectFile
|
|
|
+ aimFileLenth=len(selectFile)*(-1)
|
|
|
+ for root,dirs,files in os.walk(aimFilePath):
|
|
|
+ for name in files:
|
|
|
+ if str(name)[aimFileLenth:]==aimFile:
|
|
|
+ FileList.append(name)
|
|
|
+ return FileList
|
|
|
+
|
|
|
+def buttonDectect():
|
|
|
+ from maix import display, image,camera
|
|
|
+ import time
|
|
|
+ import os
|
|
|
+ global key_A,key_B,key_C,key_D,pageVal,menuSelect,execVal,demoNum,demoSelect,splash,iconUpP,iconDownP,screenShow,img_drop,systemRunNum,pageSig,selectSig
|
|
|
+
|
|
|
+ if(pageVal==0):
|
|
|
+ if(key_A.is_pressed()):
|
|
|
+ pressTime=time.perf_counter()
|
|
|
+ while key_A.is_pressed()==1:
|
|
|
+ if(time.perf_counter()-pressTime)<5:
|
|
|
+ time.sleep(0.001)
|
|
|
+ pageVal=1
|
|
|
+ else:
|
|
|
+ pageVal=2
|
|
|
+ break
|
|
|
+ execVal=0
|
|
|
+ elif(key_B.is_pressed()):
|
|
|
+ while key_B.is_pressed()==1:
|
|
|
+ time.sleep(0.001)
|
|
|
+ execVal=1
|
|
|
+# elif (key_B.is_pressed()):
|
|
|
+# while key_B.is_pressed()==1:
|
|
|
+# time.sleep(0.001)
|
|
|
+# pageVal=1
|
|
|
+ else:
|
|
|
+ pass
|
|
|
+ elif(pageVal==1):
|
|
|
+ if execVal==0:
|
|
|
+ if(key_D.is_pressed()):
|
|
|
+ splash.draw_image(iconUpP, 3, 3)
|
|
|
+ #screenShow()
|
|
|
+ display.show(splash)
|
|
|
+ while key_D.is_pressed()==1:
|
|
|
+ time.sleep(0.001)
|
|
|
+ demoSelect=demoSelect-1
|
|
|
+ if(demoSelect==-1):
|
|
|
+ demoSelect=demoNum-1
|
|
|
+ elif (key_C.is_pressed()):
|
|
|
+ splash.draw_image(iconDownP, 287, 3)
|
|
|
+ #screenShow()
|
|
|
+ display.show(splash)
|
|
|
+ while key_C.is_pressed()==1:
|
|
|
+ time.sleep(0.001)
|
|
|
+ demoSelect=demoSelect+1
|
|
|
+ if(demoSelect==demoNum):
|
|
|
+ demoSelect=0
|
|
|
+ elif (key_B.is_pressed()):
|
|
|
+ while key_B.is_pressed()==1:
|
|
|
+ time.sleep(0.001)
|
|
|
+ execVal=2+demoSelect
|
|
|
+ elif (key_A.is_pressed()):
|
|
|
+ while key_A.is_pressed()==1:
|
|
|
+ time.sleep(0.001)
|
|
|
+ menuSelect=0
|
|
|
+ pageVal=0
|
|
|
+ demoSelect=0
|
|
|
+ execVal=0
|
|
|
+ try:
|
|
|
+ with open( '/tmp/page.txt', 'w' ) as f:
|
|
|
+ f.write(str(pageVal))
|
|
|
+ except:
|
|
|
+ pass
|
|
|
+ try:
|
|
|
+ with open( '/tmp/menu.txt', 'w' ) as f:
|
|
|
+ f.write(str(demoSelect))
|
|
|
+ except:
|
|
|
+ pass
|
|
|
+ pageSig=1
|
|
|
+ selectSig=1
|
|
|
+ else:
|
|
|
+ pass
|
|
|
+ else:
|
|
|
+ if (key_A.is_pressed()):
|
|
|
+ while key_A.is_pressed()==1:
|
|
|
+ time.sleep(0.001)
|
|
|
+ menuSelect=0
|
|
|
+ pageVal=0
|
|
|
+ demoSelect=0
|
|
|
+ execVal=0
|
|
|
+ systemRunNum=0
|
|
|
+ elif pageVal==2:
|
|
|
+ if(key_C.is_pressed()):
|
|
|
+ pageVal=0
|
|
|
+ menuSelect=0
|
|
|
+ pageVal=0
|
|
|
+ demoSelect=0
|
|
|
+ execVal=0
|
|
|
+ systemRunNum=0
|
|
|
+ elif key_B.is_pressed():
|
|
|
+ os.system("poweroff")
|
|
|
+ elif key_D.is_pressed():
|
|
|
+ os.system("reboot")
|
|
|
+ else:
|
|
|
+ pass
|
|
|
+
|
|
|
+def running():
|
|
|
+ from maix import display, image,camera
|
|
|
+ global splash,title_logo_text,btn_col,btn_row,splash_text,txt_unselected,txt_selected,btn_selected,btn_unselected,\
|
|
|
+splash_theme_color,btn_height,btn_width,main_title,menuSelect,pageVal,execVal,screenFirstPage,screenSecondPage,\
|
|
|
+color_splash_theme,color_blue,color_blue_lighter,color_white,color_gray,color_orange,color_red,demo_i,demo_j,\
|
|
|
+demo_m,demo_n,screenShow,img_drop,systemRunNum,systemPage,demoNameList,pageSig,selectSig,demoSelect
|
|
|
+ if pageSig==1:
|
|
|
+ try:
|
|
|
+ with open( '/tmp/page.txt', 'r' ) as f:
|
|
|
+ pageVal=int(f.read())
|
|
|
+ print(pageVal)
|
|
|
+ pageSig=0
|
|
|
+ except:
|
|
|
+ pass
|
|
|
+ if selectSig==1:
|
|
|
+ try:
|
|
|
+ with open( '/tmp/menu.txt', 'r' ) as f:
|
|
|
+ demoSelect=int(f.read())
|
|
|
+ print(demoSelect)
|
|
|
+ selectSig=0
|
|
|
+ except:
|
|
|
+ pass
|
|
|
+
|
|
|
+ if(pageVal==0):
|
|
|
+ screenFirstPage()
|
|
|
+ if(execVal==0):
|
|
|
+ pass
|
|
|
+ #splash.draw_rectangle(btn_col[0], btn_row-26,btn_col[0]+220,26, color=splash_theme_color, thickness=1)
|
|
|
+ #screenShow()
|
|
|
+ #display.show(splash)
|
|
|
+ else:
|
|
|
+ try:
|
|
|
+ splash.draw_string(btn_col[0], btn_row-25, splash_text[5], color=(0,255,255),thickness = 1)
|
|
|
+ #screenShow()
|
|
|
+ display.show(splash)
|
|
|
+ time.sleep(0.5)
|
|
|
+ os.system("ln -sf %s /tmp/event && touch /tmp/start" % "/root/user_latest_code.py")
|
|
|
+
|
|
|
+ except BaseException as e:
|
|
|
+ execVal=0
|
|
|
+ print(str(e))
|
|
|
+ splash.draw_rectangle(btn_col[0], btn_row-26,btn_col[0]+220,26, color=splash_theme_color, thickness=1)
|
|
|
+ splash.draw_string(btn_col[0], btn_row-85, splash_text[9], color=(255,0,0), thickness = 1)
|
|
|
+ #screenShow()
|
|
|
+ display.show(splash)
|
|
|
+ elif(pageVal==1):
|
|
|
+ if(execVal==0):
|
|
|
+ screenSecondPage()
|
|
|
+ #print("show(demoSelect)")
|
|
|
+ else:
|
|
|
+ demo_i=int(demoSelect/6)
|
|
|
+ demo_j=demoSelect%6
|
|
|
+ demo_m=int(demoNum/6)
|
|
|
+ demo_n=demoNum%6
|
|
|
+ splash.draw_rectangle(0,33+30*demo_j,319,33+30*(demo_j+1),color=color_orange,thickness=-1)
|
|
|
+ splash.draw_rectangle(0,33+30*demo_j,319,33+30*(demo_j+1),color=color_white,thickness=1)
|
|
|
+ splash.draw_string(8, 39+30*demo_j,splash_text[11] , color=color_white, thickness = 1)
|
|
|
+ #screenShow()
|
|
|
+ display.show(splash)
|
|
|
+ time.sleep(0.5)
|
|
|
+ app_path_1='ln -sf /root/preset/app/'
|
|
|
+ app_path_2='.py /tmp/event && touch /tmp/start'
|
|
|
+ app_path=app_path_1+demoNameList[execVal-2]+app_path_2
|
|
|
+ #print(app_path)
|
|
|
+ try:
|
|
|
+ with open( '/tmp/page.txt', 'w' ) as f:
|
|
|
+ f.write(str(pageVal))
|
|
|
+ except:
|
|
|
+ pass
|
|
|
+ try:
|
|
|
+ with open( '/tmp/menu.txt', 'w' ) as f:
|
|
|
+ f.write(str(demoSelect))
|
|
|
+ except:
|
|
|
+ pass
|
|
|
+ pageSig=1
|
|
|
+ selectSig=1
|
|
|
+ os.system(app_path)
|
|
|
+ else:
|
|
|
+ if systemRunNum==0:
|
|
|
+ systemPage()
|
|
|
+ systemRunNum=systemRunNum+1
|
|
|
+ else:
|
|
|
+ pass
|
|
|
+
|
|
|
+def screenShow():
|
|
|
+ from maix import image,display,camera
|
|
|
+ global img_drop
|
|
|
+ screenCapture=splash.crop(0,0,240,320)
|
|
|
+ img_drop.draw_image((screenCapture.rotate(0,adjust=1)),0,0)
|
|
|
+ #img_drop.draw_image((screenCapture.rotate(-90,adjust=1)),0,0)
|
|
|
+ display.show(img_drop)
|
|
|
+try:
|
|
|
+ aimFileShow=getAimFileList()
|
|
|
+ aimFileNum=len(aimFileShow)
|
|
|
+
|
|
|
+ if aimFileNum>0:
|
|
|
+ #os.system("rm /root/"+aimFileShow[0])
|
|
|
+ os.system("rm /root/*.REC")
|
|
|
+ #print("del rec action!")
|
|
|
+ #aimFileShow=getAimFileList()
|
|
|
+ #aimFileNum=len(aimFileShow)
|
|
|
+ #print(aimFileShow)
|
|
|
+except:
|
|
|
+ pass
|
|
|
+
|
|
|
+try:
|
|
|
+ os.system("touch /etc/wifi/test")
|
|
|
+except:
|
|
|
+ os.system("{ wpa_supplicant -i wlan0 -D nl80211 -c /etc/wifi/wpa_supplicant.conf -O /etc/wifi/sockets -B ; } ; \
|
|
|
+ { [ -f /etc/wifi/wpa_supplicant.conf.tmp ] && rm /etc/wifi/wpa_supplicant.conf.tmp && rm /etc/wifi/wpa_supplicant.conf && echo "" \
|
|
|
+ > /etc/wifi/wpa_supplicant.conf; sync; } ; { echo "" > /etc/wifi/fileCfgTest && echo "" > /root/fileCfgTest && echo "" > \
|
|
|
+ /home/fileCfgTest && echo "" > /tmp/fileCfgTest; } || { sync; fsck.ext4 -y /dev/root; fsck.ext4 -y /dev/mmcblk0p4; \
|
|
|
+ (mount -o remount,rw -n /dev/root / ; mount -o remount,rw -n /dev/mmcblk0p4 / ; mount -o remount,rw -n /dev/mmcblk0p4 /mnt/UDISK ;\
|
|
|
+ mount -o remount,rw -n / / ; mount -o remount,rw -n /root / ; ) ; fsck.ext4 -y /dev/root; fsck.ext4 -y /dev/mmcblk0p4; sync ; }")
|
|
|
+finally:
|
|
|
+ os.system("rm /etc/wifi/test")
|
|
|
+
|
|
|
+try:
|
|
|
+ os.popen("cd /root/preset/server/ && python wirelessServer.py &")
|
|
|
+except:
|
|
|
+ pass
|
|
|
+while True:
|
|
|
+ buttonDectect()
|
|
|
+ running()
|
|
|
+
|
|
|
+del key_A
|
|
|
+del key_B
|
|
|
+del key_C
|
|
|
+del key_D
|
|
|
+
|