QT实现批量配置

需求

  • 一些参数需要批量化配置
  • 之前搭建的FPGA的寄存器控制模型
    • 使用AXI-lite搭建
    • 直接操作上位机
  • 这里需要一个可以快速配置所有参数的上位机
  • 需要保存文件,可以保留上一次的参数

直接实现

  • 使用输入框复制,每个输入框配置一个下载按钮
  • 加载的时间很长,且实现繁琐
    • 需要不断地拖动UI控件

表格实现

  • 将参数直接制作成表格
  • 在表格中完成参数地控制
  • 参数直接全部丢给ARM,UDP的宽度足以支撑这个参数同时更新

实现步骤

  • 库文件直接同名导入头文件
#include "fpga_subs.h"
#include "ui_fpga_subs.h"
#include <QFile>
#include <QFileInfo>
#include <QDebug>
#include <QTableWidgetItem>
fpga_subs::fpga_subs(QWidget *parent) :
QWidget(parent),
ui(new Ui::fpga_subs)
{
ui->setupUi(this); //QRegExp regx("[A-Fa-f0-9]{4}");
//QValidator *validator = new QRegExpValidator(regx, ui->lineEdit);
//ui->lineEdit->setValidator(validator); table = new QTableWidget(row,column+1,this);
ui->ui_table_layout->addWidget(table);
table->resize(900,350);
QStringList head_lab;
head_lab << "0x0000" << "0x0001" << "0x0002" << "0x0003" << "note";
table->setHorizontalHeaderLabels(head_lab);
QStringList column_lab;
for(int i = 0; i < row * column; i=i+4)
{
column_lab << QString::number(i);
table->setVerticalHeaderLabels(column_lab);
} } fpga_subs::~fpga_subs()
{
delete ui;
} void fpga_subs::update_file_path(QList<QString> p_list)
{
p_fpga_file = p_list[P_FPGA_FILE]; //path update
on_ui_rd_param_clicked(); //update chart
} void fpga_subs::on_ui_rd_param_clicked()
{
QString pns_ini;
pns_ini = p_fpga_file + "fpga_ini.dat";
QFile f(pns_ini);
QFileInfo fi(pns_ini); qDebug() << pns_ini;
if(!fi.exists())
{
QString info = "no file " + pns_ini + " to read";
emit info_trig(0,CODE_FPGA_SET,"error",info);
return;
}
f.open(QIODevice::ReadOnly | QIODevice::Text);
l_fpga_set.clear();
for(int j = 0; j < row * column; j++)
{
l_fpga_set.append("0");
}
int i = 0;
while(!f.atEnd() && i < row * column)
{
QByteArray b_line = f.readLine();
QString s_line(b_line);
s_line.remove("\n");
l_fpga_set.replace(i,s_line);
i ++;
}
f.close();
qDebug() << l_fpga_set; for(int i = 0; i <row;i++)
{
for(int j = 0; j < column; j++)
{
//table->item(i,j)->setText(l_fpga_set[i*4+j]);
QTableWidgetItem *item = new QTableWidgetItem;
item->setText(l_fpga_set[i*4+j]);
table->setItem(i,j,item);
//delete item;
}
}
}
void fpga_subs::on_ui_wr_param_clicked()
{
l_fpga_set.clear();
for(int i = 0; i <row;i++)
{
for(int j = 0; j < column; j++)
{
//table->item(i,j)->setText(l_fpga_set[i*4+j]);
QTableWidgetItem *item_rd = new QTableWidgetItem;
item_rd = table->item(i,j);
if(item_rd == NULL)
{
l_fpga_set.append("0");
}
else
{
l_fpga_set.append(item_rd->text());
}
}
}
//write file
QString pns_ini;
pns_ini = p_fpga_file + "fpga_ini.dat";
QFile f(pns_ini);
f.open(QIODevice::WriteOnly | QIODevice::Text);
QTextStream f_out(&f);
f.seek(0);
for(int i = 0; i < row * column; i++)
{
f_out << l_fpga_set[i] << "\n";
}
f.close(); }

效果

  • 直接将表格的数据和文件连接
  • 配置的参数保存在文件中
  • 后续将写入部分直接发送信号UDP模块就可以实现实际配置到FPGA

