基于python arduino 自动测试框架

硬件架构

pc camera

pc 通过usb串口与arduino通信 控制继电器 实现开关机

pc通过串口控制arduino 屏幕和电源

pc通过camera获取屏幕图像ocr做出结果判断

https://blog.csdn.net/kamille1024/article/details/119951948

https://blog.csdn.net/qq_38017966/article/details/118724459


上位机 Pyhon 配置环境

1. 串口:

安装

  • pip install pyserial

解决办法 使用ptcharm terminal 安装 pyserial

 

2. 问题 import cv2

ptcharm terminal 安装 opencv-python

pip3 install opencv-python

from PIL import Image安装PIL: pip install pillow

3. OCR 配置

ubuntu 参考:ubuntu中pytesseract 安装与使用示例

  • 安装OCR
pip install pytesseract -i https://pypi.douban.com/simple

安装Index of /tesseract到windows系统,记下安装路径

打开方式可以在pycharm 代码中输入输入import pytesseract.pytesseract
然后按住ctrl键鼠标对着pytesseract右键点击进去

将tesseract_cmd = 'tesseract’修改为:

tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'

增加两个环境变量

识别中文,单独安装上识别引擎是无法识别中文的,需要另外下载一些东西

https://github.com/tesseract-ocr/tessdata

将里面的 chi_sim.traineddata、chi_sim_vert.traineddata、chi_tra.traineddata和chi_tra_vert.traineddata文件放入tesseract-ocr的tessdata目录下(C:\Program Files\Tesseract-OCR\tessdata)

可以使用windows命令直接检查环境是否成功,empty page说明未识别到,识别出的结果会存到同目录下的result.txt


Ubuntu environment setup

check serial port

iffy@iffy-EP43-DS3L:~$ dmesg | grep tty
[    0.143425] printk: console [tty0] enabled
[    0.412498] 00:02: ttyS0 at I/O 0x3f8 (irq = 4, base_baud = 115200) is a 16550A
[ 1444.721675] cdc_acm 4-1:1.0: ttyACM0: USB ACM device

Com port is ACM0

Serial port tool

  1. # 安装

  2. sudo apt install cutecom

  3. # 启动

  4. sudo cutecom

Permission issue

Traceback (most recent call last):
  File "/home/iffy/PycharmProjects/pythonProject/venv/lib/python3.8/site-packages/serial/serialposix.py", line 322, in open
    self.fd = os.open(self.portstr, os.O_RDWR | os.O_NOCTTY | os.O_NONBLOCK)
PermissionError: [Errno 13] Permission denied: '/dev/ttyACM0'

temp solution: sudo chmod 666 /dev/ttyACM0

Formal solution

Permission denied on /dev/ttyACM0 - #27 by system - Installation & Troubleshooting - Arduino Forum

You can solve it by adding yourself to the dialout group in Debian-based Linux, or uucp group in Arch Linux.

sudo usermod -a -G dialout $USER

OR

sudo usermod -a -G uucp $USER

open CV can't open camera

    cv2.imwrite((outputPath + currenttime + test_name + '_aoriginal.jpg'), gray)
cv2.error: OpenCV(4.5.5) /io/opencv/modules/imgcodecs/src/loadsave.cpp:801: error: (-215:Assertion failed) !_img.empty() in function 'imwrite'

check camera work or not

sudo apt-get install cheese
cheese

check camera id

sudo apt install v4l-utils
v4l2-ctl -d  /dev/video0 --all
Driver Info:
	Driver name      : uvcvideo
	Card type        : UVC Camera (046d:0918): Logitec
	Bus info         : usb-0000:00:1a.7-5
	Driver version   : 5.13.19
	Capabilities     : 0x84a00001
		Video Capture
		Metadata Capture
		Streaming
		Extended Pix Format
		Device Capabilities
	Device Caps      : 0x04200001
		Video Capture
		Streaming
		Extended Pix Format
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:
	Width/Height      : 640/480
	Pixel Format      : 'YUYV' (YUYV 4:2:2)
	Field             : None
	Bytes per Line    : 1280
	Size Image        : 614400
	Colorspace        : Default
	Transfer Function : Default (maps to Rec. 709)
	YCbCr/HSV Encoding: Default (maps to ITU-R 601)
	Quantization      : Default (maps to Limited Range)

solution:

self.cap = cv2.VideoCapture(0,cv2.CAP_DSHOW)

改为:

self.cap = cv2.VideoCapture(0)

Install tesseract on ubuntu

sudo apt-get install tesseract-ocr 


Python 代码逻辑

  1. 连接并打开串口
  2. 接通继电器

        Loop

           1.创建目录

           2. 判断是否黑色

           3. OCR 后图片放入目录,输出测试结果

           4. 点击Home

           5. 判断是否黑色

           6. OCR 后图片放入目录,输出测试结果

           7. 点击最后一个按钮

           8. OCR 后图片放入目录, 输出测试结果

           9. 重命名目录结果

      

Pytest 配置:

pip install -U pytest

Allure 生成测试报告:

pip install allure-pytest

Release 2.17.3 · allure-framework/allure2 · GitHub

修改Log allure修改默认logo方法 - 知乎

C:\allure2.17.3\plugins\custom-logo-plugin\static\styles.css

.side-nav__brand {
  background: url('ic_launcher.png') no-repeat left center !important;
  margin-left: 10px;
  height: 200px;
  width: 200px;
}
.side-nav__brand-text{
  /* 去掉图片后边 allure 文本 */
  display: none;
}
.side-nav__brand:after{
  content: "myTitle";
  margin-left: 18px;
  height: 20px;
  font-family: kai;
  font-size: 13px;
}

pycharm中pytest如何将⼀条⽤例执⾏多次

pytest.main(['-s', '-vv', '--alluredir', 'temp','--count=10'])

下位机 Arduino 部分

开关机代码

    int pinRelay = 11; //管脚D3连接到继电器模块的信号脚
    int pinJidianqi = 7; //管脚D3连接到继电器模块的信号脚
     
    void setup() {
      pinMode(pinRelay, OUTPUT); //设置pinRelay脚为输出状态
      pinMode(pinJidianqi, OUTPUT); //设置pinRelay脚为输出状态
    }
     
    void loop() { 
       digitalWrite(pinRelay, HIGH);//输出HIGH电平,继电器模块闭合
       digitalWrite(pinJidianqi, HIGH);//输出HIGH电平,继电器模块闭合
       delay(300000); //等待300000毫秒 5分钟
     
       digitalWrite(pinRelay, LOW);//输出LOW电平,继电器模块断开
       digitalWrite(pinJidianqi, LOW);//输出LOW电平,继电器模块断开
       delay(600000); //等待300000毫秒 6分钟
    }

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值