活动介绍
file-type

FeedliTech Sleep - 用C#打造Windows屏幕休眠防护小程序

版权申诉
506KB | 更新于2025-01-31 | 55 浏览量 | 0 下载量 举报 收藏
download 限时特惠:#14.90
### 知识点概述 本节内容将详细介绍有关开发阻止电脑屏幕休眠的小程序,该程序名为FeedliTech.Sleep,并且是通过Windows API用C#语言开发的。程序设计为icon模式,意味着它可能是一个集成在系统托盘(通常位于Windows任务栏右侧的通知区域)的应用程序。 #### C#编程语言 C#(读作“看”)是一种由微软开发的面向对象的高级编程语言,属于.NET框架的一部分。C#被设计为简单、现代、通用、面向对象的编程语言,它直接支持许多现代编程范式(比如泛型和类型安全性)。 C#的跨平台特性、丰富的库支持以及与Visual Studio等集成开发环境(IDE)的深度整合,使其成为开发Windows桌面应用程序的首选语言。此外,它还支持开发Web应用、Web服务、Windows Store应用程序、游戏开发以及其他。 #### Windows API Windows API是微软Windows操作系统提供给程序开发者的一组预定义功能函数,开发者可以在自己的程序中调用这些函数以执行各种系统级的任务。Windows API可以执行的操作范围广泛,包括系统硬件访问、内存管理、窗口管理、进程和线程控制、用户界面以及网络功能等。 Windows API在C#中通过平台调用(P/Invoke)技术调用。P/Invoke允许C#程序调用非托管的DLL文件中的函数,而这些DLL文件包含了Windows API函数的实现。要使用Windows API函数,开发者需要知道函数的确切名称、参数列表和返回类型,这通常可以通过查阅官方的Windows API文档来获取。 #### 屏幕休眠 屏幕休眠是现代操作系统中的一个电源管理特性,该特性允许计算机在一段时间无操作后自动关闭显示器以节省能源。在Windows系统中,这一功能可以通过“电源选项”进行配置。屏幕休眠通常与系统的睡眠状态有关,在无操作期间,系统会将当前工作状态保存到硬盘中,并关闭显示器以及大多数硬件设备,这样可以显著减少能耗,直到有新的操作发生时才恢复。 #### 系统托盘(图标模式) 系统托盘,又称为通知区域,是Windows桌面底部右侧的一个区域,用来显示系统托盘图标(小图标),这些图标通常代表正在运行的后台程序或服务。用户可以点击这些图标来访问程序的功能或执行特定操作。 在程序开发中,如果希望应用程序能够隐藏到系统托盘中运行,可以在程序设计时将窗口设置为无窗口状态,并在系统托盘区域放置一个图标。这样用户可以通过点击这个图标来唤起隐藏的程序窗口或执行其他操作。 #### FeedliTech.Sleep项目 FeedliTech.Sleep是一个C#开发的小程序,其设计目的是阻止电脑屏幕进入休眠状态。该项目可能包含以下几个关键部分: 1. **系统托盘集成**:程序包含一个集成到Windows系统托盘的图标,允许用户通过它来控制屏幕休眠的禁止和启用。 2. **Windows API调用**:程序内部通过P/Invoke调用Windows API函数来实现阻止和允许屏幕休眠的功能。 3. **用户交互**:用户通过与系统托盘图标进行交互来控制程序。例如,用户可能可以通过右键点击图标来启用或禁用屏幕休眠功能。 4. **后台运行**:由于程序设计为系统托盘图标模式,它可能被设计为在后台运行,不占用桌面空间,只有在需要时才通过托盘图标与用户进行交互。 5. **持续运行**:考虑到用户可能希望程序长时间运行来保持屏幕不休眠,程序可能设计为在系统启动时自动运行,并在后台持续运行直到用户手动停止。 综上所述,FeedliTech.Sleep项目是一个针对特定需求的实用程序,通过C#和Windows API的结合使用来阻止Windows系统在用户不操作时自动进入屏幕休眠状态。这种类型的小程序对于那些需要电脑长时间运行且屏幕始终处于打开状态的用户尤为有用。

相关推荐

filetype