QT实现参数批量配置的更多相关文章

  1. qt configure参数配置介绍

    ======================================全文是按照./configure -help来翻译的==================================== ...

  2. Linux下Qt的安装与配置

    参考资料:http://www.cnblogs.com/emouse/archive/2013/01/28/2880142.html Linux 下编译.安装.配置 QT 下载qt 这里用的是4.7. ...

  3. Qt configure 参数不完全说明

    只需要加个 -fast参数就ok了.其他参数视自己情况而定,比如你不需要qt3支持可以添加-no-qt3support,或者不需要webkit插件 -no-webkit配置参数选项: 前面是*号的表示 ...

  4. BatchConfigTool批量配置工具

    海康批量配置工具BatchConfigTool是一款支持设备在线搜索.批量配置参数.批量升级等功能的软件,支持对大批量设备同时进行各参数的配置,极大的简化了操作过程! 软件功能 1.对在线设备进行搜索 ...

  5. Qt configure 参数

    在编译QT前,可加各种参数来定制自己想要的QT库.这对需要裁减QT库的朋友来说非常重要.对于如何编译QT,可以参考:http://hi.baidu.com/agassi%5Fp/blog/item/4 ...

  6. thinkphp 批量配置

    C配置方法支持批量配置,例如: $config = array('WEB_SITE_TITLE'=>'ThinkPHP','WEB_SITE_DESCRIPTION'=>'开源PHP框架' ...

  7. HighCharts选项和参数详细配置查询表

    概述:作为一款出色的交互图表制作工具,HighCharts有着全面的选项.参数等配置信息.为了帮助大家进一步掌握HighCharts,今天我们为大家整理了HighCharts的所有配置信息和说明,将其 ...

  8. Mybatis 插入与批量插入以及多参数批量删除

    实体类: import java.io.Serializable; public class AttachmentTable implements Serializable { private sta ...

  9. struts文件上传拦截器中参数的配置(maximumSize,allowedTypes ,allowedExtensions)问题

    <interceptor-ref name="fileUpload"> <param name="allowedTypes">image ...

  10. 【转】生产环境MySQL Server核心参数的配置

         ⑴ lower_case_table_names              ● 推荐理由                    GNU/Linux 平台,对数据库.表.存储过程等对象名称大小 ...

随机推荐

  1. GaussDB(for MySQL) Serverless全面商用:无感弹性,极致性价比

    本文分享自华为云社区<GaussDB(for MySQL) Serverless全面商用:无感弹性,极致性价比>,作者: GaussDB 数据库. 技术背景 对于现代企业级IT系统,数据库 ...

  2. Swoole从入门到入土(15)——WebSocket服务器[初步接触]

    WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议.换句话说,Websocket让web可以与服务端实现长连接. 在Swoole中,通过内置的 WebSock ...

  3. Linux crontab不执行

    Linux 系统里面计划任务,crontab 没有如期执行这是运维工作中比较常见的一种故障了. 下面结合最近部署自动脚本不执行问题排查步骤: 1.检查 crontab 服务是否正常 [dmdba@te ...

  4. CentOS 8安装RabbitMQ

    第一步:安装yum仓库 导入签名KEY: ## primary RabbitMQ signing key ## 这一步如果因为网络问题下载不成功,可以先将签名文件下载下来,本地导入 rpm --imp ...

  5. NSIS制作安装包笔记(二):NSIS使用NSIS+Qt界面制作安装包流程

    前言   Nsis可以使用duilib也可以使用qt界面,笔者主要qt,本文章梳理nsis+qt制作安装包的基本流程.   下载Nsis-Ui-Plugin插件   Github地址:https:// ...

  6. python中partial用法

    应用 典型的,函数在执行时,要带上所有必要的参数进行调用.然后,有时参数可以在函数被调用之前提前获知.这种情况下,一个函数有一个或多个参数预先就能用上,以便函数能用更少的参数进行调用. 示例pyqt5 ...

  7. Hugo 建站经验之谈

    前言 建站工具,早已不是一个新颖的话题,抛开可视化建站单论开发层面,各类语言都有推出广受欢迎的建站框架,比如 Python 开发的 Pelican,JavaScript 开发的 Hexo,以及市场份额 ...

  8. Android Studio 有关 setOnClickListener() 方法的总结

    •前言 在 Android Studio 开发中,你会经常和这种代码打交道: 1 package com.example.activitytest; 2 public class FirstActiv ...

  9. Centos安装常见软件

    一.vscode sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc sudo sh -c 'echo -e &qu ...

  10. Android 桌面小组件使用

    原文: Android 桌面小组件使用-Stars-One的杂货小窝 借助公司上的几个项目,算是学习了Android桌面小组件的用法,记下踩坑记录 基本步骤 1.创建小组件布局 这里需要注意的事,小组 ...