<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      QT實現參數批量配置

      Posted on 2023-06-26 23:46  綠葉落秋風  閱讀(188)  評論(0)    收藏  舉報

      QT實現批量配置

      需求

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

      直接實現

      • 使用輸入框復制,每個輸入框配置一個下載按鈕
      • 加載的時間很長,且實現繁瑣
        • 需要不斷地拖動UI控件

      表格實現

      • 將參數直接制作成表格
      • 在表格中完成參數地控制
      • 參數直接全部丟給ARM,UDP的寬度足以支撐這個參數同時更新

      img

      實現步驟

      • 庫文件直接同名導入頭文件
      #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
      主站蜘蛛池模板: 动漫AV纯肉无码AV电影网| 欧美午夜理伦三级在线观看 | 99噜噜噜在线播放| 国产男女黄视频在线观看| 精品国模一区二区三区| 色欧美片视频在线观看| 色综合中文综合网| 亚洲第一香蕉视频啪啪爽| 少妇被粗大猛进进出出| 国产一区二区三区粉嫩av | 亚洲国产激情一区二区三区| 岛国岛国免费v片在线观看| 成人3D动漫一区二区三区| 日本无人区一区二区三区| 国产综合色产在线精品| 连州市| 男女无遮挡激情视频| 无套内射视频囯产| 日韩有码中文字幕av| www插插插无码免费视频网站| 久久毛片少妇高潮| 在线精品自拍亚洲第一区| 亚洲欧美在线一区中文字幕| 麻豆一区二区三区精品蜜桃| 久久精品国产99国产精品严洲| 少妇人妻偷人精品免费| 人妻精品久久无码区| 九九热在线免费播放视频| 久久精品国产免费观看频道| 日韩av第一页在线播放| 欧美大胆老熟妇乱子伦视频| 日本伊人色综合网| 国产精品午夜福利91| 日本东京热不卡一区二区| 欧洲美女黑人粗性暴交视频| 亚洲一区二区三区水蜜桃| 亚洲成人av在线系列| 精品国产丝袜自在线拍国语| 狠狠色丁香婷婷综合尤物| 国产在线拍揄自揄视频网试看| 美女一区二区三区亚洲麻豆|