import time, sensor, image,ustruct from pyb import UART,LED from image import SEARCH_EX, SEARCH_DS #从imgae模块引入SEARCH_EX和SEARCH_DS。使用from import仅仅引入SEARCH_EX, #SEARCH_DS两个需要的部分,而不把image模块全部引入。 # Reset sensor sensor.reset() # Set sensor settings sensor.set_contrast(1) sensor.set_gainceiling(16) # Max resolution for template matching with SEARCH_EX is QQVGA sensor.set_framesize(sensor.QQVGA) # You can set windowing to reduce the search image. #sensor.set_windowing(((640-80)//2, (480-60)//2, 80, 60)) sensor.set_pixformat(sensor.GRAYSCALE) LED(1).on() LED(2).on() LED(3).on() template1 = image.Image("1.pgm") template2 = image.Image("2.pgm") templates3 = ["3.pgm","3_1.pgm","3_2.pgm","3_3.pgm","3_4.pgm","3_5.pgm","3_6.pgm","3_7.pgm","3_8.pgm"] templates4 = ["4.pgm","4_1.pgm","4_2.pgm","4_3.pgm","4_4.pgm","4_5.pgm","4_6.pgm","4_7.pgm","4_8.pgm"] templates5 = ["5.pgm","5_1.pgm","5_2.pgm","5_3.pgm","5_4.pgm","5_5.pgm","5_6.pgm","5_7.pgm","5_8.pgm"] templates6 = ["6.pgm","6_1.pgm","6_2.pgm","6_3.pgm","6_4.pgm","6_5.pgm","6_6.pgm","6_7.pgm","6_8.pgm"] templates7 = ["7.pgm","7_1.pgm","7_2.pgm","7_3.pgm","7_4.pgm","7_5.pgm","7_6.pgm","7_7.pgm","7_8.pgm"] templates8 = ["8.pgm","8_1.pgm","8_2.pgm","8_3.pgm","8_4.pgm","8_5.pgm","8_6.pgm","8_7.pgm","8_8.pgm"] #加载模板图片 clock = time.clock() uart = UART(3,115200) #定义串口3变量 uart.init(115200, bits=8, parity=None, stop=1) # init with given parameters def outuart(x,num): global uart #frame=[0x2C,18,cx%0xff,int(cx/0xff),cy%0xff,int(cy/0xff),0x5B]; #data = bytearray(frame) data = ustruct.pack("<bbhhhhb", #格式为俩个字符俩个短整型(2字节) 0x2C, #帧头1 0x12, #帧头2 int(x), # up sample by 4 #数据1 int(num), # up sample by 4 #数据2 int(0), # up sample by 4 #数据1 int(0), # up sample by 4 #数据2 0x5B) for x in range(5): uart.write(data)#必须要传入一个字节数组 time.sleep_ms(1) print(num) # Run template matching while (True): clock.tick() img = sensor.snapshot() num=0 r = img.find_template(template1, 0.70, step=5, search=SEARCH_EX) #, roi=(10, 0, 60, 60)) if r: print(r) #img.draw_rectangle(r) print('1') num=1 outuart(0,num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r2_0 = img.find_template(template2, 0.70, step=5, search=SEARCH_EX) if r2_0: print(r2_0) #img.draw_rectangle(r1_3) print('2') num=2 outuart(0,num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r3_0 = img.find_template(image.Image(templates3[0]), 0.70, step=5, search=SEARCH_EX) if r3_0: print(r3_0) #img.draw_rectangle(r1_1) print('3') num=3 outuart(0,num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r4_0 = img.find_template(image.Image(templates4[0]), 0.70, step=5, search=SEARCH_EX) if r4_0: print(r4_0) #img.draw_rectangle(r1_1) print('4') num=4 outuart(0,num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r5_0 = img.find_template(image.Image(templates5[0]), 0.70, step=5, search=SEARCH_EX) if r5_0: print(r5_0) #img.draw_rectangle(r1_1) print('5') num=5 outuart(0,num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r6_0 = img.find_template(image.Image(templates6[0]), 0.70, step=5, search=SEARCH_EX) if r6_0: print(r6_0) #img.draw_rectangle(r1_1) print('6') num=6 outuart(0,num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r7_0 = img.find_template(image.Image(templates7[0]), 0.70, step=5, search=SEARCH_EX) if r7_0: print(r7_0) #img.draw_rectangle(r1_1) print('7') num=7 outuart(0,num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r8_0 = img.find_template(image.Image(templates8[0]), 0.70, step=5, search=SEARCH_EX) if r8_0: print(r8_0) #img.draw_rectangle(r1_1) print('8') num=8 outuart(0,num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) if num!=0: while(True): clock.tick() img = sensor.snapshot() if num==1: outuart(0,num) if num==2: outuart(0,num) if num==3: r3_0 = img.find_template(image.Image(templates3[0]), 0.70, step=5, search=SEARCH_EX) if r3_0: print(r3_0) #img.draw_rectangle(r1_1) print('3') outuart(r3_0[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r3_1 = img.find_template(image.Image(templates3[1]), 0.70, step=5, search=SEARCH_EX) if r3_1: print(r3_1) #img.draw_rectangle(r1_1) print('3') outuart(r3_1[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r3_2 = img.find_template(image.Image(templates3[2]), 0.70, step=5, search=SEARCH_EX) if r3_2: print(r3_2) #img.draw_rectangle(r1_2) print('3') outuart(r3_2[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r3_3 = img.find_template(image.Image(templates3[3]), 0.70, step=5, search=SEARCH_EX) if r3_3: print(r3_3) #img.draw_rectangle(r1_2) print('3') outuart(r3_3[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r3_4 = img.find_template(image.Image(templates3[4]), 0.70, step=5, search=SEARCH_EX) if r3_4: print(r3_4) #img.draw_rectangle(r1_2) print('3') outuart(r3_4[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r3_5 = img.find_template(image.Image(templates3[5]), 0.70, step=5, search=SEARCH_EX) if r3_5: print(r3_5) #img.draw_rectangle(r1_2) print('3') outuart(r3_5[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r3_6 = img.find_template(image.Image(templates3[6]), 0.70, step=5, search=SEARCH_EX) if r3_6: print(r3_6) #img.draw_rectangle(r1_2) print('3') outuart(r3_6[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r3_7 = img.find_template(image.Image(templates3[7]), 0.70, step=5, search=SEARCH_EX) if r3_7: print(r3_7) #img.draw_rectangle(r1_2) print('3') outuart(r3_7[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r3_8 = img.find_template(image.Image(templates3[8]), 0.70, step=5, search=SEARCH_EX) if r3_8: print(r3_8) #img.draw_rectangle(r1_2) print('3') outuart(r3_8[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) if num==4: r4_0 = img.find_template(image.Image(templates4[0]), 0.70, step=5, search=SEARCH_EX) if r4_0: print(r4_0) #img.draw_rectangle(r1_1) print('4') outuart(r4_0[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r4_1 = img.find_template(image.Image(templates4[1]), 0.70, step=5, search=SEARCH_EX) if r4_1: print(r4_1) #img.draw_rectangle(r1_1) print('4') outuart(r4_1[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r4_2 = img.find_template(image.Image(templates4[2]), 0.70, step=5, search=SEARCH_EX) if r4_2: print(r4_2) #img.draw_rectangle(r1_2) print('4') outuart(r4_2[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r4_3 = img.find_template(image.Image(templates4[3]), 0.70, step=5, search=SEARCH_EX) if r4_3: print(r4_3) #img.draw_rectangle(r1_2) print('4') outuart(r4_3[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r4_4 = img.find_template(image.Image(templates4[4]), 0.70, step=5, search=SEARCH_EX) if r4_4: print(r4_4) #img.draw_rectangle(r1_2) print('4') outuart(r4_4[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r4_5 = img.find_template(image.Image(templates4[5]), 0.70, step=5, search=SEARCH_EX) if r4_5: print(r4_5) #img.draw_rectangle(r1_2) print('4') outuart(r4_5[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r4_6 = img.find_template(image.Image(templates4[6]), 0.70, step=5, search=SEARCH_EX) if r4_6: print(r4_6) #img.draw_rectangle(r1_2) print('4') outuart(r4_6[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r4_7 = img.find_template(image.Image(templates4[7]), 0.70, step=5, search=SEARCH_EX) if r4_7: print(r4_7) #img.draw_rectangle(r1_2) print('4') outuart(r4_7[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r4_8 = img.find_template(image.Image(templates4[8]), 0.70, step=5, search=SEARCH_EX) if r4_8: print(r4_8) #img.draw_rectangle(r1_2) print('4') outuart(r4_8[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) if num==5: r5_0 = img.find_template(image.Image(templates5[0]), 0.70, step=5, search=SEARCH_EX) if r5_0: print(r5_0) #img.draw_rectangle(r1_1) print('5') outuart(r5_0[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r5_1 = img.find_template(image.Image(templates5[1]), 0.70, step=5, search=SEARCH_EX) if r5_1: print(r5_1) #img.draw_rectangle(r1_1) print('5') outuart(r5_1[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r5_2 = img.find_template(image.Image(templates5[2]), 0.70, step=5, search=SEARCH_EX) if r5_2: print(r5_2) #img.draw_rectangle(r1_2) print('5') outuart(r5_2[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r5_3 = img.find_template(image.Image(templates5[3]), 0.70, step=5, search=SEARCH_EX) if r5_3: print(r5_3) #img.draw_rectangle(r1_2) print('5') outuart(r5_3[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r5_4 = img.find_template(image.Image(templates5[4]), 0.70, step=5, search=SEARCH_EX) if r5_4: print(r5_4) #img.draw_rectangle(r1_2) print('5') outuart(r5_4[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r5_5 = img.find_template(image.Image(templates5[5]), 0.70, step=5, search=SEARCH_EX) if r5_5: print(r5_5) #img.draw_rectangle(r1_2) print('5') outuart(r5_5[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r5_6 = img.find_template(image.Image(templates5[6]), 0.70, step=5, search=SEARCH_EX) if r5_6: print(r5_6) #img.draw_rectangle(r1_2) print('5') outuart(r5_6[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r5_7 = img.find_template(image.Image(templates5[7]), 0.70, step=5, search=SEARCH_EX) if r5_7: print(r5_7) #img.draw_rectangle(r1_2) print('5') outuart(r5_7[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r5_8 = img.find_template(image.Image(templates5[8]), 0.70, step=5, search=SEARCH_EX) if r5_8: print(r5_8) #img.draw_rectangle(r1_2) print('5') outuart(r5_8[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) if num==6: r6_0 = img.find_template(image.Image(templates6[0]), 0.70, step=5, search=SEARCH_EX) if r6_0: print(r6_0) #img.draw_rectangle(r1_1) print('6') outuart(r6_0[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r6_1 = img.find_template(image.Image(templates6[1]), 0.70, step=5, search=SEARCH_EX) if r6_1: print(r6_1) #img.draw_rectangle(r1_1) print('6') outuart(r6_1[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r6_2 = img.find_template(image.Image(templates6[2]), 0.70, step=5, search=SEARCH_EX) if r6_2: print(r6_2) #img.draw_rectangle(r1_2) print('6') outuart(r6_2[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r6_3 = img.find_template(image.Image(templates6[3]), 0.70, step=5, search=SEARCH_EX) if r6_3: print(r6_3) #img.draw_rectangle(r1_2) print('6') outuart(r6_3[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r6_4 = img.find_template(image.Image(templates6[4]), 0.70, step=5, search=SEARCH_EX) if r6_4: print(r6_4) #img.draw_rectangle(r1_2) print('6') outuart(r6_4[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r6_5 = img.find_template(image.Image(templates6[5]), 0.70, step=5, search=SEARCH_EX) if r6_5: print(r6_5) #img.draw_rectangle(r1_2) print('6') outuart(r6_5[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r6_6 = img.find_template(image.Image(templates6[6]), 0.70, step=5, search=SEARCH_EX) if r6_6: print(r6_6) #img.draw_rectangle(r1_2) print('6') outuart(r6_6[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r6_7 = img.find_template(image.Image(templates6[7]), 0.70, step=5, search=SEARCH_EX) if r6_7: print(r6_7) #img.draw_rectangle(r1_2) print('6') outuart(r6_7[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r6_8 = img.find_template(image.Image(templates6[8]), 0.70, step=5, search=SEARCH_EX) if r6_8: print(r6_8) #img.draw_rectangle(r1_2) print('6') outuart(r6_8[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) if num==7: r7_0 = img.find_template(image.Image(templates7[0]), 0.70, step=5, search=SEARCH_EX) if r7_0: print(r7_0) #img.draw_rectangle(r1_1) print('7') outuart(r7_0[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r7_1 = img.find_template(image.Image(templates7[1]), 0.70, step=5, search=SEARCH_EX) if r7_1: print(r7_1) #img.draw_rectangle(r1_1) print('7') outuart(r7_1[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r7_2 = img.find_template(image.Image(templates7[2]), 0.70, step=5, search=SEARCH_EX) if r7_2: print(r7_2) #img.draw_rectangle(r1_2) print('7') outuart(r7_2[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r7_3 = img.find_template(image.Image(templates7[3]), 0.70, step=5, search=SEARCH_EX) if r7_3: print(r7_3) #img.draw_rectangle(r1_2) print('7') outuart(r7_3[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r7_4 = img.find_template(image.Image(templates7[4]), 0.70, step=5, search=SEARCH_EX) if r7_4: print(r7_4) #img.draw_rectangle(r1_2) print('7') outuart(r7_4[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r7_5 = img.find_template(image.Image(templates7[5]), 0.70, step=5, search=SEARCH_EX) if r7_5: print(r7_5) #img.draw_rectangle(r1_2) print('7') outuart(r7_5[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r7_6 = img.find_template(image.Image(templates7[6]), 0.70, step=5, search=SEARCH_EX) if r7_6: print(r7_6) #img.draw_rectangle(r1_2) print('7') outuart(r7_6[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r7_7 = img.find_template(image.Image(templates7[7]), 0.70, step=5, search=SEARCH_EX) if r7_7: print(r7_7) #img.draw_rectangle(r1_2) print('7') outuart(r7_7[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r7_8 = img.find_template(image.Image(templates7[8]), 0.70, step=5, search=SEARCH_EX) if r7_8: print(r7_8) #img.draw_rectangle(r1_2) print('7') outuart(r7_8[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) if num==8: r8_0 = img.find_template(image.Image(templates8[0]), 0.70, step=5, search=SEARCH_EX) if r8_0: print(r8_0) #img.draw_rectangle(r1_1) print('8') outuart(r8_0[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r8_1 = img.find_template(image.Image(templates8[1]), 0.70, step=5, search=SEARCH_EX) if r8_1: print(r8_1) #img.draw_rectangle(r1_1) print('8') outuart(r8_1[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r8_2 = img.find_template(image.Image(templates8[2]), 0.70, step=5, search=SEARCH_EX) if r8_2: print(r8_2) #img.draw_rectangle(r1_2) print('8') outuart(r8_2[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r8_3 = img.find_template(image.Image(templates8[3]), 0.70, step=5, search=SEARCH_EX) if r8_3: print(r8_3) #img.draw_rectangle(r1_2) print('8') outuart(r8_3[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r8_4 = img.find_template(image.Image(templates8[4]), 0.70, step=5, search=SEARCH_EX) if r8_4: print(r8_4) #img.draw_rectangle(r1_2) print('8') outuart(r8_4[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r8_5 = img.find_template(image.Image(templates8[5]), 0.70, step=5, search=SEARCH_EX) if r8_5: print(r8_5) #img.draw_rectangle(r1_2) print('8') outuart(r8_5[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r8_6 = img.find_template(image.Image(templates8[6]), 0.70, step=5, search=SEARCH_EX) if r8_6: print(r8_6) #img.draw_rectangle(r1_2) print('8') outuart(r8_6[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) if r8_7: print(r8_7) #img.draw_rectangle(r1_2) print('8') outuart(r8_7[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) r8_8 = img.find_template(image.Image(templates3[8]), 0.70, step=5, search=SEARCH_EX) if r8_8: print(r8_8) #img.draw_rectangle(r1_2) print('8') outuart(r8_8[0],num) for x in range(5): LED(1).on() LED(2).off() LED(3).off() time.sleep_ms(100) LED(1).on() LED(2).on() LED(3).on() time.sleep_ms(100) print(clock.fps()) print(clock.fps())

