IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> Python自动化生成代码以及验证代码汇总 -> 正文阅读

[系统运维]Python自动化生成代码以及验证代码汇总

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口最大的读取速度。

常见接口速度

接口速度
IIC100K、400K、1M、3.4M等
SPI50M max?\STM32 最大18M
SATA1.0—1.5Gbps \ 2.0—3Gbps \ 3.0—6Gbps
UART一般不超过20K?

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

3.2 将电平上传PC

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

USB的速度:

外文名称时间传输速率供电电压供电电流
USB1.01996年1.5 Mbps(0.12 MB/s) (Low-Speed)5V500mA
USB1.11998年12 Mbps(1.5 MB/s) (Full-Speed)5V500mA
USB2.02000年480Mbps(60 MB/s)(High-speed)5V500mA
USB3.02008年5.0Gbps(500MB/s )(Super-speed)5V900mA
USB3.110.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)板子信号衰减的问题

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-12-06 15:37:23  更:2021-12-06 15:38:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 2:56:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码