Python自动化生成代码以及验证代码汇总

python 软件自动化

  • 0 绪
  • 1. 自动打开、编译、下载:
    • 1.1 自动打开工程,打开软件
    • 1.2. 自动点击编译,下载按钮,
  • 2. 自动写代码
    • 2.1 对工程进行更改
    • 2.2 对C文件更改
  • 3 校验的部分
    • 3.1 读取高低电平
    • 3.2 将电平上传PC
    • 3.3 上位机接收数据
  • 4 硬件的准备以及连接

0 绪

先说明一下整个计划,分成三个部分,

  1. 自动生成需要的代码编译下载,
  2. 验证代码的正确性
  3. 硬件部分的实现

这样自动化方式,在芯片测试上减少重复劳动,并且完善代码生成IDE工具。

1. 自动打开、编译、下载:

1.1 自动打开工程,打开软件

下面代码是通过绝对路径来打开Keil工程

import subprocess
import os
main = "C:/Users/siyu/.PyCharmCE2019.1/config/scratches/two/main.uvproj"
if os.path.exists(main):
    rc,out= subprocess.getstatusoutput(main)
    print (rc)
    print ('*'*10)
    print (out)

参考:
python中3种调用可执行文件.exe的方法

python实现对windows窗口的操作需要涉及到的库有ctypes 、win32GUI、pywin32、win32con等,这些还需要继续丰富知识。

1.2. 自动点击编译,下载按钮,

使用python实现打开工程文件,使用python中的pyautiogui实现对按键的定位

包的安装

pip install pyautogui
import pyautogui
#判定目标截图在系统上的位置,两个方式都可以实现
#location=pyautogui.locateOnScreen(image='autotest.png')
location=pyautogui.locateOnScreen(image='C:/Users/siyu/Pictures/autotest.png')
#输出坐标
print(location)
#利用center()函数获取目标图像在系统中的中心坐标位置
x,y=pyautogui.center(location)
print('center()',x,y)

#对识别出的目标图像进行点击
#参数x,y代表坐标位置,clicks代表点击次数,button可以设置为左键或者右键
pyautogui.click(x=x,y=y,clicks=1,button='left')

这个已近实现了基于GUI上的操作,区别在与点击不同的按键,需要动态增加按钮。

参考代码
使用的
【pyautogui】利用Python进行windows系统上的图像识别与点击(Mac OS系统也可以)

其他
【Python】通过截图匹配原图中的位置(opencv)
pyppeteer(六)–通过opencv查找图片在另一张图片的位置

2. 自动写代码

这个分成三个部分
a)实现工程中添加C文件
b)对C文件中的代码进行更改
C) 优化后GUI的实现

2.1 对工程进行更改

实现步骤:
文本方式打开工程文件 >>>添加文件

实现对工程文件的读取,并且存到str数组中

f = open("main.uvproj","r")   #设置文件对象

str = f.read()     #将txt文件的所有内容读入到字符串str中
print(str)
f.close()   #将文件关闭

实现main字符串的查找,以及输出行号

findMusic="main";
MusicLine=0;
f = open('main.c','r')

for lines in f.readlines():
    MusicLine=MusicLine+1;
    if lines.find(findMusic)!=-1:
        print(lines)
        print("find it .........................")
        print(MusicLine)
    #print(lines,end='')
f.close()

python实现指定行的更改
代码未验证,应该是python2的代码

#coding=utf-8
lines=[]
f=open("d:\\1script\\1.txt",'r')  #your path!
for line in f:
    lines.append(line)
f.close()
print lines
lines.insert(3,"666\n")           #第四行插入666并回车
s=''.join(lines)
f=open("d:\\1script\\1.txt",'w+') #重新写入文件
f.write(s)
f.close()
del lines[:]                      #清空列表
print lines

参考代码:
python如何打开一个txt文件 实现了读写的两个功能。
python对文件的指定行写入

2.2 对C文件更改

实现步骤:打开C文件>>>定位需要更改的位置>>>对比修改库,修改代码>>>保存退出
需要库函数实现代码的定位,识别出全部代码含义实现困难,只能生成代码区域禁止编辑,

实现c文件的读取,以及存储到str中

f = open("main.c","r")   #设置文件对象

str = f.read()     #将txt文件的所有内容读入到字符串str中
print(str)
f.close()   #将文件关闭

做成可复制的,

  1. 在指定行插入代码,基于Excel 索引,可以多行插入
  2. 插入的代码可以根据GPIO自动生成和更改关键信息,基于字符查找,或者全局变量更改,映射成不同的gpio。映射关系使用Excel输入。

PS:上面提到的Excel输入可以换成GUI界面的输入。以及图片直接识别出映射关系。

3 校验的部分

实现步骤:
gpio 读取高低电平>>> 将高低电平上传PC>>>PC根据上传的数据,以及代码编写的部分,得知是否满足要求

3.1 读取高低电平

FPGA 的高速口可以实现GHZ的判断,但是需要确认普通IO口最大的读取速度。

常见接口速度

接口 速度
IIC 100K、400K、1M、3.4M等
SPI 50M max?\STM32 最大18M
SATA 1.0—1.5Gbps \ 2.0—3Gbps \ 3.0—6Gbps
UART 一般不超过20K?

一般测试最高速度则是18M,如果富裕的设计的话50M最大即可。如果有高速的要求,需要重新绘制PCB,或者提前对接特定的接口。

3.2 将电平上传PC

通过USB的协议上传,常见的有使用特定的USB芯片,实现2.0的传输。基本可以满足需求?

USB的速度:

外文名称 时间 传输速率 供电电压 供电电流
USB1.0 1996年 1.5 Mbps(0.12 MB/s) (Low-Speed) 5V 500mA
USB1.1 1998年 12 Mbps(1.5 MB/s) (Full-Speed) 5V 500mA
USB2.0 2000年 480Mbps(60 MB/s)(High-speed) 5V 500mA
USB3.0 2008年 5.0Gbps(500MB/s )(Super-speed) 5V 900mA
USB3.1 10.0Gbps(1000MB/s )(Super-speed)

USB传输到电脑
小梅哥:USB2.0 CY7C68013 基于小梅哥ACX720 FPGA开发板,采用了芯片厂家推荐的驱动。
正点原子达芬奇FPGA开发板

3.3 上位机接收数据

这个部分需要开发对应的接收工具,基于USB的学习。这个部分暂时没有相对应的知识储备。

4 硬件的准备以及连接

FPGA >>>高速连接器>>> 转接板>>>FPGA子板

前两个则是买的现成的撒灵思开发板,后面的转接板则是多层板,

转接板之后可以接实现逻辑分析的FPGA,也可以接现有的电压转换PCB。

PS:可能遇到的问题:
a)电压匹配的问题。现有FPGA输出电压都是1.8V,
b)板子信号衰减的问题

你可能感兴趣的:(python,python,自动化,开发语言)