filetype

#!/usr/bin/env python3 # encoding: utf-8 # 语音控制导航 import os import json import rospy import signal import math # import threading from nav_msgs.msg import OccupancyGrid from std_msgs.msg import String, Int32 from sensor_msgs.msg import Image from sensor_msgs.msg import CameraInfo from std_srvs.srv import Trigger, TriggerResponse from xf_mic_asr_offline import voice_play from geometry_msgs.msg import Twist, PoseStamped, Pose from move_base_msgs.msg import MoveBaseActionResult from actionlib_msgs.msg import GoalStatusArray from ros_robot_controller.msg import BuzzerState from servo_controllers import bus_servo_control from servo_msgs.msg import MultiRawIdPosDur # 将rpy转换成qua def rpy2qua(roll, pitch, yaw): cy = math.cos(yaw * 0.5) sy = math.sin(yaw * 0.5) cp = math.cos(pitch * 0.5) sp = math.sin(pitch * 0.5) cr = math.cos(roll * 0.5) sr = math.sin(roll * 0.5) q = Pose() q.orientation.w = cy * cp * cr + sy * sp * sr q.orientation.x = cy * cp * sr - sy * sp * cr q.orientation.y = sy * cp * sr + cy * sp * cr q.orientation.z = sy * cp * cr - cy * sp * sr return q.orientation class VoiceControlNavNode: def __init__(self, name): rospy.init_node(name) self.words = None # 语音识别到的内容 self.running = True # 循环检测任务开关 self.move_base_status = 1 # 导航状态 1 是还在运动中,3是导航完毕 self.pick_location_time = rospy.get_param('/pick_location_time', 3) # map节点名 self.up_ramp_time = rospy.get_param('/up_ramp_time', 3.5) # map节点名 rospy.Service('~pick', Trigger, self.start_pick_callback) # 夹取测试 rospy.Service('~place', Trigger, self.start_place_callback) # 放置测试 rospy.Service('~detect', Trigger, self.start_detect_callback) # 检测测试 rospy.Service('~back', Trigger, self.start_back_callback) # 回到起始点测试 rospy.Service('~test', Trigger, self.test_callback) # 不通过语音识别启动 rospy.Service('~aligning', Trigger, self.start_aligning_callback) # 不通过语音识别启动 rospy.set_param('~target_shape', 'None') # 设置目标形状 rospy.set_param('~status', 'start') # 设置状态 self.language = os.environ['ASR_LANGUAGE'] # 读取语言 self.costmap = '/move_base/local_costmap/costmap' # costmap节点名 self.map_frame = rospy.get_param('~map_frame', '/map') # map节点名 self.slope_surface = rospy.get_param('~slope_surface', True) # map节点名 # 麦轮运动控制节点 self.mecanum_pub = rospy.Publisher('/controller/cmd_vel', Twist, queue_size=1) # 舵机控制 self.joints_pub = rospy.Publisher('/servo_controllers/port_id_1/multi_id_pos_dur', MultiRawIdPosDur, queue_size=1) # 等待舵机节点开启 while not rospy.is_shutdown(): try: if rospy.get_param('/servo_manager/init_finish') and rospy.get_param( '/joint_states_publisher/init_finish'): break except: rospy.sleep(0.1) # 初始状态 bus_servo_control.set_servos(self.joints_pub, 2, ((1, 500), (2, 760), (3, 15), (4, 150), (5, 500), (10, 200))) rospy.sleep(2) # 导航点发布 self.goal_pub = rospy.Publisher('/move_base_simple/goal', PoseStamped, queue_size=1) # 订阅路径规划返回话题 rospy.Subscriber('/move_base/result', MoveBaseActionResult, self.move_callback) # 订阅语音识别节点 # self.buzzer_pub = rospy.Publisher('/ros_robot_controller/set_buzzer', BuzzerState, queue_size=1) # 等待语音识别节点启动 while not rospy.is_shutdown(): try: if rospy.get_param('/voice_control/init_finish'): break except: rospy.sleep(0.1) self.vc_sub = rospy.Subscriber('/asr_node/voice_words', String, self.words_callback) rospy.loginfo('唤醒口令: 小迈小迈') rospy.loginfo('唤醒后15秒内可以不用再唤醒(No need to wake up within 15 seconds after waking up)') rospy.loginfo('控制指令: 开始执行任务 / 开始安全任务') # 等待导航启动 rospy.wait_for_message(self.costmap, OccupancyGrid) self.play('running') signal.signal(signal.SIGINT, self.shutdown) # 开始任务 self.run() # 不通过语音进行识别 def test_callback(self, msg): self.words = '开始安全任务' return TriggerResponse(success=True) # 夹取测试 def start_pick_callback(self, msg): rospy.ServiceProxy('/shape_recognition/start', Trigger)() # 启动夹取节点 rospy.ServiceProxy('/shape_recognition/pick', Trigger)() # 开始夹取 rospy.sleep(1) self.wait_pick_status() # 等待夹取完毕 self.play('7') rospy.ServiceProxy('/shape_recognition/stop', Trigger)() # 暂停夹取 return TriggerResponse(success=True) # 放置测试 def start_place_callback(self, msg): self.control(0, 0, 1, "place") # 导航并进行放置 return TriggerResponse(success=True) def start_detect_callback(self, msg): self.control(0, 0, 1, "detect") # 导航并进行检测 return TriggerResponse(success=True) def start_aligning_callback(self, msg): rospy.ServiceProxy('/position_correction/start', Trigger)() # 启动对齐 # self.play('6') rospy.ServiceProxy('/position_correction/' + 'pick' + "_1", Trigger)() # 夹取对齐 rospy.sleep(1) self.wait_correction_status() rospy.ServiceProxy('/position_correction/' + 'pick' + "_2", Trigger)() # 夹取动作 rospy.sleep(1) self.wait_correction_status() twist = Twist() twist.linear.x = 0.05 self.mecanum_pub.publish(twist) rospy.sleep(float(self.pick_location_time[0])) twist = Twist() self.mecanum_pub.publish(twist) return TriggerResponse(success=True) def start_back_callback(self, msg): # self.control(0,0,1,"back") # 导航并进行回到起始点 # rospy.ServiceProxy('/ramp/start', Trigger)() #启动坡道对齐 # rospy.ServiceProxy('/ramp/up', Trigger)() #开始进行坡道对齐 rospy.sleep(1) self.wait_ramp_status() twist = Twist() twist.linear.y = -0.1 self.mecanum_pub.publish(twist) rospy.sleep(0.6) twist = Twist() twist.angular.z = -0.5 self.mecanum_pub.publish(twist) rospy.sleep(0.2) twist = Twist() twist.linear.x = 0.3 self.mecanum_pub.publish(twist) rospy.sleep(float(self.up_ramp_time[0])) twist = Twist() twist.angular.z = 0.5 self.mecanum_pub.publish(twist) rospy.sleep(1) ###########3 self.mecanum_pub.publish(Twist()) return TriggerResponse(success=True) def play(self, name): voice_play.play(name, language=self.language) # 进行语音播报 def shutdown(self, signum, frame): self.running = False rospy.loginfo('shutdown') rospy.signal_shutdown('shutdown') # 进行语音识别 def words_callback(self, msg): self.words = json.dumps(msg.data, ensure_ascii=False)[1:-1] if self.language == 'Chinese': self.words = self.words.replace(' ', '') print('words:', self.words) if self.words is not None and self.words not in ['唤醒成功(wake-up-success)', '休眠(Sleep)', '失败5次(Fail-5-times)', '失败10次(Fail-10-times']: pass elif self.words == '唤醒成功(wake-up-success)': self.play('awake') elif self.words == '休眠(Sleep)': msg = BuzzerState() msg.freq = 1900 msg.on_time = 0.05 msg.off_time = 0.01 msg.repeat = 1 self.buzzer_pub.publish(msg) # 进行导航状态检测 def move_callback(self, msg): print(msg) try: if msg.status.status == 3: self.move_base_status = msg.status.status else: self.move_base_status = 1 except: self.move_base_status = 1 # 设置的导航点 def nav_position(self, x, y, w): pose = PoseStamped() pose.header.frame_id = self.map_frame pose.header.stamp = rospy.Time.now() pose.pose.position.x = x pose.pose.position.y = y pose.pose.orientation = rpy2qua(math.radians(0), math.radians(0), math.radians(w)) self.goal_pub.publish(pose) # 等到导航状态 def wait_nav_status(self): while True: # print(self.move_base_status) if self.move_base_status == 3: self.move_base_status = 1 break else: rospy.sleep(0.1) ####################1 # 等待对齐状态 def wait_correction_status(self): while True: correction_status = rospy.get_param('/position_correction/status', "stop") print('correction_status:', correction_status) if correction_status == "stop": break else: rospy.sleep(0.1) ###################1 # 等待上下坡状态 def wait_ramp_status(self): while True: correction_status = rospy.get_param('/ramp/status', "stop") print('ramp:', correction_status) if correction_status == "stop": break else: rospy.sleep(1) # 等到夹取状态 def wait_pick_status(self): while True: pick_status = rospy.get_param('/shape_recognition/status', "start") print('grab_status:', pick_status) if pick_status == "stop": rospy.set_param('/shape_recognition/status', "start") break else: rospy.sleep(0.1) ######################2 # 等待识别形状 def wait_yolo_status(self): while True: shape = rospy.get_param('/yolov5/shape', 'None') print('yolo_shape:', shape) if shape != "None": break else: rospy.sleep(0.3) # 总控制,x,y 为坐标 # x # y -y # -x # w为角度 # # 左:w 右:-w # set_status 为控制小车任务 pick、place、detect、back def control(self, x, y, w, set_status): self.nav_position(x, y, w) # 导航 rospy.sleep(2) self.wait_nav_status() # 等待导航 if set_status == 'pick1': # 夹取 set_status = "pick" correction_status = "stop" # twist = Twist() # twist.linear.x = 0.4##############0.2 # self.mecanum_pub.publish(twist) # rospy.sleep(0.5)#############1 # self.mecanum_pub.publish(Twist()) # rospy.ServiceProxy('/position_correction/start', Trigger)() #启动对齐################## # self.play('6') # rospy.ServiceProxy('/position_correction/' + set_status + "_1", Trigger)() # 夹取对齐 # rospy.sleep(0.5) # self.wait_correction_status() rospy.ServiceProxy('/position_correction/' + set_status + "_2", Trigger)() # 夹取动作 rospy.sleep(0.5) # self.wait_correction_status() twist = Twist() twist.linear.x = 0.05 self.mecanum_pub.publish(twist) rospy.sleep(float(self.pick_location_time[0])) twist.linear.x = 0 self.mecanum_pub.publish(twist) # twist = Twist()####################################################################### # self.mecanum_pub.publish(twist) # twist.angular.z = -0.5 # self.mecanum_pub.publish(twist) # rospy.sleep(0.3) # self.mecanum_pub.publish(Twist()) # rospy.ServiceProxy('/position_correction/stop', Trigger)() # 停止对齐 rospy.ServiceProxy('/shape_recognition/start', Trigger)() # 启动夹取话题 rospy.ServiceProxy('/shape_recognition/' + set_status, Trigger)() # 开始夹取 rospy.sleep(0.2) # ———————————————————————— self.wait_pick_status() self.play('7') rospy.ServiceProxy('/shape_recognition/stop', Trigger)() # 关闭夹取话题 twist = Twist() twist.linear.x = -0.2 self.mecanum_pub.publish(twist) rospy.sleep(0.5) ###################1 self.mecanum_pub.publish(Twist()) elif set_status == 'pick2': # 夹取 set_status = "pick" correction_status = "stop" # twist = Twist() # twist.linear.x = 0.4######################0.2 # self.mecanum_pub.publish(twist) # rospy.sleep(1)#######################2 # self.mecanum_pub.publish(Twist()) # rospy.ServiceProxy('/position_correction/start', Trigger)() #启动对齐####################### # self.play('6') # rospy.ServiceProxy('/position_correction/' + set_status + "_1", Trigger)() # 夹取对齐 # rospy.sleep(0.5) # self.wait_correction_status() rospy.ServiceProxy('/position_correction/' + set_status + "_2", Trigger)() # 夹取动作 rospy.sleep(0.5) # self.wait_correction_status() twist = Twist() twist.linear.x = 0.05 self.mecanum_pub.publish(twist) rospy.sleep(float(self.pick_location_time[0])) twist.linear.x = 0 self.mecanum_pub.publish(twist) # twist = Twist() # self.mecanum_pub.publish(twist) # twist.angular.z = -0.5 # self.mecanum_pub.publish(twist) # rospy.sleep(0.3) # self.mecanum_pub.publish(Twist()) # rospy.ServiceProxy('/position_correction/stop', Trigger)() # 停止对齐 rospy.ServiceProxy('/shape_recognition/start', Trigger)() # 启动夹取话题 rospy.ServiceProxy('/shape_recognition/' + set_status, Trigger)() # 开始夹取 rospy.sleep(0.2) # —————————————————— self.wait_pick_status() self.play('7') rospy.ServiceProxy('/shape_recognition/stop', Trigger)() # 关闭夹取话题 twist = Twist() twist.linear.x = -0.2 self.mecanum_pub.publish(twist) rospy.sleep(0.5) ###############1 self.mecanum_pub.publish(Twist()) elif set_status == "place": # 放置 # rospy.ServiceProxy('/position_correction/start', Trigger)() # self.play('8') # rospy.ServiceProxy('/position_correction/' + set_status + "_1" , Trigger)() # rospy.sleep(0.5) ##########1 # self.wait_correction_status() # rospy.ServiceProxy('/position_correction/' + set_status + "_2" , Trigger)() # rospy.sleep(0.5) #########1 # self.wait_correction_status() twist = Twist() twist.linear.x = 0.4 ###################0.2 self.mecanum_pub.publish(twist) rospy.sleep(0.62) #############1 self.mecanum_pub.publish(Twist()) rospy.ServiceProxy('/position_correction/' + set_status + "_3", Trigger)() # 放置物体 rospy.sleep(0.5) ##############################1 self.wait_correction_status() self.play('9') # twist = Twist() # twist.angular.z = -0.5 # self.mecanum_pub.publish(twist) # rospy.sleep(2) ##################5 # self.mecanum_pub.publish(Twist()) twist = Twist() twist.linear.x = -0.2 self.mecanum_pub.publish(twist) rospy.sleep(0.2) ##################1 self.mecanum_pub.publish(Twist()) # rospy.ServiceProxy('/position_correction/stop', Trigger)() elif set_status == "detect": # 检测 if self.slope_surface is not True: self.play('reached_explosion-proof_warehouse') else: self.play('2') # _rospy.ServiceProxy('/yolov5/start', Trigger)() rospy.sleep(0.1) self.wait_yolo_status() # rospy.sleep(25)############################################################## # shape = "cylinder" # _shape = "box" # shape = "cube" shape = rospy.get_param('/yolov5/shape', 'None') if self.slope_surface is not True: if shape == "cube": self.play('ruled_out_cuboid_explosive') elif shape == "box": self.play('ruled_out_cube_explosive') else: self.play('ruled_out_cylinder_explosive') else: if shape == "cube": self.play('3') elif shape == "box": self.play('4') else: self.play('5') # shape = "box" rospy.set_param('/shape_recognition/target_shape', shape) rospy.sleep(0.1) rospy.ServiceProxy('/yolov5/stop', Trigger)() rospy.sleep(0.1) #################0.2 # self.play('4') elif set_status == "back": # 回出发点 rospy.set_param('~status', 'stop') # self.play('10') if self.slope_surface: rospy.ServiceProxy('/ramp/up', Trigger)() # 开始进行坡道对齐 rospy.sleep(0.1) ###############__1 self.wait_ramp_status() twist = Twist() twist.linear.y = -0.1 self.mecanum_pub.publish(twist) rospy.sleep(0.6) twist = Twist() twist.angular.z = -0.5 self.mecanum_pub.publish(twist) rospy.sleep(0.1) twist = Twist() twist.linear.x = 0.3 self.mecanum_pub.publish(twist) rospy.sleep(float(self.up_ramp_time[0])) twist = Twist() twist.angular.z = 0.5 self.mecanum_pub.publish(twist) rospy.sleep(0.1) ##############################3 self.mecanum_pub.publish(Twist()) def run(self): rospy.ServiceProxy('/yolov5/start', Trigger)() while not rospy.is_shutdown() and self.running: # self.words = "开始安全任务" # print(self.words) if self.words is not None: #### if self.slope_surface is not True: #### str_data = "开始安全任务" #### else: str_data = "开始安全任务" #### if self.words == str_data: print('>>>>>>>>>>>>>>>>>>>> 开始任务<<<<<<<<<<<<<<<<<') self.vc_sub.unregister() # 注销语音识别话题 # self.buzzer_pub.unregister() # if self.slope_surface is not True: # self.play('start_security_mission') # else: self.play('1') # twist = Twist() # twist.linear.y = -0.3 # self.mecanum_pub.publish(twist) # rospy.sleep(1) twist = Twist() twist.linear.x = 0.5 self.mecanum_pub.publish(twist) rospy.sleep(0.5) # self.mecanum_pub.publish(Twist()) # twist = Twist() # twist.angular.z = -0.5 # self.mecanum_pub.publish(twist) # rospy.sleep(1.0) # self.mecanum_pub.publish(Twist()) # twist = Twist() # twist.linear.x = 0.2 # self.mecanum_pub.publish(twist) # rospy.sleep(1) # self.mecanum_pub.publish(Twist()) print("go") self.move_base_status = 1 self.control(1.57, -0.5, -92, "detect") # 进行检测 self.control(1.32, -3.15, 0, "pick1") # 进行夹取 self.control(1.42, -0.29, 45, "place") # 进行放置 self.control(0.35, -3.14, 180, "pick2") # 进行夹取 self.control(1.42, -0.29, 45, "place") # 进行放置 # self.control(0.2 , -0.03, 180,"") #回到起始点 self.control(0.1, 0.04, 180, "back") # twist = Twist() # twist.linear.y = 1.0 # self.mecanum_pub.publish(twist) # rospy.sleep(1.7) # rospy.ServiceProxy('/yolov5/stop', Trigger)() # rospy.sleep(0.5) rospy.ServiceProxy('/position_correction/colse', Trigger)() # 关闭对齐节点 rospy.ServiceProxy('/shape_recognition/colse', Trigger)() # 关闭夹取节点 # if self.slope_surface: # rospy.ServiceProxy('/ramp/start', Trigger)() #启动坡道对齐 # self.control(0.1 ,0.04, 180,"back") #回到起始点 # self.play('11') # else: self.control(0.1, 0.04, 180, "back") # 回到起始点 # twist = Twist() # twist.linear.y = 0.1 # self.mecanum_pub.publish(twist) # rospy.sleep(4.5) self.mecanum_pub.publish(Twist()) self.play('mission_accomplished') print('>>>>>>>>>>>>>>>>>>>> 结束任务<<<<<<<<<<<<<<<<<') elif self.words == '休眠(Sleep)': rospy.sleep(0.01) self.words = None else: rospy.sleep(0.01) self.mecanum_pub.publish(Twist()) if __name__ == "__main__": VoiceControlNavNode('voice_control_nav') 这段代码有什么问题

