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. NES/FC游戏: 勇者斗恶龙2

    武器 名称 攻击力 价格 主角 王子 公主 来源 Bamboo Stick 2 - x x x Wielded by the Princess of Moonbrooke at the start o ...

  2. 【framework】ConfigurationContainer简介

    1 前言 ​ 如图所示,ConfigurationContainer 是 AMS 家族的重要基类:WindowContainer 继承自 ConfigurationContainer,是 WMS 家族 ...

  3. OCP试题解析之052-- DROP PROFILE app_user

    133.You created a profile APP_USER and assigned it to the users. After a month, you decide to drop t ...

  4. C# readonly修饰符

    readonly修饰符在作祟 强化官方解释: readonly是一个修饰字段的关键字:被它修饰的字段只有在初始化或者构造函数中才能够赋值. readonly修饰的引用类型字段必须始终引用同一对象: r ...

  5. win32 - 写入安全日志(AuthzRegisterSecurityEventSource和AuthzReportSecurityEvent)

    微软文档介绍说, 安全日志在其他两个重要方面与其他日志不同.首先,在默认配置中,它受到强大的访问控制列表(ACL)和特权检查的保护,这将可以读取其内容的个人的范围限制为本地系统,管理员和安全特权的持有 ...

  6. 【Android逆向】破解看雪9月算法破解第一题

    1. 安装apk到手机 2. 随意输入账号和密码,点击register,报错crackme1:ERROR 3. 将apk拖入到jadx中进行观察 public native String regist ...

  7. 谈一谈如何使用etcd中的事务

    本文内容来源于自己学习时所做的记录,主要来源于文章最后的参考链接,如有侵权,请联系删除,谢谢! etcd 是一个 key/value 类型的数据库.既然我们需要存储数据,必然会面临这样一个需求,即希望 ...

  8. 在Ubuntu搭建DHCP服务器

    一.提供DHCP的服务器,自己必须有固定的IP地址 不然局域网就乱了,服务器自身启动(比如搭建完DHCP服务后,重新启动了服务器)的时候,DHCP服务器没有IP地址,无法和自己的DHCP服务通信. 在 ...

  9. FROM_UNIXTIME函数格式化时间戳日期类型

    select FROM_UNIXTIME(bce.daysec_time/1000,'%Y-%m-%d %h:%i:%s') ,bce.* from biz_cvent bce where bce.d ...

  10. nodejs内存泄漏概要分析

    const heapdump = require('heapdump'); setTimeout( ()=>{ heapdump.writeSnapshot(`${process.cwd()}/ ...