filetype

def Page_Check(self, x, y): # 防止概率出现的坐标点击失效情况 while (1): point_back_shot_test = self.d.find_component( BY.text("拍照")).getBoundsCenter() print(point_back_shot_test.X, point_back_shot_test.Y) if (point_back_shot_test.X >= 580 and point_back_shot_test.X <= 712) and ( point_back_shot_test.Y >= 2073 and point_back_shot_test.Y <= 2165): print("======当前页面为拍照页面======") break print("======目前在专业相机页面======") self.d.touch((x, y)) time.sleep(1) def ResourceUsage_PerformanceDynamic_Camera_0010(self): # 1. 打开相机,等待5s self.d.start_app("com.huawei.camera", "com.huawei.camera") time.sleep(5) # 2. 点击拍照模式,等待2s self.d.touch(BY.text("拍照")) time.sleep(2) # # CommonUtilsAOSP.camera_record_settings(self.d, "[16:9] 1080p", "30 fps") # 2. 获取测试过程需要的坐标点点击人像模式 point_back_people = self.d.find_component(BY.text("人像")).getBoundsCenter() center_point = self.d.find_component(BY.key("com.huawei.camera:id/main_view_base")).getBoundsCenter() self.d.touch((point_back_people.X, point_back_people.Y)) # 切换到录像模式 point_back_video = self.d.find_component(BY.text("录像")).getBoundsCenter() self.d.touch((point_back_video.X, point_back_video.Y)) # 切换到专业模式 point_back_pro = self.d.find_component(BY.text("专业")).getBoundsCenter() self.d.touch((point_back_pro.X, point_back_pro.Y)) # 切换到拍照模式 point_back_shot = self.d.find_component(BY.text("拍照")).getBoundsCenter() self.d.touch((point_back_shot.X, point_back_shot.Y)) time.sleep(1) print(point_back_shot.X, point_back_shot.Y) # 防止概率出现的坐标点击失效情况 self.Page_Check(point_back_shot.X, point_back_shot.Y) # 切换前置摄像头 point_front_switch = self.d.find_component( BY.key("com.huawei.camera:id/iv_camera_switch_single_outCircle")).getBoundsCenter() self.d.touch((point_front_switch.X, point_front_switch.Y)) # 切换拍照模式 point_front_shot = self.d.find_component(BY.text("拍照")).getBoundsCenter() self.d.touch((point_front_shot.X, point_front_shot.Y)) time.sleep(1) # 切换后置摄像头 self.d.touch((point_front_switch.X, point_front_switch.Y)) # 检查Zoom1倍 if not self.d.check_component_exist(BY.text("1x")): zoom_index1_point = self.d.find_component(BY.key("com.huawei.camera:id/one_button_bg")).getBoundsCenter() self.d.touch((zoom_index1_point.X, zoom_index1_point.Y)) time.sleep(5) tag = "1" self.cpu_collect._start_task(rounds=int(self.round), tag=tag, cpu_time=30) time_start = time.time() # 保证第一个点击操作可以被采集到 time.sleep(2) # 点击屏幕中心,避免进入休眠模式 self.d.touch((center_point.X, center_point.Y)) time.sleep(2) # 3. 预览30s CommonUtilsAOSP.record_test_step_bytrace(self.d, package_name=self.packagename, case_name=self.TAG, step_code_num="0001&桌面-点击-页面切换-相机首页-1、点击人像模式,等待5s", tag_step="Start") # Step.点击人像模式,等待5s self.d.touch((point_back_people.X, point_back_people.Y)) time.sleep(5) CommonUtilsAOSP.record_test_step_bytrace(self.d, package_name=self.packagename, case_name=self.TAG, step_code_num="0001&桌面-点击-页面切换-相机首页-1、点击人像模式,等待5s", tag_step="End") # Step.点击录像模式,等待5s CommonUtilsAOSP.record_test_step_bytrace(self.d, package_name=self.packagename, case_name=self.TAG, step_code_num="0002&相机首页-点击-页面切换-拍照页面-2、点击录像模式,等待5s", tag_step="Start") self.d.touch((point_back_video.X, point_back_video.Y)) time.sleep(5) CommonUtilsAOSP.record_test_step_bytrace(self.d, package_name=self.packagename, case_name=self.TAG, step_code_num="0002&相机首页-点击-页面切换-拍照页面-2、点击录像模式,等待5s", tag_step="End") # Step.点击专业模式,等待5s CommonUtilsAOSP.record_test_step_bytrace(self.d, package_name=self.packagename, case_name=self.TAG, step_code_num="0003&相机首页-点击-页面切换-拍照页面-3、点击专业模式,等待5s", tag_step="Start") self.d.touch((point_back_pro.X, point_back_pro.Y)) time.sleep(5) CommonUtilsAOSP.record_test_step_bytrace(self.d, package_name=self.packagename, case_name=self.TAG, step_code_num="0003&相机首页-点击-页面切换-拍照页面-3、点击专业模式,等待5s", tag_step="End") # Step.点击拍照模式,等待5s CommonUtilsAOSP.record_test_step_bytrace(self.d, package_name=self.packagename, case_name=self.TAG, step_code_num="0004&相机首页-点击-页面切换-拍照页面-4、点击拍照模式,等待5s", tag_step="Start") self.d.touch((point_back_shot.X, point_back_shot.Y)) time.sleep(5) CommonUtilsAOSP.record_test_step_bytrace(self.d, package_name=self.packagename, case_name=self.TAG, step_code_num="0004&相机首页-点击-页面切换-拍照页面-4、点击拍照模式,等待5s", tag_step="End") # Step.切换至前置,等待5s CommonUtilsAOSP.record_test_step_bytrace(self.d, package_name=self.packagename, case_name=self.TAG, step_code_num="0005&相机首页-点击-页面切换-拍照页面-5、切换至前置,等待5s", tag_step="Start") self.d.touch((point_front_switch.X, point_front_switch.Y)) time.sleep(5) CommonUtilsAOSP.record_test_step_bytrace(self.d, package_name=self.packagename, case_name=self.TAG, step_code_num="0005&相机首页-点击-页面切换-拍照页面-5、切换至前置,等待5s", tag_step="End") # Step.切换至拍照模式 CommonUtilsAOSP.record_test_step_bytrace(self.d, package_name=self.packagename, case_name=self.TAG, step_code_num="0006&桌面-点击-页面切换-相机首页-6、点击拍照模式,等待5s", tag_step="Start") self.d.touch((point_front_shot.X, point_front_shot.Y)) time.sleep(5) CommonUtilsAOSP.record_test_step_bytrace(self.d, package_name=self.packagename, case_name=self.TAG, step_code_num="0006&桌面-点击-页面切换-相机首页-6、点击拍照模式,等待5s", tag_step="End") time_end = time.time() if time_end - time_start < 40: time.sleep(30 - (time_end - time_start)) self.cpu_collect._stop_task(self.report_path, tag=tag) time.sleep(10) # 点击屏幕中心,避免进入休眠模式 self.d.touch((center_point.X, center_point.Y)) time.sleep(1) # 4.判断测试结束后页面是否人像和前置 # self.d.check_component_exist(BY.key("TAB_BAR_LIVE_PHOTO_TAB_BAR_CLOSE")) point_front_people = self.d.find_component(BY.text("人像")).getBoundsCenter() host.check(point_back_people.X, point_front_people.X) host.check(point_back_people.Y, point_front_people.Y) time.sleep(2) # 切换至后置摄像头 point_front_switch = self.d.find_component( BY.key("com.huawei.camera:id/iv_normal_control_bar_switcher_single")).getBoundsCenter() self.d.touch((point_front_switch.X, point_front_switch.Y))

周玉坤举重
  • 粉丝: 85
上传资源 快速赚钱