This commit is contained in:
Gangphon 2023-09-15 10:59:00 +08:00
parent d5d5984aa5
commit a9b29230e8
21 changed files with 2159 additions and 553 deletions

View File

@ -48,18 +48,15 @@ ExpertScreenConnWin::ExpertScreenConnWin(QWidget *parent) : QSplitter{parent} {
lb = new QLabel(tr("卡列数: "));
hh->addWidget(lb);
auto fdCardColNum = new QSpinBox;
fdCardColNum = new QSpinBox;
fdCardColNum->setRange(0, 9999);
fdCardColNum->setValue(2);
// connect(fdCardColNum, (void(QSpinBox::*)(int))&QSpinBox::valueChanged, this, [this](int value) {
// table->setColumnCount(value);
// });
hh->addWidget(fdCardColNum);
lb = new QLabel(tr("卡行数: "));
hh->addWidget(lb);
auto fdCardRowNum = new QSpinBox;
fdCardRowNum = new QSpinBox;
fdCardRowNum->setRange(0, 9999);
fdCardRowNum->setValue(2);
hh->addWidget(fdCardRowNum);
@ -172,13 +169,18 @@ ExpertScreenConnWin::ExpertScreenConnWin(QWidget *parent) : QSplitter{parent} {
table = new CardTable(fdCardRowNum->value(), fdCardColNum->value());
table->win = this;
table->setEditTriggers(QAbstractItemView::NoEditTriggers);
table->horizontalHeader()->setDefaultSectionSize(90);
table->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed);
table->verticalHeader()->setDefaultSectionSize(90);
table->verticalHeader()->setSectionResizeMode(QHeaderView::Fixed);
table->verticalHeader()->setMinimumWidth(30);
table->setSelectionMode(QTableWidget::NoSelection);
connect(table, &QTableWidget::currentCellChanged, this, &ExpertScreenConnWin::conn);
table->setColWidth(90)->setColResize(QHeaderView::Fixed)->setRowHeight(90)->setRowResize(QHeaderView::Fixed);
table->verticalHeader()->setMinimumWidth(30);
connect(table, &QTableWidget::currentCellChanged, this, [=](int row, int column) {
if(row < 0) return;
auto item = table->item(row, column);
if(item) return;
auto netIdx = fdNet->checkedId();
netss[netIdx].emplace_back(QPoint(column, row));
updCell(row, column, netIdx);
table->update();
});
connect(fdCardColNum, (void(QSpinBox::*)(int))&QSpinBox::valueChanged, table, &QTableWidget::setColumnCount);
connect(fdCardRowNum, (void(QSpinBox::*)(int))&QSpinBox::valueChanged, table, &QTableWidget::setRowCount);
addWidget(table);
@ -188,20 +190,12 @@ ExpertScreenConnWin::ExpertScreenConnWin(QWidget *parent) : QSplitter{parent} {
setSizes({280, 1});
}
void ExpertScreenConnWin::conn(int row, int column) {
if(row < 0) return;
auto item = table->item(row, column);
if(item) return;
auto netIdx = fdNet->checkedId();
netss[netIdx].emplace_back(QPoint(column, row));
item = new QTableWidgetItem("网口: "+QString::number(netIdx+1)+"\n"+tr("接收卡: ")+QString::number(netss[netIdx].size())+"\n"+tr("宽度: ")+QString::number(fdCardWidth->value())+"\n高度: "+QString::number(fdCardHeight->value()));
void ExpertScreenConnWin::updCell(int row, int column, int netIdx) {
auto item = table->setText(row, column, "网口: "+QString::number(netIdx+1)+"\n"+tr("接收卡: ")+QString::number(netss[netIdx].size())+"\n"+tr("宽度: ")+QString::number(fdCardWidth->value())+"\n高度: "+QString::number(fdCardHeight->value()), netIdx);
auto color = cardColors[netIdx % (sizeof(cardColors)/sizeof(cardColors[0]))];
item->setForeground(QColor(255,255,255));
color.setAlpha(100);
item->setBackground(color);
item->setData(Qt::UserRole, netIdx);
table->setItem(row, column, item);
table->update();
item->setForeground(QColor(255,255,255));
}
void ExpertScreenConnWin::connBack() {
auto netIdx = fdNet->checkedId();
@ -264,3 +258,22 @@ void CardTable::DrawLineWithArrow(QPainter& painter, QPen pen, QPoint start, QPo
painter.drawLine(line);
painter.drawPolygon(arrowHead);
}
//added by alahover 20230903 -s
//根据JObj初始化重绘表格
void::ExpertScreenConnWin::InitByJObj(const JObj &obj) {
auto boxList = obj["boxList"].toArray();
qDebug()<<"由JObj初始化表格"<<boxList.size();
if(boxList.empty()) return;
fdCardColNum->setValue(boxList[0]["ScreenCol"].toInt());
fdCardRowNum->setValue(boxList[0]["ScreenRow"].toInt());
fdCardWidth->setValue(boxList[0]["ModuleWidth"].toInt());
fdCardHeight->setValue(boxList[0]["ModuleHeight"].toInt());
for(auto &box : boxList) {
auto PortId = box["PortId"].toInt();
auto ScreenPosCol = box["ScreenPosCol"].toInt();
auto ScreenPosRow = box["ScreenPosRow"].toInt();
netss[PortId].emplace_back(QPoint{ScreenPosCol, ScreenPosRow});
updCell(ScreenPosRow, ScreenPosCol, PortId);
}
}
//added by alahover 20230903 -o

View File

@ -1,8 +1,9 @@
#ifndef EXPERTSCREENCONNWIN_H
#define EXPERTSCREENCONNWIN_H
#include "gutil/qjson.h"
#include "gutil/qgui.h"
#include <QSplitter>
#include <QTableWidget>
#include <QSpinBox>
#include <QButtonGroup>
@ -11,19 +12,19 @@ class ExpertScreenConnWin : public QSplitter {
Q_OBJECT
public:
explicit ExpertScreenConnWin(QWidget *parent = nullptr);
void conn(int row, int column);
void updCell(int row, int column, int);
void connBack();
QButtonGroup *fdNet;
QSpinBox *fdCardWidth;
QSpinBox *fdCardHeight;
QSpinBox *fdCardColNum, *fdCardRowNum, *fdCardWidth, *fdCardHeight;
CardTable *table;
std::vector<QPoint> netss[4]{};
void InitByJObj(const JObj &obj);
};
class CardTable : public QTableWidget {
class CardTable : public Table {
public:
explicit CardTable(QWidget *parent = nullptr) : QTableWidget{parent} {}
CardTable(int rows, int columns, QWidget *parent = nullptr) : QTableWidget{rows, columns, parent} {}
using Table::Table;
ExpertScreenConnWin *win;
private:
void DrawLineWithArrow(QPainter& painter, QPen pen, QPoint start, QPoint end);

View File

@ -815,12 +815,14 @@ ExpertSmartPointSetWin::ExpertSmartPointSetWin(ExpertWin *expertWin) : BaseWin{e
check = (quint32_be*)(msg.data()+headMap.end+modMap.end);
*check = crc32_calc((byte*)msg.data()+headMap.body, modMap.end+6);
res12 = *(quint32_be*)(unitptr+modUnitMap.smartsetRes);
auto waitingDlg = new WaitingDlg(this, tr("Setting")+" ...");
auto res = sendMsgSync(msg, 0x1EA, 10000, waitingDlg);
if(res.code==5) {QMessageBox::critical(this, "Error", tr("请求超时")); return;}
else if(res.code) {QMessageBox::critical(this, "Error", QString(tr("发送失败: "))+QString::fromLocal8Bit(pcap_geterr(pcapSend))); return;}
waitingDlg->close();
if(expertWin->m_iRcvCardType!=enum_zrf)//added by alahover 20230904
{
auto waitingDlg = new WaitingDlg(this, tr("Setting")+" ...");
auto res = sendMsgSync(msg, 0x1EA, 10000, waitingDlg);
if(res.code==5) {QMessageBox::critical(this, "Error", tr("请求超时")); return;}
else if(res.code) {QMessageBox::critical(this, "Error", QString(tr("发送失败: "))+QString::fromLocal8Bit(pcap_geterr(pcapSend))); return;}
waitingDlg->close();
}
} else if(idx==1) {
DataPolarity = fdDataPolarity->checkedId();
res12 &= ~(1u<<31);
@ -898,12 +900,17 @@ int ExpertSmartPointSetWin::send(uint ptr, const std::initializer_list<uint> &da
check = (quint32_be*)(msg.data()+msg.size()-4);
*check = crc32_calc((byte*)msg.data()+headMap.body, msg.size()-4-headMap.body);
auto waitingDlg = new WaitingDlg(this, tr("Setting")+" ...");
auto res = sendMsgSync(msg, 0x1EA, 10000, waitingDlg);
if(res.code==5) QMessageBox::critical(this, "Error", tr("请求超时"));
else if(res.code) QMessageBox::critical(this, "Error", QString(tr("发送失败: "))+QString::fromLocal8Bit(pcap_geterr(pcapSend)));
else waitingDlg->close();
return res.code;
if(expertWin->m_iRcvCardType!=enum_zrf)//added by alahover 20230904
{
auto waitingDlg = new WaitingDlg(this, tr("Setting")+" ...");
auto res = sendMsgSync(msg, 0x1EA, 10000, waitingDlg);
if(res.code==5) QMessageBox::critical(this, "Error", tr("请求超时"));
else if(res.code) QMessageBox::critical(this, "Error", QString(tr("发送失败: "))+QString::fromLocal8Bit(pcap_geterr(pcapSend)));
else waitingDlg->close();
return res.code;
}
else
return 0;
}
void ExpertSmartPointSetWin::save() {
@ -974,6 +981,7 @@ void ExpertSmartPointSetWin::save() {
expertWin->fdGroupNum->setText(QString::number(GroupNum));
expertWin->fdScanNum->setText(QString::number(ScanNum));
expertWin->fdChipType->setText(ChipType);
expertWin->m_effectStack->setCurrentIndex(GetIcTypeFromName(ChipType));
expertWin->fdDecodeMode->setText(DecodeMode);
QString strLine1,strLine2,strLine3,strLine4;

View File

@ -17,9 +17,12 @@
#include <QMessageBox>
#include <QFileDialog>
#include <QSplitter>
#include "efffrefr.h"
#include "globalfunc.h"
#include "ic_ui/normaleffectwin.h"
#include "ic_ui/pwmeffectwin.h"
#include "ic_ui/doublelatcheffectwin.h"
NormalEffectWin *normalPanel ;
PwmEffectWin *pwmPanel ;
DoubleLatchEffectWin *doublelatchPanel ;
auto zrf_param_msg = QByteArray::fromHex( "20 00 06 20 10 10 00 E4 06 FF FF FF FF 00 00 80 80 80 00 00 00 1F 00 00 00 3C 01 33 00 00 00 80 00 00 12 05 00 00 00 01 "
"02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 01 00 00 00 00 10 00 00 20 00 "
"00 30 00 00 40 00 00 50 00 00 60 00 00 70 00 00 80 00 00 90 00 00 A0 00 00 B0 00 00 C0 00 00 D0 00 00 F0 00 00 00 01 00 "
@ -32,44 +35,25 @@ auto zrf_param_msg = QByteArray::fromHex( "20 00 06 20 10 10 00 E4 06 FF FF FF
ExpertWin::ExpertWin(QWidget *parent, int rcvCardType) : BaseWin{parent}, m_iRcvCardType{rcvCardType} {
setAttribute(Qt::WA_DeleteOnClose);
setWindowTitle("专家调屏");
resize(900, 720);
resize(900, 680);
qDebug()<<"rcvCardType"<<rcvCardType;
//added by alahover -s 20230829
//初始化变量
for(int i=0;i<256;i++)
{
zrf_rcv_obj.p_x[i]=0;
zrf_rcv_obj.p_y[i]=0;
zrf_rcv_obj.p_w[i]=256;
zrf_rcv_obj.p_h[i]=1024;
zrf_rcv_obj.p_posNum[i]=0;
}
for(int i=0;i<2048;i++)
{
zrf_rcv_obj.m_pixelPos[i][0]=i%256;//描点参数中一点占用 2字节8bit 列 + 8 bit 行)
zrf_rcv_obj.m_pixelPos[i][1]=0;//描点参数中一点占用 2字节8bit 列 + 8 bit 行)
}
GammaGen(zrf_rcv_obj.g_all,(float)2.2,65535);
GammaGen(zrf_rcv_obj.g_red,(float)2.2,65535);
GammaGen(zrf_rcv_obj.g_green,(float)2.2,65535);
GammaGen(zrf_rcv_obj.g_blue,(float)2.2,65535);
changeValueBySmart();
//added by alahover -o 20230829
auto vBox = new QVBoxLayout(center);
vBox->setContentsMargins(0,0,0,0);
vBox->setSpacing(3);
vBox->addLayout(addBtns(new QHBoxLayout()));
auto tab = new QTabWidget;
tab->setIconSize(QSize(48, 24));
tab->setStyleSheet(R"rrr(
QTabWidget::pane {border: 1px solid #888; margin-top:-1px;}
QTabBar::tab {margin-top: 4px; padding: 6px 20px; border: 1px solid #888; border-radius: 0 0 3px 3px;}
QTabBar::tab:selected {margin-top: 0; border-bottom: none; color: #acf; background-color: #000;}
QTabBar::tab:selected {margin-top: 0; border-bottom: none; color: #acf; background-color: #666;}
)rrr");
vBox->addWidget(tab);
auto sendPanel = new ExpertSendPanel;
tab->addTab(sendPanel, "发送设备");
tab->addTab(sendPanel, QIcon(":/imgs/mainsend.png"), "发送设备");
{
auto file = QApplication::applicationDirPath()+"/temp.screen";
QFile qFile(file);
@ -92,10 +76,35 @@ QTabBar::tab:selected {margin-top: 0; border-bottom: none; color: #acf; backgrou
if(! json.empty()) mModule = json;
}
}
//added by alahover -s 20230829
if(m_iRcvCardType== enum_zrf)//added by alahover 20230901
{
//初始化变量
for(int i=0;i<256;i++)
{
zrf_rcv_obj.p_x[i]=0;
zrf_rcv_obj.p_y[i]=0;
zrf_rcv_obj.p_w[i]=256;
zrf_rcv_obj.p_h[i]=1024;
zrf_rcv_obj.p_posNum[i]=0;
}
for(int i=0;i<2048;i++)
{
zrf_rcv_obj.m_pixelPos[i][0]=i%256;//描点参数中一点占用 2字节8bit 列 + 8 bit 行)
zrf_rcv_obj.m_pixelPos[i][1]=0;//描点参数中一点占用 2字节8bit 列 + 8 bit 行)
}
GammaGen(zrf_rcv_obj.g_all,(float)2.2,65535);
GammaGen(zrf_rcv_obj.g_red,(float)2.2,65535);
GammaGen(zrf_rcv_obj.g_green,(float)2.2,65535);
GammaGen(zrf_rcv_obj.g_blue,(float)2.2,65535);
changeValueBySmart();
}
//added by alahover -o 20230829
}
auto receivePanel = new QWidget;
tab->addTab(receivePanel, "接收卡");
tab->addTab(receivePanel, QIcon(":/imgs/rcv.png"), "接收卡");
{
auto vBox = new VBox(receivePanel);
vBox->setContentsMargins(4, 4, 4, 4);
@ -179,6 +188,13 @@ QTabBar::tab:selected {margin-top: 0; border-bottom: none; color: #acf; backgrou
btn = new QPushButton("模组选择");
btn->setProperty("ss","blue");
connect(btn, &QPushButton::clicked, this, [=] {
//弹出模组选择对话框,可搜索查找,和下拉在厂家列表中选择
//选择模组后根据模组的信息修改相应的obj和界面
fdChipType->setText("ICN2053");
m_effectStack->setCurrentIndex(GetIcTypeFromName(fdChipType->text()));
});
vvv->addWidget(btn);
btn = new QPushButton("智能设置");
@ -308,294 +324,25 @@ QTabBar::tab:selected {margin-top: 0; border-bottom: none; color: #acf; backgrou
});
if(cfg["is_irr"].toBool()) fdAdvacned->setChecked(true);
}
gBox = new QGroupBox(tr("效果测试"));
//modified by alahover -s 20230830
gBox = new QGroupBox("效果参数");
vBox->addWidget(gBox);
{
if(m_iRcvCardType == enum_zrf) {
auto vBox1=new VBox(gBox);
auto hh = new HBox(vBox1);
hh->addSpacing(20);
//第一列区域
auto vvv = new VBox(hh);
//1.1.移位时钟频率
auto hhh = new HBox(vvv);
auto lb = new QLabel(tr("DCLK频率:"));
hhh->addWidget(lb);
cbDCLKf = new QComboBox(); cbDCLKf->addItem("31.2M");cbDCLKf->addItem("25M");cbDCLKf->addItem("20.83M");cbDCLKf->addItem("17.86M");cbDCLKf->addItem("15.63M");cbDCLKf->addItem("12.5M");cbDCLKf->addItem("10.42M");cbDCLKf->addItem("8.9M");
cbDCLKf->addItem("7.8M");cbDCLKf->addItem("6.25M");;cbDCLKf->addItem("5.2M");;cbDCLKf->addItem("4.5M");;cbDCLKf->addItem("3.9M");;cbDCLKf->addItem("3.125M"); ;cbDCLKf->addItem("1.9M"); ;cbDCLKf->addItem("1M"); hhh->addWidget(cbDCLKf);
//1.2.灰度级别
hhh = new HBox(vvv);
lb = new QLabel(tr("灰度级数:")); hhh->addWidget(lb);
cbGryLevel = new QComboBox(); cbGryLevel->addItem("无灰度"); cbGryLevel->addItem("无OE8级");cbGryLevel->addItem("无OE16级");cbGryLevel->addItem("无OE32级");cbGryLevel->addItem("无OE64级");cbGryLevel->addItem("正常16级"); cbGryLevel->addItem("高亮16级");cbGryLevel->addItem("正常32级");
cbGryLevel->addItem("高亮32级");cbGryLevel->addItem("正常64级");cbGryLevel->addItem("高亮64级");cbGryLevel->addItem("正常128级");cbGryLevel->addItem("高亮128级");cbGryLevel->addItem("正常256级");cbGryLevel->addItem("高亮256级");cbGryLevel->addItem("正常512级");
cbGryLevel->addItem("高亮512级");cbGryLevel->addItem("正常1024级");cbGryLevel->addItem("高亮1024级");cbGryLevel->addItem("低亮2048级");cbGryLevel->addItem("正常2048级");cbGryLevel->addItem("高亮2048级");cbGryLevel->addItem("低亮4096级");cbGryLevel->addItem("正常4096级");
cbGryLevel->addItem("高亮4096级");cbGryLevel->addItem("低亮8192级");cbGryLevel->addItem("正常8192级");cbGryLevel->addItem("高亮8192级");cbGryLevel->addItem("低亮16384级");cbGryLevel->addItem("正常16384");cbGryLevel->addItem("正常32768级");cbGryLevel->addItem("正常65535级"); hhh->addWidget(cbGryLevel);
//1.3.刷新倍率
hhh = new HBox(vvv);
lb = new QLabel(tr("刷新倍率:")); hhh->addWidget(lb);
freshBeiLv = new QComboBox(); freshBeiLv->addItem("20");freshBeiLv->addItem("24");freshBeiLv->addItem("28");freshBeiLv->addItem("32");freshBeiLv->addItem("36");freshBeiLv->addItem("40");freshBeiLv->addItem("44");freshBeiLv->addItem("48");freshBeiLv->addItem("64M"); hhh->addWidget(freshBeiLv);
//1.4.换行时间
hhh = new HBox(vvv);
lb = new QLabel(tr("换行时间(ns):")); hhh->addWidget(lb);
spinLineNs = new QSpinBox; spinLineNs->setRange(2, 9999); hhh->addWidget(spinLineNs);
//1.5.换行位置
hhh = new HBox(vvv);
lb = new QLabel(tr("换行位置(ns):")); hhh->addWidget(lb);
spinLineWz = new QSpinBox; spinLineWz->setRange(2, 9999); hhh->addWidget(spinLineWz);
//1.6.行消隐时间
hhh = new HBox(vvv);
lb = new QLabel(tr("行消隐时间(ns):")); hhh->addWidget(lb);
spinLineXy = new QSpinBox; spinLineWz->setRange(2, 9999); hhh->addWidget(spinLineXy);
auto hh = new HBox(gBox);
m_effectStack = new QStackedWidget;
auto poli = m_effectStack->sizePolicy();
poli.setVerticalPolicy(QSizePolicy::Maximum);
m_effectStack->setSizePolicy(poli);
hh->addWidget(m_effectStack);
//第二列区域
hh->addSpacing(20);
vvv = new VBox(hh);
//2.1.无信号数据
hhh = new HBox(vvv);
lb = new QLabel(tr("无信号数据:")); hhh->addWidget(lb);
cbNoSign = new QComboBox();
cbNoSign->addItem("最后一帧画面");
cbNoSign->addItem("黑屏");
hhh->addWidget(cbNoSign);
//2.2.显卡同步
hhh = new HBox(vvv);
lb = new QLabel(tr("显卡同步")); hhh->addWidget(lb);
checkSyncXianKa = new QCheckBox; checkSyncXianKa->setChecked(true); hhh->addWidget(checkSyncXianKa);
//2.3.开屏渐亮
hhh = new HBox(vvv);
lb = new QLabel(tr("双卡备份")); hhh->addWidget(lb);
checkDoubleCopy = new QCheckBox; checkDoubleCopy->setChecked(false); hhh->addWidget(checkDoubleCopy);
//2.4.开屏渐亮
hhh = new HBox(vvv);
lb = new QLabel(tr("开屏渐亮")); hhh->addWidget(lb);
checkJianLiang = new QCheckBox; checkSyncXianKa->setChecked(false); hhh->addWidget(checkJianLiang);
//2.5.D信号为第二组时钟
hhh = new HBox(vvv);
lb = new QLabel(tr("信号为第二组时钟")); hhh->addWidget(lb);
checkDsignalAsCLk = new QCheckBox; checkDsignalAsCLk->setChecked(false); hhh->addWidget(checkDsignalAsCLk);
normalPanel = new NormalEffectWin(this);
m_effectStack->addWidget(normalPanel);
pwmPanel = new PwmEffectWin(this);
m_effectStack->addWidget(pwmPanel);
doublelatchPanel = new DoubleLatchEffectWin(this);
m_effectStack->addWidget(doublelatchPanel);
//更多设置
hh->addStretch();
vvv = new VBox(hh);
vvv->addStretch();
hhh = new HBox(vvv);
auto btn = new QPushButton(tr("更多设置"));
btn->setProperty("ss","blue");
hhh->addWidget(btn);
btn = new QPushButton(tr("亮度设置"));
btn->setProperty("ss","blue");
vvv->addWidget(btn);
btn = new QPushButton(tr("Gamma设置"));
btn->setProperty("ss","blue");
vvv->addWidget(btn);
btn = new QPushButton(tr("电流增益设置"));
btn->setProperty("ss","blue");
vvv->addWidget(btn);
vvv->addStretch();
hh->addStretch();
vvv = new VBox(hh);
//分割线
auto hh3 = new HBox(vvv);
QFrame * line2 = new QFrame();
line2->setFrameShape(QFrame::VLine);
line2->setFrameShadow(QFrame::Sunken);
line2->setStyleSheet("background-color:#222;");
hh3->addWidget(line2);
//第三列区域
vvv = new VBox(hh);
//3.1.DCLK相位
hhh = new HBox(vvv);
lb = new QLabel(tr("DCLK相位:")); hhh->addWidget(lb);
cbDclkXw = new QComboBox(); cbDclkXw->addItem("0度");cbDclkXw->addItem("+90度");cbDclkXw->addItem("-90度"); hhh->addWidget(cbDclkXw);
//3.2.DCLK占空比
hhh = new HBox(vvv);
lb = new QLabel(tr("DCLK占空比:")); hhh->addWidget(lb);
cbDclkZkb = new QComboBox(); cbDclkZkb->addItem("50%");cbDclkZkb->addItem("25%");cbDclkZkb->addItem("75%"); hhh->addWidget(cbDclkZkb);
//3.3.锁存STB相位微调
hhh = new HBox(vvv);
lb = new QLabel(tr("锁存STB相位微调:")); hhh->addWidget(lb);
cbStb = new QComboBox(); cbStb->addItem("不调整");cbStb->addItem("前移1个时钟");cbStb->addItem("前移2个时钟");cbStb->addItem("前移3个时钟");cbStb->addItem("后移1个时钟");cbStb->addItem("后移2个时钟");cbStb->addItem("后移3个时钟"); hhh->addWidget(cbStb);
//3.4.行信号DE相位微调
hhh = new HBox(vvv);
lb = new QLabel(tr("行信号DE相位微调:")); hhh->addWidget(lb);
cbDE = new QComboBox(); cbDE->addItem("不调整");cbDE->addItem("前移1个时钟");cbDE->addItem("前移2个时钟");cbDE->addItem("前移3个时钟");cbDE->addItem("后移1个时钟");cbDE->addItem("后移2个时钟");cbDE->addItem("后移3个时钟"); hhh->addWidget(cbDE);
//3.5.行信号ABC相位微调
hhh = new HBox(vvv);
lb = new QLabel(tr("行信号ABC相位微调:")); hhh->addWidget(lb);
cbABC = new QComboBox(); cbABC->addItem("不调整");cbABC->addItem("前移1个时钟");cbABC->addItem("前移2个时钟");cbABC->addItem("前移3个时钟");cbABC->addItem("后移1个时钟");cbABC->addItem("后移2个时钟");cbABC->addItem("后移3个时钟"); hhh->addWidget(cbABC);
//3.6.单口带载点数
hhh = new HBox(vvv);
lb = new QLabel(tr("单口带载点数:")); hhh->addWidget(lb);
spinPointsOnePort = new QSpinBox; spinPointsOnePort->setRange(1, 999); hhh->addWidget(spinPointsOnePort);
hh->addSpacing(20);
//第四列区域
vvv = new VBox(hh);
//4.1.消隐电平
hhh = new HBox(vvv);
lb = new QLabel(tr("消隐电平:")); hhh->addWidget(lb);
cbXiaoYinDianPing= new QComboBox(); cbXiaoYinDianPing->addItem("高有效");cbXiaoYinDianPing->addItem("低有效"); hhh->addWidget(cbXiaoYinDianPing);
//4.2.锁存信号
hhh = new HBox(vvv);
lb = new QLabel(tr("锁存信号:")); hhh->addWidget(lb);
cbSTB = new QComboBox(); cbSTB->addItem("正向");cbSTB->addItem("反向"); hhh->addWidget(cbSTB);
//4.3.行输出
hhh = new HBox(vvv);
lb = new QLabel(tr("行输出:")); hhh->addWidget(lb);
cbSRowOut = new QComboBox(); cbSRowOut->addItem("低有效");cbSRowOut->addItem("高有效"); hhh->addWidget(cbSRowOut);
//4.4.GCLK频率
hhh = new HBox(vvv);
lb = new QLabel(tr("GCLK频率:"));
hhh->addWidget(lb);
cbGCLKf = new QComboBox();
cbGCLKf->addItem("25M");cbGCLKf->addItem("20.83M");cbGCLKf->addItem("17.86M");cbGCLKf->addItem("15.63M");cbGCLKf->addItem("13.89M");cbGCLKf->addItem("12.5M");cbGCLKf->addItem("11.36M");cbGCLKf->addItem("10.42M");cbGCLKf->addItem("9.62M");
hhh->addWidget(cbGCLKf);
//4.5.GCLK相位
hhh = new HBox(vvv);
lb = new QLabel(tr("GCLK相位:")); hhh->addWidget(lb);
spinGclkXw = new QSpinBox; spinGclkXw->setRange(20, 80); hhh->addWidget(spinGclkXw);
//4.6.GCLK占空比
hhh = new HBox(vvv);
lb = new QLabel(tr("GCLK占空比:")); hhh->addWidget(lb);
spinGclkZkb = new QSpinBox; spinGclkZkb->setRange(20, 80); hhh->addWidget(spinGclkZkb);
//分割线
auto hh1 = new HBox(vBox1);
QFrame * line = new QFrame();
line->setFrameShape(QFrame::HLine);
line->setFrameShadow(QFrame::Sunken);
line->setStyleSheet("background-color:#222;");
hh1->addWidget(line);
auto hh2=new HBox(vBox1);
//计算结果竖直信息区
auto resultInfo = new HBox(hh2);
lb = new QLabel(tr("视觉刷新率:")); resultInfo->addWidget(lb);
float freshLv1=Get_Frefr(7/*小数权值*/ , 12/*灰度位宽*/ , 12500000/*移位时钟频率*/ , 240/*扫描长度*/ , 16/*扫描类型*/ , 4/*倍频*/ ); m_ctrlFreshRate = new QLabel(QString::number(freshLv1)); resultInfo->addWidget(m_ctrlFreshRate);
resultInfo->addStretch();
lb = new QLabel(tr("亮度有效率:")); resultInfo->addWidget(lb);
float BrightYouXiaoLv1=Get_Eff(8,16); m_ctrlBrightEff = new QLabel(QString::number(BrightYouXiaoLv1)); resultInfo->addWidget(m_ctrlBrightEff);
resultInfo->addStretch();
lb = new QLabel(tr("最小OE:")); resultInfo->addWidget(lb);
float minOe=Get_Eff(8,16); m_ctrlMinOE = new QLabel(QString::number(minOe)); resultInfo->addWidget(m_ctrlMinOE);
resultInfo->addStretch();
}
else if(m_iRcvCardType == enum_xixun_sync)
{
auto hh = new HBox(gBox);
hh->addSpacing(20);
auto vvv = new VBox(hh);
auto hhh = new HBox(vvv);
auto lb = new QLabel(tr("DCLK频率:"));
hhh->addWidget(lb);
auto cbDCLKf = new QComboBox();
cbDCLKf->addItem("31.2M");cbDCLKf->addItem("25M");cbDCLKf->addItem("20.83M");cbDCLKf->addItem("17.86M");cbDCLKf->addItem("15.63M");cbDCLKf->addItem("13.89M");cbDCLKf->addItem("12.5M");
cbDCLKf->addItem("11.36M");cbDCLKf->addItem("10.42M");cbDCLKf->addItem("9.62M");cbDCLKf->addItem("8.9M");cbDCLKf->addItem("7.8M");cbDCLKf->addItem("6.25M");
hhh->addWidget(cbDCLKf);
hhh = new HBox(vvv);
lb = new QLabel(tr("DCLK相位:"));
hhh->addWidget(lb);
auto spinDclkXw = new QSpinBox;
spinDclkXw->setRange(0, 99999);
hhh->addWidget(spinDclkXw);
hhh = new HBox(vvv);
lb = new QLabel(tr("DCLK占空比:"));
hhh->addWidget(lb);
auto spinDclkZkb = new QSpinBox;
spinDclkZkb->setRange(20, 80);
hhh->addWidget(spinDclkZkb);
hhh = new HBox(vvv);
lb = new QLabel(tr("换行时间(ns):"));
hhh->addWidget(lb);
auto spinLineNs = new QSpinBox;
spinLineNs->setRange(2, 9999);
hhh->addWidget(spinLineNs);
hhh = new HBox(vvv);
lb = new QLabel(tr("视觉刷新率:"));
hhh->addWidget(lb);
float freshLv=Get_Frefr(7/*小数权值*/ , 12/*灰度位宽*/ , 12500000/*移位时钟频率*/ , 240/*扫描长度*/ , 16/*扫描类型*/ , 4/*倍频*/ );
qDebug()<<"get_eff="<<freshLv;//QString("%1").arg(temp,0,10);
lb = new QLabel(QString::number(freshLv));
hhh->addWidget(lb);
hh->addSpacing(20);
vvv = new VBox(hh);
hhh = new HBox(vvv);
lb = new QLabel(tr("亮度有效率:"));
hhh->addWidget(lb);
float BrightYouXiaoLv=Get_Eff(8,16);
qDebug()<<"get_eff="<<BrightYouXiaoLv;
lb = new QLabel(QString::number(BrightYouXiaoLv));
hhh->addWidget(lb);
hhh = new HBox(vvv);
lb = new QLabel(tr("GCLK频率:"));
hhh->addWidget(lb);
auto cbGCLKf = new QComboBox();
cbGCLKf->addItem("25M");
cbGCLKf->addItem("20.83M");
cbGCLKf->addItem("17.86M");
cbGCLKf->addItem("15.63M");
cbGCLKf->addItem("13.89M");
cbGCLKf->addItem("12.5M");
cbGCLKf->addItem("11.36M");
cbGCLKf->addItem("10.42M");
cbGCLKf->addItem("9.62M");
hhh->addWidget(cbGCLKf);
hhh = new HBox(vvv);
lb = new QLabel(tr("灰度级数:"));
hhh->addWidget(lb);
auto cbGryLevel = new QComboBox();
cbGryLevel->addItem("256");
cbGryLevel->addItem("1024");
cbGryLevel->addItem("4096");
cbGryLevel->addItem("8192");
cbGryLevel->addItem("16384");
cbGryLevel->addItem("32768");
cbGryLevel->addItem("65536");
hhh->addWidget(cbGryLevel);
hhh = new HBox(vvv);
lb = new QLabel(tr("GCLK占空比:"));
hhh->addWidget(lb);
auto spinGclkZkb = new QSpinBox;
spinGclkZkb->setRange(20, 80);
hhh->addWidget(spinGclkZkb);
hhh = new HBox(vvv);
lb = new QLabel(tr("换行位置(ns):"));
hhh->addWidget(lb);
auto spinLineWz = new QSpinBox;
spinLineWz->setRange(2, 9999);
hhh->addWidget(spinLineWz);
hh->addStretch();
vvv = new VBox(hh);
hhh = new HBox(vvv);
auto btn = new QPushButton(tr("更多设置"));
btn->setProperty("ss","blue");
hhh->addWidget(btn);
}
}
vBox->addStretch();
auto hBox = new HBox(vBox);
auto btn = new QPushButton(tr("保存接收卡配置"));
btn->setProperty("ss","blue");
connect(btn, &QPushButton::clicked, this, [=] {
@ -646,15 +393,9 @@ QTabBar::tab:selected {margin-top: 0; border-bottom: none; color: #acf; backgrou
connect(btn, &QPushButton::clicked, this, [=] {
if(m_iRcvCardType == enum_zrf) {
//发送基本参数
auto zrf_msg = QByteArray::fromHex("55 55 00 11 22 33 44 55 00 11 22 33 44 55 10 5a 13 00 00 00 00 e0 ff ff 00 f1 f1 f1 f1 00 00 00 00 00 00 00 00 00 00 00 00");
auto zrf_cmd_msg = QByteArray::fromHex("55 55 00 11 22 33 44 55 00 11 22 33 44 55 10 5a 13 00 00 00 00 e0 00 00 00 f2 f2 f2 f2 00 00 00 00 00 00 00 00 00 00 00 00");
int res1=0;
//发送基本参数
MACRO_FUNC_SEND_PARAM("读取基本参数",classToBaseMsg(),1,0x00)
//发送gamma参数
MACRO_FUNC_SEND_PARAM("读取gamma参数",classToGammaMsg(0,flashPage),2,0x10)
//发送描点参数
MACRO_FUNC_SEND_PARAM("读取描点参数",classToMiaoDianMsg(flashPage),16,0x30)
SendBaseParam_zrf();
SendGammaParam_zrf();
SendMiaoDianParam_zrf();
QMessageBox::information(this, tr("提示"), tr("发送接收卡参数成功"));
} else QMessageBox::information(this, tr("提示"), tr("未能识别的控制卡类型"));
});
@ -752,7 +493,7 @@ QTabBar::tab:selected {margin-top: 0; border-bottom: none; color: #acf; backgrou
}
auto connPanel = new QWidget;
tab->addTab(connPanel, tr("显示屏连接(正面看屏)"));
tab->addTab(connPanel, QIcon(":/imgs/cascade.png"), tr("显示屏连接(正面看屏)"));
{
auto vBox = new VBox(connPanel);
vBox->setContentsMargins(4, 4, 4, 4);
@ -776,7 +517,17 @@ QTabBar::tab:selected {margin-top: 0; border-bottom: none; color: #acf; backgrou
connStack->addWidget(new ExpertScreenConnWin);
hBox = new HBox(vBox);
auto btn = new QPushButton(tr("保存到文件"));
auto btn = new QPushButton(tr("从文件载入"));
btn->setProperty("ss","blue");
connect(btn, &QPushButton::clicked, this, [=] {
auto file = QFileDialog::getOpenFileName(this, tr("载入级联文件"), gFileHome, "Kcon文件 (*.kcon)");
if(file.isEmpty()) return;
GetPaiXuJObjFromName(file);
});
hBox->addWidget(btn);
btn = new QPushButton(tr("保存到文件"));
btn->setProperty("ss","blue");
connect(btn, &QPushButton::clicked, this, [=] {
auto file = QFileDialog::getSaveFileName(this, tr("保存级联文件"), gFileHome, "Kcon文件 (*.kcon)");
@ -793,19 +544,15 @@ QTabBar::tab:selected {margin-top: 0; border-bottom: none; color: #acf; backgrou
else QMessageBox::information(this, tr("成功"), tr("保存成功"));
});
hBox->addWidget(btn);
hBox->addStretch();
btn = new QPushButton(tr("发送级联参数"));
btn->setProperty("ss","blue");
connect(btn, &QPushButton::clicked, this, [=] {
if(m_iRcvCardType == enum_zrf) {
//发送基本参数
auto zrf_msg = QByteArray::fromHex("55 55 00 11 22 33 44 55 00 11 22 33 44 55 10 5a 13 00 00 00 00 e0 ff ff 00 f1 f1 f1 f1 00 00 00 00 00 00 00 00 00 00 00 00");
auto zrf_cmd_msg = QByteArray::fromHex("55 55 00 11 22 33 44 55 00 11 22 33 44 55 10 5a 13 00 00 00 00 e0 00 00 00 f2 f2 f2 f2 00 00 00 00 00 00 00 00 00 00 00 00");
int res1=0;
//发送排序参数
MACRO_FUNC_SEND_PARAM("读取排序参数",classToPaiXuSMsg(flashPage),8,0x20)
GetPaiXuJObjFromJObj(connSavedData());//added by alahover 20230903
//发送级联参数
SendPaiXuParam_zrf();
QMessageBox::information(this, tr("提示"), tr("发送级联参数成功"));
} else QMessageBox::information(this, tr("提示"), tr("未能识别的控制卡类型"));
});
@ -837,7 +584,7 @@ QTabBar::tab:selected {margin-top: 0; border-bottom: none; color: #acf; backgrou
int iTimeout=10000;
quint8 flashAddr=0x00;
auto zrf_cmd_msg = QByteArray::fromHex("55 55 00 11 22 33 44 55 00 11 22 33 44 55 10 5a 13 00 00 00 00 e0 00 00 00 f2 f2 f2 f2 00 00 00 00 00 00 00 00 00 00 00 00");
auto waitingDlg = new WaitingDlg(this, tr("读取基本参数")+" ...");
WaitingDlg * waitingDlg ;
//回读排序参数
flashAddr=0x20;
for(int m=0;m<8;m++){
@ -852,7 +599,7 @@ QTabBar::tab:selected {margin-top: 0; border-bottom: none; color: #acf; backgrou
else {
int ioffset=headMap_zrf.paramStart+st_zrf_rb_param.param;
QByteArray return_msg=res.msg.mid(ioffset,256);
waitingDlg->close(); paiXuMsgToClass((quint8 *)return_msg.data(),flashPage); qDebug()<<tr("回读排序参数成功");
waitingDlg->close(); paiXuMsgToClass((quint8 *)return_msg.data(),flashPage); qDebug()<<tr("回读排序参数成功")<<i;
qDebug()<<"return_msg = "<<return_msg.toHex();
break;
}
@ -911,7 +658,6 @@ QByteArray ExpertWin::savedData() {
}
JObj ExpertWin::connSavedData() {
JArray values;
qDebug()<<"connStack->count()"<<connStack->count();
for(int ss=0; ss<connStack->count(); ss++) {
auto connWin = (ExpertScreenConnWin*) connStack->widget(ss);
JArray boxList;
@ -924,10 +670,10 @@ JObj ExpertWin::connSavedData() {
{"ModuleHeight", connWin->fdCardHeight->value()},
{"PortId", nn},
{"SubId", bb+1},
{"ScreenPosRow", pos.x()},
{"ScreenPosCol", pos.y()},
{"ScreenRow", connWin->table->rowCount()},
{"ScreenPosCol", pos.x()},
{"ScreenPosRow", pos.y()},
{"ScreenCol", connWin->table->columnCount()},
{"ScreenRow", connWin->table->rowCount()},
{"SettingWidth", connWin->fdCardWidth->value()},
{"SettingHeight", connWin->fdCardHeight->value()},
{"ScreenIndex", ss}
@ -940,7 +686,6 @@ JObj ExpertWin::connSavedData() {
}
return {{"values", values}};
}
void ExpertWin::addMapData(QByteArray &data) {
auto ModuleWidth = mModule["ModuleWidth"].toInt();
auto ModuleHeight = mModule["ModuleHeight"].toInt();
@ -1191,7 +936,7 @@ void ExpertWin::classToBaseMsg()
*bytePrt= ( zrf_rcv_obj.b168_7_5<<5 & 0b11100000) | ( zrf_rcv_obj.b168_4_0 & 0b00011111);
bytePrt =unitptr + st_zrf_base_param.b169_redIcParam1;
memcpy(bytePrt,(unsigned char *)& zrf_rcv_obj.b169_192[0],24);
memcpy(bytePrt,(unsigned char *)& zrf_rcv_obj.b169_192[0],48);
}
void ExpertWin::classToGammaMsg(int iColorType,quint8 flashPage)
@ -1283,18 +1028,23 @@ void ExpertWin::classToMiaoDianMsg(quint8 flashPage)
auto unitptr = (unsigned char *)zrf_param_msg.data();
unsigned char * bytePrt = (unsigned char*)(unitptr);
if(flashPage == 0x30)
{
memcpy(bytePrt,&zrf_rcv_obj.m_scanIndex , 64);
bytePrt += 64;
memcpy(bytePrt, &zrf_rcv_obj.m_pixelPos[0][0] , 256-64);
}
else
{
int itemp=(flashPage&0x0F) - 1;
int itemp2=((itemp*256)/2)+((256-64)/2);
// if(flashPage == 0x30)
// {
// memcpy(bytePrt,&zrf_rcv_obj.m_scanIndex , 64);
// bytePrt += 64;
// memcpy(bytePrt, &zrf_rcv_obj.m_pixelPos[0][0] , 256-64);
// }
// else
// {
// int itemp=(flashPage&0x0F) - 1;
// int itemp2=((itemp*256)/2)+((256-64)/2);
// memcpy(bytePrt, &zrf_rcv_obj.m_pixelPos[itemp2][0] , 256);
// }
int itemp=(flashPage&0x0F) ;
int itemp2=(itemp*256)/2;
memcpy(bytePrt, &zrf_rcv_obj.m_pixelPos[itemp2][0] , 256);
}
}
void ExpertWin::baseMsgToClass(quint8 * data)
{
@ -1320,10 +1070,6 @@ void ExpertWin::baseMsgToClass(quint8 * data)
zrf_rcv_obj.b7_3_2 = (data[st_zrf_base_param.b7_colorIndex] & 0b00001100) >> 2; //输出数据线2,0001绿1011
zrf_rcv_obj.b7_1_0 = (data[st_zrf_base_param.b7_colorIndex] & 0b00000011) >> 0; //输出数据线1,0001绿1011
qDebug()<<"***zrf_rcv_obj.b7_7_6="<<zrf_rcv_obj.b7_7_6;
qDebug()<<"***zrf_rcv_obj.b7_5_4="<<zrf_rcv_obj.b7_5_4;
qDebug()<<"***zrf_rcv_obj.b7_3_2="<<zrf_rcv_obj.b7_3_2;
qDebug()<<"***zrf_rcv_obj.b7_1_0="<<zrf_rcv_obj.b7_1_0;
zrf_rcv_obj.b8_7 = (data[st_zrf_base_param.b8_dataOutModle] & 0b10000000)>>7; //多种描点数据 0关闭1启用
zrf_rcv_obj.b8_6 = (data[st_zrf_base_param.b8_dataOutModle] & 0b01000000)>>6; //扫描复用模式0行扫1列扫
zrf_rcv_obj.b8_5_4 = (data[st_zrf_base_param.b8_dataOutModle] & 0b00110000)>>4; //模组级联方向:00从右往左01从上往下10从左往右11从下往上
@ -1391,7 +1137,7 @@ void ExpertWin::baseMsgToClass(quint8 * data)
zrf_rcv_obj.b167 = data[st_zrf_base_param.b167_syncPreTime]; //同步预留时间
zrf_rcv_obj.b168_7_5 = (data[st_zrf_base_param.b168_reserve] & 0b11100000)>>5; //保留
zrf_rcv_obj.b168_4_0 = (data[st_zrf_base_param.b168_reserve] & 0b00011111)>>0; //消隐延迟时间:(输入值+1*48ns
memcpy((qint8*)&zrf_rcv_obj.b169_192[0], &data[st_zrf_base_param.b169_redIcParam1],24);
memcpy((qint8*)&zrf_rcv_obj.b169_192[0], (qint8*)&data[st_zrf_base_param.b169_redIcParam1],48);
SetEffectControlerValueByClass();
@ -1452,16 +1198,18 @@ void ExpertWin::paiXuMsgToClass(quint8 * data,quint8 flashPage)
}
void ExpertWin::miaoDianMsgToClass(quint8 * data, quint8 flashPage)
{
if(flashPage == 0x30)//flashpage 0x30
{
memcpy(&zrf_rcv_obj.m_scanIndex , data , 64);
memcpy(&zrf_rcv_obj.m_pixelPos[0][0] , &data[64] , 256-64);
}
else
{
int itemp=(flashPage&0x0F) - 1;//flashpage 0x31~0x3f,
memcpy(&zrf_rcv_obj.m_pixelPos[itemp*128+(256-64)/2],&data[0],256);
}
// if(flashPage == 0x30)//flashpage 0x30
// {
// memcpy(&zrf_rcv_obj.m_scanIndex , data , 64);
// memcpy(&zrf_rcv_obj.m_pixelPos[0][0] , &data[64] , 256-64);
// }
// else
// {
// int itemp=(flashPage&0x0F) - 1;//flashpage 0x31~0x3f,
// memcpy(&zrf_rcv_obj.m_pixelPos[itemp*128+(256-64)/2],&data[0],256);
// }
int itemp=flashPage&0x0F ;//flashpage 0x30~0x3f,
memcpy(&zrf_rcv_obj.m_pixelPos[itemp*128],&data[0],256);
}
//added by alahover -o 20230829
@ -1541,22 +1289,37 @@ void ExpertWin::changeValueBySmart()
zrf_rcv_obj.b8_3_0=0b0111;
zrf_rcv_obj.ucZheHuiCiShu=mModule["RowPerScan"].toInt();
//描点参数
auto points = mModule["pos_item_info"].toArray();
int iPointIndex=0;
int ipointNum=points.size();
//注意这里的表里点的顺序和熙讯老异步卡的走点顺序是反的
for(auto point : points) {
JObj obj=point.toObj();
zrf_rcv_obj.m_pixelPos[ipointNum-iPointIndex-1][0]=obj["x"].toInt() & 0x000000ff;//列
zrf_rcv_obj.m_pixelPos[ipointNum-iPointIndex-1][1]=obj["y"].toInt() & 0x000000ff;//行
qDebug()<<QString("第%1点行=%2").arg(ipointNum-iPointIndex-1).arg(zrf_rcv_obj.m_pixelPos[ipointNum-iPointIndex-1][0],2,16,QLatin1Char('0')).toUpper();
qDebug()<<QString("第%1点列=%2").arg(ipointNum-iPointIndex-1).arg(zrf_rcv_obj.m_pixelPos[ipointNum-iPointIndex-1][1],2,16,QLatin1Char('0')).toUpper();
iPointIndex++;
}
//zrf的fpga版本里没有行序的概念走点表里描述了所有扫的点的坐标从0扫到最大扫顺序排列
int iScanIndex=0;
auto scans = mModule["RowMap"].toArray();
qDebug()<<"scans.size="<<scans.size();
for(auto scan : scans) {
zrf_rcv_obj.m_scanIndex[iScanIndex]=scan.toInt();
qDebug()<<QString("第%1扫行=%2").arg(iScanIndex).arg(zrf_rcv_obj.m_scanIndex[iScanIndex],2,16,QLatin1Char('0')).toUpper();
iScanIndex++;
}
auto points = mModule["ColumnMap"].toArray();
int iPointIndex=0;
for(auto point : points) {
zrf_rcv_obj.m_pixelPos[iPointIndex][0]=point.toInt() & 0x000000ff;//列
zrf_rcv_obj.m_pixelPos[iPointIndex][1]=(point.toInt() & 0x0000ff00) >>8;//行
iPointIndex++;
for(int i=1;i<=zrf_rcv_obj.b5;i++)
{
for(int j=0;j<ipointNum;j++){
zrf_rcv_obj.m_pixelPos[i*ipointNum+j][0]=zrf_rcv_obj.m_pixelPos[(i-1)*ipointNum+j][0];
zrf_rcv_obj.m_pixelPos[i*ipointNum+j][1]=zrf_rcv_obj.m_pixelPos[(i-1)*ipointNum+j][1]+(zrf_rcv_obj.m_scanIndex[i]-zrf_rcv_obj.m_scanIndex[i-1]);//根据行序推到出其他扫的点的坐标
}
}
}
int ExpertWin::GetIcTypeIndexFromName(QString strName)
{
@ -1611,136 +1374,170 @@ int ExpertWin::GetRowYiMaIndexFromName(QString strName)
return -1;
}
void ExpertWin::changeValueByEffectControler() {
//spinbox
if(m_iRcvCardType!=enum_zrf) return;
QObject::connect(fdCardWidth, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), [=](int value){ qDebug() << "箱体宽度当前值:" << value;
zrf_rcv_obj.b31=value&0x00ff; zrf_rcv_obj.b32=(value&0xff00) >> 8; });//
QObject::connect(spinGclkXw, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), [=](int value){ qDebug() << "GCLK相位当前值" << value;
zrf_rcv_obj.b193=value; });
QObject::connect(spinGclkZkb, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), [=](int value){ qDebug() << "GCLK占空比当前值" << value;
zrf_rcv_obj.b193=value; });
QObject::connect(spinLineNs, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), [=](int value){ qDebug() << "换行时间当前值:" << value;
zrf_rcv_obj.b193=value; });
QObject::connect(spinLineWz, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), [=](int value){ qDebug() << "行位置当前值:" << value;
zrf_rcv_obj.b193=value; });
QObject::connect(spinLineXy, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), [=](int value){ qDebug() << "消隐时间当前值:" << value;
zrf_rcv_obj.b2=value; });//
QObject::connect(spinPointsOnePort, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), [=](int value){ qDebug() << "单口带载点数当前值:" << value;
zrf_rcv_obj.b193=value; });
//combox
QObject::connect(cbDCLKf, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "DLC频率当前值" << value;
zrf_rcv_obj.b18_3_0=value; });//
QObject::connect(cbDclkXw, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "DCLK相位当前值" << value;
zrf_rcv_obj.b19_7_4=value; });//
QObject::connect(cbDclkZkb, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "DCLK占空比当前值" << value;
zrf_rcv_obj.b19_3_0=value; });//
QObject::connect(fdDirection, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "模组级联方向出当前值:" << value;
zrf_rcv_obj.b8_5_4=value; });//
QObject::connect(fdSectorCount, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "多开设置出当前值:" << value;
zrf_rcv_obj.b70_5_2=value;
if(zrf_rcv_obj.b70_5_2!=0)
zrf_rcv_obj.b70_6=1;
else zrf_rcv_obj.b70_6=0; });//
QObject::connect(freshBeiLv, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "刷新倍率出当前值:" << value;
zrf_rcv_obj.b21_7_5=value; });//
QObject::connect(cbGCLKf, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "GCLK周期出当前值" << value;
zrf_rcv_obj.b193=value; });
QObject::connect(cbGryLevel, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "灰度等级出当前值:" << value;
if(zrf_rcv_obj.m_pwmFlag==1){
switch(value){
case 0: zrf_rcv_obj.b21_4_0=23; break;//正常4096
case 1: zrf_rcv_obj.b21_4_0=26; break;//正常8192
case 2: zrf_rcv_obj.b21_4_0=29; break;//正常16384
case 3: zrf_rcv_obj.b21_4_0=30; break;//正常32768
case 4: zrf_rcv_obj.b21_4_0=31; break;//正常65535
default: zrf_rcv_obj.b21_4_0=31; break;//正常65535
}
QObject::connect(m_effectStack, static_cast<void (QStackedWidget::*)(int)>(&QStackedWidget::currentChanged), [=](int value){ qDebug() << "效果参数界面当前值:" << value;
//不同的芯片类型内不同名称的芯片的控件取整范围也不同需要根据IC的名称重新初始化控制内容
if(value==0){
normalPanel->reSetcontrolerByIcType(fdChipType->text());
}
else
zrf_rcv_obj.b21_4_0=value; });//
QObject::connect(cbNoSign, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "无信号输出出当前值:" << value;
zrf_rcv_obj.b29_1_0=value; });//
QObject::connect(cbStb, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "行信号STB微调出当前值" << value;
zrf_rcv_obj.b193=value; });
QObject::connect(cbDE, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "行信号DE微调出当前值" << value;
zrf_rcv_obj.b193=value; });
QObject::connect(cbABC, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "行信号ABC微调出当前值" << value;
zrf_rcv_obj.b193=value; });
QObject::connect(cbXiaoYinDianPing, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "消隐电平出当前值:" << value;
zrf_rcv_obj.b1_5=value; });//
QObject::connect(cbSTB, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "锁存STB电平方向出当前值" << value;
zrf_rcv_obj.b0_6=value; });//
QObject::connect(cbSRowOut, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "行输出电平出当前值:" << value;
zrf_rcv_obj.b0_4=value; });//
//checkbox
QObject::connect(checkSyncXianKa, static_cast<void (QCheckBox::*)(int)>(&QCheckBox::stateChanged), [=](int value){ qDebug() << "同步显卡出当前值:" << value;
if(value==0) zrf_rcv_obj.b26_7=value ;
else zrf_rcv_obj.b26_7=0b1; });//
QObject::connect(checkJianLiang, static_cast<void (QCheckBox::*)(int)>(&QCheckBox::stateChanged), [=](int value){ qDebug() << "开屏渐亮出当前值:" << value;
if(value==0) zrf_rcv_obj.b1_0=value ;
else zrf_rcv_obj.b1_0=0b1; });//
QObject::connect(checkDoubleCopy, static_cast<void (QCheckBox::*)(int)>(&QCheckBox::stateChanged), [=](int value){ qDebug() << "双备份出当前值:" << value;
if(value==0) zrf_rcv_obj.b1_4=value ;
else zrf_rcv_obj.b1_4=0b1; });//
QObject::connect(checkDsignalAsCLk, static_cast<void (QCheckBox::*)(int)>(&QCheckBox::stateChanged), [=](int value){ qDebug() << "D信号作为第二组CLK出当前值" << value;
if(value==0) zrf_rcv_obj.b1_1=value ;
else zrf_rcv_obj.b1_1=0b1; });//
else if(value==1){
pwmPanel->reSetcontrolerByIcType(fdChipType->text());
}
else if(value == 2){
doublelatchPanel->reSetcontrolerByIcType(fdChipType->text());
} });//
//spinbox
if(m_iRcvCardType==enum_zrf) {
QObject::connect(fdCardWidth, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), [=](int value){ qDebug() << "箱体宽度当前值:" << value;
zrf_rcv_obj.b31=value&0x00ff; zrf_rcv_obj.b32=(value&0xff00) >> 8; });//
QObject::connect(fdDirection, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "模组级联方向出当前值:" << value;
zrf_rcv_obj.b8_5_4=value; });//
QObject::connect(fdSectorCount, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "多开设置出当前值:" << value;
zrf_rcv_obj.b70_5_2=value;
if(zrf_rcv_obj.b70_5_2!=0)
zrf_rcv_obj.b70_6=1;
else zrf_rcv_obj.b70_6=0; });//
}
}
void ExpertWin::SetEffectControlerValueByClass()
{
//spinbox
fdCardWidth->setValue(( zrf_rcv_obj.b32<<8)|zrf_rcv_obj.b31); qDebug() << "箱体宽度当前值:" << fdCardWidth->value();//
spinGclkXw->setValue(zrf_rcv_obj.b193); qDebug() << "GCLK相位当前值" << spinGclkXw->value();
spinGclkZkb->setValue(zrf_rcv_obj.b193); qDebug() << "GCLK占空比当前值" << spinGclkZkb->value();
spinLineNs->setValue(zrf_rcv_obj.b193); qDebug() << "换行时间当前值:" << spinLineNs->value();
spinLineWz->setValue(zrf_rcv_obj.b193); qDebug() << "行位置当前值:" << spinLineWz->value();
spinLineXy->setValue(zrf_rcv_obj.b2); qDebug() << "消隐时间当前值:" << spinLineXy->value();//
spinPointsOnePort->setValue(zrf_rcv_obj.b193); qDebug() << "单口带载点数当前值:" << spinPointsOnePort->value();
//combox
cbDCLKf->setCurrentIndex(zrf_rcv_obj.b18_3_0); qDebug() << "DLC频率当前值" << cbDCLKf->currentIndex();
cbDclkXw->setCurrentIndex(zrf_rcv_obj.b19_7_4); qDebug() << "DCLK相位当前值" << cbDclkXw->currentIndex();
cbDclkZkb->setCurrentIndex(zrf_rcv_obj.b19_3_0); qDebug() << "DCLK占空比当前值" << cbDclkZkb->currentIndex();
fdDirection->setCurrentIndex(zrf_rcv_obj.b8_5_4); qDebug() << "模组级联方向出当前值:" << fdDirection->currentIndex();
fdSectorCount->setCurrentIndex(zrf_rcv_obj.b70_5_2); qDebug() << "多开设置出当前值:" << fdSectorCount->currentIndex();
freshBeiLv->setCurrentIndex(zrf_rcv_obj.b21_7_5); qDebug() << "刷新倍率出当前值:" << freshBeiLv->currentIndex();
cbGCLKf->setCurrentIndex(zrf_rcv_obj.b193); qDebug() << "GCLK周期出当前值" << cbGCLKf->currentIndex();
int index=31;
if(zrf_rcv_obj.m_pwmFlag==1)
switch(zrf_rcv_obj.b21_4_0){
case 23: index=0; break;//正常4096
case 26: index=1; break;//正常8192
case 29: index=2; break;//正常16384
case 30: index=3; break;//正常32768
case 31: index=4; break;//正常65535
default: index=4; break;//正常65535
}
else
index=zrf_rcv_obj.b21_4_0;
cbGryLevel->setCurrentIndex(index); qDebug() << "灰度等级出当前值:" << cbGryLevel->currentIndex();
cbNoSign->setCurrentIndex(zrf_rcv_obj.b29_1_0); qDebug() << "无信号输出出当前值:" << cbNoSign->currentIndex();
cbStb->setCurrentIndex(zrf_rcv_obj.b193); qDebug() << "行信号STB微调出当前值" << cbStb->currentIndex();
cbDE->setCurrentIndex(zrf_rcv_obj.b193); qDebug() << "行信号DE微调出当前值" << cbDE->currentIndex();
cbABC->setCurrentIndex(zrf_rcv_obj.b193); qDebug() << "行信号ABC微调出当前值" << cbABC->currentIndex();
cbXiaoYinDianPing->setCurrentIndex(zrf_rcv_obj.b1_5); qDebug() << "消隐电平出当前值:" << cbXiaoYinDianPing->currentIndex();
cbSTB->setCurrentIndex(zrf_rcv_obj.b0_6); qDebug() << "锁存STB电平方向出当前值" << cbSTB->currentIndex();
cbSRowOut->setCurrentIndex(zrf_rcv_obj.b0_4); qDebug() << "行输出电平出当前值:" << cbSRowOut->currentIndex();
//checkbox
checkSyncXianKa->setChecked(zrf_rcv_obj.b26_7); qDebug() << "同步显卡出当前值:" << checkSyncXianKa->isChecked();
checkJianLiang->setChecked(zrf_rcv_obj.b1_0); qDebug() << "开屏渐亮出当前值:" << checkJianLiang->isChecked();
checkDoubleCopy->setChecked(zrf_rcv_obj.b1_4); qDebug() << "双备份出当前值:" << checkDoubleCopy->isChecked();
checkDsignalAsCLk->setChecked(zrf_rcv_obj.b1_1); qDebug() << "D信号作为第二组CLK出当前值" << checkDsignalAsCLk->isChecked();
if(m_iRcvCardType == enum_zrf) {
//发送基本参数
auto zrf_msg = QByteArray::fromHex("55 55 00 11 22 33 44 55 00 11 22 33 44 55 10 5a 13 00 00 00 00 e0 ff ff 00 f1 f1 f1 f1 00 00 00 00 00 00 00 00 00 00 00 00");
auto zrf_cmd_msg = QByteArray::fromHex("55 55 00 11 22 33 44 55 00 11 22 33 44 55 10 5a 13 00 00 00 00 e0 00 00 00 f2 f2 f2 f2 00 00 00 00 00 00 00 00 00 00 00 00");
int res1=0;
//发送基本参数
MACRO_FUNC_SEND_PARAM("读取基本参数",classToBaseMsg(),1,0x00)
if(m_effectStack->currentIndex()==0){
qDebug()<<"normalPanel->SetEffectControlerValueByClass();";
normalPanel->SetEffectControlerValueByClass();
}
else if(m_effectStack->currentIndex()==1){
qDebug()<<"pwmPanel->SetEffectControlerValueByClass();";
pwmPanel->SetEffectControlerValueByClass();
}
else if(m_effectStack->currentIndex()==2){
qDebug()<<"doublelatchPanel->SetEffectControlerValueByClass();";
doublelatchPanel->SetEffectControlerValueByClass();
}
}
//added by alahover -o 20230830
//added by alahover -s 02030903
void ExpertWin::SendBaseParam_zrf()
{
if(m_iRcvCardType == enum_zrf) {
auto zrf_msg = QByteArray::fromHex("55 55 00 11 22 33 44 55 00 11 22 33 44 55 10 5a 13 00 00 00 00 e0 ff ff 00 f1 f1 f1 f1 00 00 00 00 00 00 00 00 00 00 00 00");
auto zrf_cmd_msg = QByteArray::fromHex("55 55 00 11 22 33 44 55 00 11 22 33 44 55 10 5a 13 00 00 00 00 e0 00 00 00 f2 f2 f2 f2 00 00 00 00 00 00 00 00 00 00 00 00");
int res1=0;
MACRO_FUNC_SEND_PARAM("发送基本参数",classToBaseMsg(),1,0x00)
}
}
void ExpertWin::SendGammaParam_zrf()
{
if(m_iRcvCardType == enum_zrf) {
auto zrf_msg = QByteArray::fromHex("55 55 00 11 22 33 44 55 00 11 22 33 44 55 10 5a 13 00 00 00 00 e0 ff ff 00 f1 f1 f1 f1 00 00 00 00 00 00 00 00 00 00 00 00");
auto zrf_cmd_msg = QByteArray::fromHex("55 55 00 11 22 33 44 55 00 11 22 33 44 55 10 5a 13 00 00 00 00 e0 00 00 00 f2 f2 f2 f2 00 00 00 00 00 00 00 00 00 00 00 00");
int res1=0;
MACRO_FUNC_SEND_PARAM("发送gamma参数",classToGammaMsg(0,flashPage),2,0x10)
}
}
void ExpertWin::SendMiaoDianParam_zrf()
{
if(m_iRcvCardType == enum_zrf) {
auto zrf_msg = QByteArray::fromHex("55 55 00 11 22 33 44 55 00 11 22 33 44 55 10 5a 13 00 00 00 00 e0 ff ff 00 f1 f1 f1 f1 00 00 00 00 00 00 00 00 00 00 00 00");
auto zrf_cmd_msg = QByteArray::fromHex("55 55 00 11 22 33 44 55 00 11 22 33 44 55 10 5a 13 00 00 00 00 e0 00 00 00 f2 f2 f2 f2 00 00 00 00 00 00 00 00 00 00 00 00");
int res1=0;
MACRO_FUNC_SEND_PARAM("发送描点参数",classToMiaoDianMsg(flashPage),16,0x30)
}
}
void ExpertWin::SendPaiXuParam_zrf()
{
if(m_iRcvCardType == enum_zrf) {
auto zrf_msg = QByteArray::fromHex("55 55 00 11 22 33 44 55 00 11 22 33 44 55 10 5a 13 00 00 00 00 e0 ff ff 00 f1 f1 f1 f1 00 00 00 00 00 00 00 00 00 00 00 00");
auto zrf_cmd_msg = QByteArray::fromHex("55 55 00 11 22 33 44 55 00 11 22 33 44 55 10 5a 13 00 00 00 00 e0 00 00 00 f2 f2 f2 f2 00 00 00 00 00 00 00 00 00 00 00 00");
int res1=0;
MACRO_FUNC_SEND_PARAM("发送排序参数",classToPaiXuSMsg(flashPage),8,0x20)
}
}
void ExpertWin::GetPaiXuJObjFromJObj(JObj obj)
{
int iCountInNet0=0;
JArray valueList=obj["values"].toArray();
for(int m=0;m<valueList.size();m++){
auto connWin = (ExpertScreenConnWin*) connStack->widget(m);
connWin->InitByJObj(valueList[m].toObj());
auto boxList =valueList[m]["boxList"].toArray();
for(int i=0;i<boxList.size();i++){
JObj tempObj=boxList[i].toObj();
zrf_rcv_obj.p_x[i] = (quint16)tempObj["X"].toInt()&0xFFFF;
zrf_rcv_obj.p_y[i] = (quint16)tempObj["Y"].toInt()&0xFFFF;
zrf_rcv_obj.p_w[i] = (quint16)tempObj["ModuleWidth"].toInt()&0xFFFF;
zrf_rcv_obj.p_h[i] = (quint16)tempObj["ModuleHeight"].toInt()&0xFFFF;
zrf_rcv_obj.p_posNum[i]= (quint16)tempObj["SubId"].toInt()&0xFFFF;
zrf_rcv_obj.p_posNum[i]= (quint16)tempObj["PortId"].toInt()&0xFFFF;
if(zrf_rcv_obj.p_posNum[i] == 0)
iCountInNet0++;
}
zrf_rcv_obj.p4_rcvCardsNumInNet=iCountInNet0;
}
}
int ExpertWin::GetPaiXuJObjFromName(QString strName)
{
QFile qFile(strName);
if(qFile.open(QFile::ReadOnly)) {
auto data = qFile.readAll();
qFile.close();
auto json = JFrom(data).toObj();
if(! json.empty())
{
GetPaiXuJObjFromJObj(json);
return 0;
}
else{
QMessageBox::information(this, tr("提示"), tr("空temp.kcon文件"));
return -1;
}
}
QMessageBox::information(this, tr("提示"), tr("缺失temp.kcon文件"));
return -1;
}
JObj ExpertWin::ClassToJObj()
{
JArray values;
JArray boxList;
int iRowNum=0;
int iColNum=0;
//暂且只支持相同宽高箱体的级联
for(int m=0;m<zrf_rcv_obj.p4_rcvCardsNumInNet;m++){
int irowIndex=zrf_rcv_obj.p_x[m]/zrf_rcv_obj.p_w[m];
if(iRowNum<irowIndex)
iRowNum=irowIndex;
int icolIndex=zrf_rcv_obj.p_y[m]/zrf_rcv_obj.p_h[m];
if(iColNum<icolIndex)
iColNum=icolIndex;
}
for(int i=0;i<zrf_rcv_obj.p4_rcvCardsNumInNet;i++){
boxList.append(JObj{
{"X", zrf_rcv_obj.p_x[i]},
{"Y", zrf_rcv_obj.p_y[i]},
{"ModuleWidth", zrf_rcv_obj.p_w[i]},
{"ModuleHeight", zrf_rcv_obj.p_h[i]},
{"PortId", zrf_rcv_obj.p2_netIndexInSendCard},
{"SubId", i},
{"ScreenPosRow", zrf_rcv_obj.p_x[i]/zrf_rcv_obj.p_w[i]},
{"ScreenPosCol", zrf_rcv_obj.p_y[i]/zrf_rcv_obj.p_h[i]},
{"ScreenRow", iRowNum+1},
{"ScreenCol", iColNum+1},
{"SettingWidth",zrf_rcv_obj.p_w[i] },
{"SettingHeight", zrf_rcv_obj.p_h[i]},
{"ScreenIndex", zrf_rcv_obj.p5_netScreenIndex},
});
}
values.append(JObj{
{"isCompScreen", false},
{"boxList", boxList},
});
return {{"values", values}};
}
//added by alahover -o 02030903

View File

@ -9,6 +9,7 @@
#include <QCheckBox>
#include <QRadioButton>
#include <QStackedLayout>
#include <QStackedWidget>
class ExpertWin : public BaseWin {
Q_OBJECT
@ -44,11 +45,14 @@ public:
QRadioButton *fdAdvacned;
QPushButton *btnConnReadBack, *btnReceiveReadBack;
QSpinBox *spinGclkXw,*spinGclkZkb,*spinLineNs,*spinLineWz,*spinLineXy,*spinPointsOnePort;
QComboBox *cbDCLKf,*cbDclkXw, *cbDclkZkb,*freshBeiLv,*cbGCLKf,*cbGryLevel,*cbNoSign,*cbStb,*cbDE,*cbABC,*cbXiaoYinDianPing,*cbSTB,*cbSRowOut;
QLabel * m_ctrlFreshRate,*m_ctrlBrightEff,*m_ctrlMinOE;
QCheckBox * checkSyncXianKa,*checkJianLiang,*checkDoubleCopy,*checkDsignalAsCLk;
// QSpinBox *spinGclkXw,*spinGclkZkb,*spinLineNs,*spinLineWz,*spinLineXy,*spinPointsOnePort;
// QComboBox *cbDCLKf,*cbDclkXw, *cbDclkZkb,*freshBeiLv,*cbGCLKf,*cbGryLevel,*cbNoSign,*cbStb,*cbDE,*cbABC,*cbXiaoYinDianPing,*cbSTB,*cbSRowOut;
// QLabel * m_ctrlFreshRate,*m_ctrlBrightEff,*m_ctrlMinOE;
// QCheckBox * checkSyncXianKa,*checkJianLiang,*checkDoubleCopy,*checkDsignalAsCLk;
QStackedWidget *m_effectStack;//added by alahover 20230904
// NormalEffectWin * normalPanel ;
// PwmEffectWin * pwmPanel ;
// DoubleLatchEffectWin * doublelatchPanel;
//added by alahover -o 20230830
//added by alahover -s 20230817
@ -214,18 +218,18 @@ public:
unsigned char b168_4_0 = 0b00000; //消隐延迟时间:(输入值+1*48ns
// unsigned char b168 = (b168_7_5<<5 & 0b11100000) | (b168_4_0 & 0b00011111);
unsigned short b169_192[12] = {0x0000,//红芯片参数 1 高字节,红芯片参数 1 低字节
0x0000,//红芯片参数 2 高字节,红芯片参数 2 低字节
0x0000,//红芯片参数 3 高字节,红芯片参数 3 低字节
0x0000,//绿芯片参数 1 高字节,绿芯片参数 1 低字节
0x0000,//绿芯片参数 2 高字节,绿芯片参数 2 低字节
0x0000,//绿芯片参数 3 高字节,绿芯片参数 3 低字节
0x0000,//蓝芯片参数 1 高字节,蓝芯片参数 1 低字节
0x0000,//蓝芯片参数 2 高字节,蓝芯片参数 2 低字节
0x0000,//蓝芯片参数 3 高字节,蓝芯片参数 3 低字节
0x0000,//红芯片参数 4 高字节,红芯片参数 4 低字节
0x0000,//绿芯片参数 4 高字节,绿芯片参数 4 低字节
0x0000 //蓝芯片参数 4 高字节,蓝芯片参数 4 低字节
unsigned char b169_192[48] = {0x00,0x00,//红芯片参数 1 高字节,红芯片参数 1 低字节
0x00,0x00,//红芯片参数 2 高字节,红芯片参数 2 低字节
0x00,0x00,//红芯片参数 3 高字节,红芯片参数 3 低字节
0x00,0x00,//绿芯片参数 1 高字节,绿芯片参数 1 低字节
0x00,0x00,//绿芯片参数 2 高字节,绿芯片参数 2 低字节
0x00,0x00,//绿芯片参数 3 高字节,绿芯片参数 3 低字节
0x00,0x00,//蓝芯片参数 1 高字节,蓝芯片参数 1 低字节
0x00,0x00,//蓝芯片参数 2 高字节,蓝芯片参数 2 低字节
0x00,0x00,//蓝芯片参数 3 高字节,蓝芯片参数 3 低字节
0x00,0x00,//红芯片参数 4 高字节,红芯片参数 4 低字节
0x00,0x00,//绿芯片参数 4 高字节,绿芯片参数 4 低字节
0x00,0x00 //蓝芯片参数 4 高字节,蓝芯片参数 4 低字节
};
unsigned char b193 = 0x00; //保留
@ -246,7 +250,6 @@ public:
unsigned char p6_reserve=0;//保留
unsigned char p7_reserve1=0;//保留
St_Rcv_Pos p8_st_rcv_pos[256];
unsigned short p_x[256]={0};
unsigned short p_y[256]={0};
unsigned short p_w[256]={256};
@ -280,12 +283,21 @@ public:
int GetIcTypeIndexFromName(QString strName);
int GetRowYiMaIndexFromName(QString strName);
//added by alahover -o 20230830
//added by alahover -o 20230823
//added by alahover -s 20230903
void SendBaseParam_zrf();//added by alahover 20230903
void SendGammaParam_zrf();//added by alahover 20230903
void SendMiaoDianParam_zrf();//added by alahover 20230903
void SendPaiXuParam_zrf();//added by alahover 20230903
int GetPaiXuJObjFromName(QString strName);//added by alahover 20230903
void GetPaiXuJObjFromJObj(JObj obj);
JObj ClassToJObj();
//added by alahover -o 20230903
protected:
void closeEvent(QCloseEvent *) override;
};
#define MACRO_FUNC_SEND_PARAM(TIP_MESSAGE,FUNC,SEND_FLASHPAGE_NUM,FLASH_ADDR) \
for(int iSendCount=0;iSendCount<SEND_FLASHPAGE_NUM;iSendCount++)\
{\

View File

@ -192,3 +192,155 @@ void GammaGen(unsigned short pGammaDataBuffer[],float fGamma,unsigned int uiGray
}
}
//added by alahover -o 20230829
int GetIcTypeFromName(QString strName)
{
int iResult=0;
//"ICN系列"
if(strName == "ICN2026" ) iResult = enum_normal;
if(strName == "ICN2027" ) iResult = enum_normal;
if(strName == "ICN2028" ) iResult = enum_normal;
if(strName == "ICN2037" ) iResult = enum_normal;
if(strName == "ICN2038" ) iResult = enum_normal;
if(strName == "ICN2038S" ) iResult = enum_normal;
if(strName == "ICN2053" ) iResult = enum_pwm;
if(strName == "ICN2058" ) iResult = enum_normal;
if(strName == "ICN2088" ) iResult = enum_normal;
if(strName == "ICND2045" ) iResult = enum_normal;
if(strName == "ICND2046" ) iResult = enum_normal;
if(strName == "ICND2047" ) iResult = enum_normal;
if(strName == "ICND2049" ) iResult = enum_normal;
if(strName == "ICND2055" ) iResult = enum_normal;
if(strName == "ICND2059" ) iResult = enum_normal;
if(strName == "ICND2065" ) iResult = enum_normal;
if(strName == "ICND2069" ) iResult = enum_normal;
if(strName == "ICND2076" ) iResult = enum_normal;
if(strName == "ICND2110" ) iResult = enum_normal;
if(strName == "ICND2112" ) iResult = enum_normal;
if(strName == "ICND2153" ) iResult = enum_normal;
if(strName == "ICND2153_three") iResult = enum_normal;
if(strName == "ICND2163") iResult = enum_normal;
if(strName == "ICND2200") iResult = enum_normal;
// "SM系列"
if(strName == "SM16017_NEW") iResult = enum_normal;
if(strName == "SM16017S") iResult = enum_normal;
if(strName == "SM16159S") iResult = enum_normal;
if(strName == "SM16169S") iResult = enum_normal;
if(strName == "SM16207S") iResult = enum_normal;
if(strName == "SM16218") iResult = enum_normal;
if(strName == "SM16227S") iResult = enum_normal;
if(strName == "SM16237DS") iResult = enum_normal;
if(strName == "SM16237S") iResult = enum_normal;
if(strName == "SM16259S") iResult = enum_normal;
if(strName == "SM16259S") iResult = enum_normal;
if(strName == "SM16369") iResult = enum_normal;
if(strName == "SM16380") iResult = enum_normal;
if(strName == "SM16388") iResult = enum_normal;
if(strName == "SM16389") iResult = enum_normal;
if(strName == "SM16509/16399") iResult = enum_normal;
//"LS系列"
if(strName == "LS9918S") iResult = enum_normal;
if(strName == "LS9919S") iResult = enum_normal;
if(strName == "LS9926S") iResult = enum_normal;
if(strName == "LS9929C") iResult = enum_normal;
if(strName == "LS9929S") iResult = enum_normal;
if(strName == "LS9930S") iResult = enum_normal;
if(strName == "LS9931S") iResult = enum_normal;
if(strName == "LS9935B") iResult = enum_normal;
if(strName == "LS9935S") iResult = enum_normal;
if(strName == "LS9936S") iResult = enum_normal;
if(strName == "LS9961S") iResult = enum_normal;
//"MBI系列"
if(strName == "MBI5041/5042") iResult = enum_normal;
if(strName == "MBI5051") iResult = enum_normal;
if(strName == "MBI5124") iResult = enum_normal;
if(strName == "MBI5151") iResult = enum_normal;
if(strName == "MBI5153") iResult = enum_normal;
if(strName == "MBI5155") iResult = enum_normal;
if(strName == "MBI5158") iResult = enum_normal;
if(strName == "MBI5252") iResult = enum_normal;
if(strName == "MBI5253") iResult = enum_normal;
if(strName == "MBI5253B") iResult = enum_normal;
if(strName == "MBI5254") iResult = enum_normal;
if(strName == "MBI5264") iResult = enum_normal;
if(strName == "MBI5268") iResult = enum_normal;
if(strName == "MBI5353") iResult = enum_normal;
if(strName == "MBI5353B") iResult = enum_normal;
if(strName == "MBI6322") iResult = enum_normal;
if(strName == "MBI6328") iResult = enum_normal;
if(strName == "MBI6334") iResult = enum_normal;
//"SUM系列"
if(strName == "SUM2017") iResult = enum_normal;
if(strName == "SUM2017T") iResult = enum_normal;
if(strName == "SUM2017TD") iResult = enum_normal;
if(strName == "SUM2028") iResult = enum_normal;
if(strName == "SUM2030") iResult = enum_normal;
if(strName == "SUM2030T") iResult = enum_normal;
if(strName == "SUM2032") iResult = enum_normal;
if(strName == "SUM2033") iResult = enum_normal;
if(strName == "SUM2035") iResult = enum_normal;
if(strName == "SUM2036") iResult = enum_normal;
if(strName == "SUM2037") iResult = enum_normal;
if(strName == "SUM2117") iResult = enum_normal;
if(strName == "SUM2130") iResult = enum_normal;
if(strName == "SUM2131") iResult = enum_normal;
if(strName == "SUM2135") iResult = enum_normal;
if(strName == "SUM6086") iResult = enum_normal;
//"FM系列")
if(strName == "FM6128") iResult = enum_normal;
if(strName == "FM6129") iResult = enum_normal;
if(strName == "FM6153") iResult = enum_normal;
if(strName == "FM6182") iResult = enum_normal;
if(strName == "FM6253") iResult = enum_normal;
if(strName == "FM6353") iResult = enum_normal;
if(strName == "FM6356") iResult = enum_normal;
if(strName == "FM6363") iResult = enum_normal;
if(strName == "FM6555") iResult = enum_normal;
if(strName == "FM6565/6569") iResult = enum_normal;
if(strName == "FM6565CE") iResult = enum_normal;
//"DP系列"
if(strName == "DP5135") iResult = enum_normal;
if(strName == "DP5220X") iResult = enum_normal;
if(strName == "DP5525") iResult = enum_normal;
//"MY系列");
if(strName == "MY9758") iResult = enum_normal;
if(strName == "MY9862") iResult = enum_normal;
if(strName == "MY9866") iResult = enum_normal;
//"LYD系列"
if(strName == "LYD6168B") iResult = enum_normal;
if(strName == "LYD6168C") iResult = enum_normal;
if(strName == "LYD6168D") iResult = enum_normal;
if(strName == "LYD6168E") iResult = enum_normal;
if(strName == "LYD6188") iResult = enum_normal;
if(strName == "LYD6188PC") iResult = enum_normal;
//"其他系列"
if(strName == "通用") iResult = enum_normal;
if(strName == "A5065") iResult = enum_normal;
if(strName == "AXS6018") iResult = enum_normal;
if(strName == "CFD135A") iResult = enum_normal;
if(strName == "CFD455A") iResult = enum_normal;
if(strName == "CNS7153") iResult = enum_normal;
if(strName == "CNS7253") iResult = enum_normal;
if(strName == "CNS7263") iResult = enum_normal;
if(strName == "CS2017") iResult = enum_normal;
if(strName == "CS2033") iResult = enum_normal;
if(strName == "D26188") iResult = enum_normal;
if(strName == "HX8055") iResult = enum_normal;
if(strName == "HX8864") iResult = enum_normal;
if(strName == "HX8896") iResult = enum_normal;
if(strName == "RT5965") iResult = enum_normal;
if(strName == "RT5967") iResult = enum_normal;
if(strName == "SCL8081A") iResult = enum_normal;
if(strName == "XM11202G") iResult = enum_normal;
return iResult;
}

View File

@ -37,6 +37,11 @@ enum enum_rcvCardType{
enum_mxe,
NoCard
};
enum enum_IcType{
enum_normal = 0,
enum_pwm = 1,
enum_doubleLatch = 2,
};
struct HeadMap {
byte pre = ipp(2);
byte ver = fi++;
@ -167,7 +172,7 @@ class PcapReThread;
extern PcapReThread *reThd;
extern QString gFileHome;
extern void GammaGen(unsigned short pGammaDataBuffer[],float fGamma,unsigned int uiGray);//added by alahover 20230829
extern int GetIcTypeFromName(QString strName);
QByteArray getNetDev(QWidget *parent, QByteArray, bool);
inline int sendMsg(const byte *msg, int size, int id, qint64 timeout, std::function<void(int code, const QByteArray)> callback, WaitingDlg *waitingDlg = 0) {

View File

@ -176,6 +176,17 @@ public:
new (this) LinkedMap(other);
return *this;
}
V &operator[](const K &k) {
if(_pri==0) _pri = new LinkedMapPri<K, V>;
auto pair = _pri->map.emplace(k, nullptr);
if(pair.second) {
auto node = new Node{_pri, _pri->prev, {k, V()}};
_pri->prev->next = node;
_pri->prev = node;
pair.first->second = node;
}
return pair.first->second->value.second;
}
const V operator[](const K &k) const {
if(_pri==0) return V();
auto it = _pri->map.find(k);

View File

@ -0,0 +1,297 @@
#include "doublelatcheffectwin.h"
#include "globalfunc.h"
#include "gutil/qgui.h"
#include <QPushButton>
#include <QStackedWidget>
#include <QCheckBox>
#include "efffrefr.h"
DoubleLatchEffectWin::DoubleLatchEffectWin(ExpertWin *parent)
{
expertWin=parent;
resize(880, 220);
{
if(expertWin->m_iRcvCardType == enum_zrf)
{
auto vBox1=new VBox(this);
auto hh = new HBox(vBox1);
hh->addSpacing(20);
//第一列区域
auto vvv = new VBox(hh);
//1.1.移位时钟频率
auto hhh = new HBox(vvv);
auto lb = new QLabel(tr("DCLK频率:"));
hhh->addWidget(lb);
cbDCLKf = new QComboBox(); cbDCLKf->addItem("31.2M");cbDCLKf->addItem("25M");cbDCLKf->addItem("20.83M");cbDCLKf->addItem("17.86M");cbDCLKf->addItem("15.63M");cbDCLKf->addItem("12.5M");cbDCLKf->addItem("10.42M");cbDCLKf->addItem("8.9M");
cbDCLKf->addItem("7.8M");cbDCLKf->addItem("6.25M");;cbDCLKf->addItem("5.2M");;cbDCLKf->addItem("4.5M");;cbDCLKf->addItem("3.9M");;cbDCLKf->addItem("3.125M"); ;cbDCLKf->addItem("1.9M"); ;cbDCLKf->addItem("1M"); hhh->addWidget(cbDCLKf);
//1.2.灰度级别
hhh = new HBox(vvv);
lb = new QLabel(tr("灰度级数:")); hhh->addWidget(lb);
cbGryLevel = new QComboBox(); cbGryLevel->addItem("无灰度"); cbGryLevel->addItem("无OE8级");cbGryLevel->addItem("无OE16级");cbGryLevel->addItem("无OE32级");cbGryLevel->addItem("无OE64级");cbGryLevel->addItem("正常16级"); cbGryLevel->addItem("高亮16级");cbGryLevel->addItem("正常32级");
cbGryLevel->addItem("高亮32级");cbGryLevel->addItem("正常64级");cbGryLevel->addItem("高亮64级");cbGryLevel->addItem("正常128级");cbGryLevel->addItem("高亮128级");cbGryLevel->addItem("正常256级");cbGryLevel->addItem("高亮256级");cbGryLevel->addItem("正常512级");
cbGryLevel->addItem("高亮512级");cbGryLevel->addItem("正常1024级");cbGryLevel->addItem("高亮1024级");cbGryLevel->addItem("低亮2048级");cbGryLevel->addItem("正常2048级");cbGryLevel->addItem("高亮2048级");cbGryLevel->addItem("低亮4096级");cbGryLevel->addItem("正常4096级");
cbGryLevel->addItem("高亮4096级");cbGryLevel->addItem("低亮8192级");cbGryLevel->addItem("正常8192级");cbGryLevel->addItem("高亮8192级");cbGryLevel->addItem("低亮16384级");cbGryLevel->addItem("正常16384");cbGryLevel->addItem("正常32768级");cbGryLevel->addItem("正常65535级"); hhh->addWidget(cbGryLevel);
//1.3.刷新倍率
hhh = new HBox(vvv);
lb = new QLabel(tr("刷新倍率:")); hhh->addWidget(lb);
freshBeiLv = new QComboBox(); freshBeiLv->addItem("20");freshBeiLv->addItem("24");freshBeiLv->addItem("28");freshBeiLv->addItem("32");freshBeiLv->addItem("36");freshBeiLv->addItem("40");freshBeiLv->addItem("44");freshBeiLv->addItem("48");freshBeiLv->addItem("64M"); hhh->addWidget(freshBeiLv);
//1.4.换行时间
hhh = new HBox(vvv);
lb = new QLabel(tr("换行时间(ns):")); hhh->addWidget(lb);
spinLineNs = new QSpinBox; spinLineNs->setRange(2, 9999); hhh->addWidget(spinLineNs);
//1.5.换行位置
hhh = new HBox(vvv);
lb = new QLabel(tr("换行位置(ns):")); hhh->addWidget(lb);
spinLineWz = new QSpinBox; spinLineWz->setRange(2, 9999); hhh->addWidget(spinLineWz);
//1.6.行消隐时间
hhh = new HBox(vvv);
lb = new QLabel(tr("行消隐时间(ns):")); hhh->addWidget(lb);
spinLineXy = new QSpinBox; spinLineWz->setRange(2, 9999); hhh->addWidget(spinLineXy);
//第二列区域
hh->addSpacing(20);
vvv = new VBox(hh);
//2.1.无信号数据
hhh = new HBox(vvv);
lb = new QLabel(tr("无信号数据:")); hhh->addWidget(lb);
cbNoSign = new QComboBox();
cbNoSign->addItem("最后一帧画面");cbNoSign->addItem("黑屏"); hhh->addWidget(cbNoSign);
//2.2.显卡同步
hhh = new HBox(vvv);
lb = new QLabel(tr("显卡同步")); hhh->addWidget(lb);
checkSyncXianKa = new QCheckBox; checkSyncXianKa->setChecked(true); hhh->addWidget(checkSyncXianKa);
//2.3.开屏渐亮
hhh = new HBox(vvv);
lb = new QLabel(tr("双卡备份")); hhh->addWidget(lb);
checkDoubleCopy = new QCheckBox; checkDoubleCopy->setChecked(false); hhh->addWidget(checkDoubleCopy);
//2.4.开屏渐亮
hhh = new HBox(vvv);
lb = new QLabel(tr("开屏渐亮")); hhh->addWidget(lb);
checkJianLiang = new QCheckBox; checkSyncXianKa->setChecked(false); hhh->addWidget(checkJianLiang);
//2.5.D信号为第二组时钟
hhh = new HBox(vvv);
lb = new QLabel(tr("信号为第二组时钟")); hhh->addWidget(lb);
checkDsignalAsCLk = new QCheckBox; checkDsignalAsCLk->setChecked(false); hhh->addWidget(checkDsignalAsCLk);
//更多设置
hh->addStretch();
vvv = new VBox(hh);
vvv->addStretch();
hhh = new HBox(vvv);
auto btn = new QPushButton(tr("更多设置"));
btn->setProperty("ss","blue");
hhh->addWidget(btn);
connect(btn, &QPushButton::clicked, this, [=] {
});
vvv->addStretch();
hh->addStretch();
vvv = new VBox(hh);
//分割线
auto hh3 = new HBox(vvv);
QFrame * line2 = new QFrame();
line2->setFrameShape(QFrame::VLine);
line2->setFrameShadow(QFrame::Sunken);
line2->setStyleSheet("background-color:#222;");
hh3->addWidget(line2);
//第三列区域
vvv = new VBox(hh);
//3.1.DCLK相位
hhh = new HBox(vvv);
lb = new QLabel(tr("DCLK相位:")); hhh->addWidget(lb);
cbDclkXw = new QComboBox(); cbDclkXw->addItem("0度");cbDclkXw->addItem("+90度");cbDclkXw->addItem("-90度"); hhh->addWidget(cbDclkXw);
//3.2.DCLK占空比
hhh = new HBox(vvv);
lb = new QLabel(tr("DCLK占空比:")); hhh->addWidget(lb);
cbDclkZkb = new QComboBox(); cbDclkZkb->addItem("50%");cbDclkZkb->addItem("25%");cbDclkZkb->addItem("75%"); hhh->addWidget(cbDclkZkb);
//3.3.锁存STB相位微调
hhh = new HBox(vvv);
lb = new QLabel(tr("锁存STB相位微调:")); hhh->addWidget(lb);
cbStb = new QComboBox(); cbStb->addItem("不调整");cbStb->addItem("前移1个时钟");cbStb->addItem("前移2个时钟");cbStb->addItem("前移3个时钟");cbStb->addItem("后移1个时钟");cbStb->addItem("后移2个时钟");cbStb->addItem("后移3个时钟"); hhh->addWidget(cbStb);
//3.4.行信号DE相位微调
hhh = new HBox(vvv);
lb = new QLabel(tr("行信号DE相位微调:")); hhh->addWidget(lb);
cbDE = new QComboBox(); cbDE->addItem("不调整");cbDE->addItem("前移1个时钟");cbDE->addItem("前移2个时钟");cbDE->addItem("前移3个时钟");cbDE->addItem("后移1个时钟");cbDE->addItem("后移2个时钟");cbDE->addItem("后移3个时钟"); hhh->addWidget(cbDE);
//3.5.行信号ABC相位微调
hhh = new HBox(vvv);
lb = new QLabel(tr("行信号ABC相位微调:")); hhh->addWidget(lb);
cbABC = new QComboBox(); cbABC->addItem("不调整");cbABC->addItem("前移1个时钟");cbABC->addItem("前移2个时钟");cbABC->addItem("前移3个时钟");cbABC->addItem("后移1个时钟");cbABC->addItem("后移2个时钟");cbABC->addItem("后移3个时钟"); hhh->addWidget(cbABC);
//3.6.单口带载点数
hhh = new HBox(vvv);
lb = new QLabel(tr("单口带载点数:")); hhh->addWidget(lb);
spinPointsOnePort = new QSpinBox; spinPointsOnePort->setRange(1, 999); hhh->addWidget(spinPointsOnePort);
hh->addSpacing(20);
//第四列区域
vvv = new VBox(hh);
//4.1.消隐电平
hhh = new HBox(vvv);
lb = new QLabel(tr("消隐电平:")); hhh->addWidget(lb);
cbXiaoYinDianPing= new QComboBox(); cbXiaoYinDianPing->addItem("高有效");cbXiaoYinDianPing->addItem("低有效"); hhh->addWidget(cbXiaoYinDianPing);
//4.2.锁存信号
hhh = new HBox(vvv);
lb = new QLabel(tr("锁存信号:")); hhh->addWidget(lb);
cbSTB = new QComboBox(); cbSTB->addItem("正向");cbSTB->addItem("反向"); hhh->addWidget(cbSTB);
//4.3.行输出
hhh = new HBox(vvv);
lb = new QLabel(tr("行输出:")); hhh->addWidget(lb);
cbSRowOut = new QComboBox(); cbSRowOut->addItem("低有效");cbSRowOut->addItem("高有效"); hhh->addWidget(cbSRowOut);
//分割线
auto hh1 = new HBox(vBox1);
QFrame * line = new QFrame();
line->setFrameShape(QFrame::HLine);
line->setFrameShadow(QFrame::Sunken);
line->setStyleSheet("background-color:#222;");
hh1->addWidget(line);
auto hh2=new HBox(vBox1);
//计算结果竖直信息区
auto resultInfo = new HBox(hh2);
lb = new QLabel(tr("[双锁存]视觉刷新率:")); resultInfo->addWidget(lb);
float freshLv1=Get_Frefr(7/*小数权值*/ , 12/*灰度位宽*/ , 12500000/*移位时钟频率*/ , 240/*扫描长度*/ , 16/*扫描类型*/ , 4/*倍频*/ ); m_ctrlFreshRate = new QLabel(QString::number(freshLv1)); resultInfo->addWidget(m_ctrlFreshRate);
resultInfo->addStretch();
lb = new QLabel(tr("亮度有效率:")); resultInfo->addWidget(lb);
float BrightYouXiaoLv1=Get_Eff(8,16); m_ctrlBrightEff = new QLabel(QString::number(BrightYouXiaoLv1)); resultInfo->addWidget(m_ctrlBrightEff);
resultInfo->addStretch();
lb = new QLabel(tr("最小OE:")); resultInfo->addWidget(lb);
float minOe=Get_Eff(8,16); m_ctrlMinOE = new QLabel(QString::number(minOe)); resultInfo->addWidget(m_ctrlMinOE);
resultInfo->addStretch();
vBox1->addStretch();
changeValueByEffectControler() ;
}
else if(expertWin->m_iRcvCardType == enum_xixun_sync)
{
}
}
}
void DoubleLatchEffectWin::changeValueByEffectControler() {
//spinbox
if(expertWin->m_iRcvCardType==enum_zrf)
{
QObject::connect(spinLineNs, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), [=](int value){ qDebug() << "换行时间当前值:" << value;
expertWin->zrf_rcv_obj.b193=value; });
QObject::connect(spinLineWz, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), [=](int value){ qDebug() << "行位置当前值:" << value;
expertWin->zrf_rcv_obj.b193=value; });
QObject::connect(spinLineXy, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), [=](int value){ qDebug() << "消隐时间当前值:" << value;
expertWin->zrf_rcv_obj.b2=value; });//
QObject::connect(spinPointsOnePort, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), [=](int value){ qDebug() << "单口带载点数当前值:" << value;
expertWin->zrf_rcv_obj.b193=value; });
//combox
QObject::connect(cbDCLKf, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "DLC频率当前值" << value;
expertWin->zrf_rcv_obj.b18_3_0=value; });//
QObject::connect(cbDclkXw, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "DCLK相位当前值" << value;
expertWin->zrf_rcv_obj.b19_7_4=value; });//
QObject::connect(cbDclkZkb, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "DCLK占空比当前值" << value;
expertWin->zrf_rcv_obj.b19_3_0=value; });//
QObject::connect(freshBeiLv, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "刷新倍率出当前值:" << value;
expertWin->zrf_rcv_obj.b21_7_5=value; });//
QObject::connect(cbGryLevel, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "灰度等级出当前值:" << value;
if(expertWin->zrf_rcv_obj.m_pwmFlag==1){
switch(value){
case 0: expertWin->zrf_rcv_obj.b21_4_0=23; break;//正常4096
case 1: expertWin->zrf_rcv_obj.b21_4_0=26; break;//正常8192
case 2: expertWin->zrf_rcv_obj.b21_4_0=29; break;//正常16384
case 3: expertWin->zrf_rcv_obj.b21_4_0=30; break;//正常32768
case 4: expertWin->zrf_rcv_obj.b21_4_0=31; break;//正常65535
default: expertWin->zrf_rcv_obj.b21_4_0=31; break;//正常65535
}
}
else
expertWin->zrf_rcv_obj.b21_4_0=value; });//
QObject::connect(cbNoSign, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "无信号输出出当前值:" << value;
expertWin->zrf_rcv_obj.b29_1_0=value; });//
QObject::connect(cbStb, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "行信号STB微调出当前值" << value;
expertWin->zrf_rcv_obj.b193=value; });
QObject::connect(cbDE, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "行信号DE微调出当前值" << value;
expertWin->zrf_rcv_obj.b193=value; });
QObject::connect(cbABC, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "行信号ABC微调出当前值" << value;
expertWin->zrf_rcv_obj.b193=value; });
QObject::connect(cbXiaoYinDianPing, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "消隐电平出当前值:" << value;
expertWin->zrf_rcv_obj.b1_5=value; });//
QObject::connect(cbSTB, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "锁存STB电平方向出当前值" << value;
expertWin->zrf_rcv_obj.b0_6=value; });//
QObject::connect(cbSRowOut, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "行输出电平出当前值:" << value;
expertWin->zrf_rcv_obj.b0_4=value; });//
//checkbox
QObject::connect(checkSyncXianKa, static_cast<void (QCheckBox::*)(int)>(&QCheckBox::stateChanged), [=](int value){ qDebug() << "同步显卡出当前值:" << value;
if(value==0) expertWin->zrf_rcv_obj.b26_7=value ;
else expertWin->zrf_rcv_obj.b26_7=0b1; });//
QObject::connect(checkJianLiang, static_cast<void (QCheckBox::*)(int)>(&QCheckBox::stateChanged), [=](int value){ qDebug() << "开屏渐亮出当前值:" << value;
if(value==0) expertWin->zrf_rcv_obj.b1_0=value ;
else expertWin->zrf_rcv_obj.b1_0=0b1; });//
QObject::connect(checkDoubleCopy, static_cast<void (QCheckBox::*)(int)>(&QCheckBox::stateChanged), [=](int value){ qDebug() << "双备份出当前值:" << value;
if(value==0) expertWin->zrf_rcv_obj.b1_4=value ;
else expertWin->zrf_rcv_obj.b1_4=0b1; });//
QObject::connect(checkDsignalAsCLk, static_cast<void (QCheckBox::*)(int)>(&QCheckBox::stateChanged), [=](int value){ qDebug() << "D信号作为第二组CLK出当前值" << value;
if(value==0) expertWin->zrf_rcv_obj.b1_1=value ;
else expertWin->zrf_rcv_obj.b1_1=0b1; });//
}
}
void DoubleLatchEffectWin::SetEffectControlerValueByClass()
{
if(expertWin->m_iRcvCardType == enum_zrf) {
//spinbox
spinLineNs->setValue(expertWin->zrf_rcv_obj.b193); qDebug() << "换行时间当前值:" << spinLineNs->value();
spinLineWz->setValue(expertWin->zrf_rcv_obj.b193); qDebug() << "行位置当前值:" << spinLineWz->value();
spinLineXy->setValue(expertWin->zrf_rcv_obj.b2); qDebug() << "消隐时间当前值:" << spinLineXy->value();//
spinPointsOnePort->setValue(expertWin->zrf_rcv_obj.b193); qDebug() << "单口带载点数当前值:" << spinPointsOnePort->value();
//combox
cbDCLKf->setCurrentIndex(expertWin->zrf_rcv_obj.b18_3_0); qDebug() << "DLC频率当前值" << cbDCLKf->currentIndex();
cbDclkXw->setCurrentIndex(expertWin->zrf_rcv_obj.b19_7_4); qDebug() << "DCLK相位当前值" << cbDclkXw->currentIndex();
cbDclkZkb->setCurrentIndex(expertWin->zrf_rcv_obj.b19_3_0); qDebug() << "DCLK占空比当前值" << cbDclkZkb->currentIndex();
freshBeiLv->setCurrentIndex(expertWin->zrf_rcv_obj.b21_7_5); qDebug() << "刷新倍率出当前值:" << freshBeiLv->currentIndex();
int index=31;
if(expertWin->zrf_rcv_obj.m_pwmFlag==1)
switch(expertWin->zrf_rcv_obj.b21_4_0){
case 23: index=0; break;//正常4096
case 26: index=1; break;//正常8192
case 29: index=2; break;//正常16384
case 30: index=3; break;//正常32768
case 31: index=4; break;//正常65535
default: index=4; break;//正常65535
}
else
index=expertWin->zrf_rcv_obj.b21_4_0;
cbGryLevel->setCurrentIndex(index); qDebug() << "灰度等级出当前值:" << cbGryLevel->currentIndex();
cbNoSign->setCurrentIndex(expertWin->zrf_rcv_obj.b29_1_0); qDebug() << "无信号输出出当前值:" << cbNoSign->currentIndex();
cbStb->setCurrentIndex(expertWin->zrf_rcv_obj.b193); qDebug() << "行信号STB微调出当前值" << cbStb->currentIndex();
cbDE->setCurrentIndex(expertWin->zrf_rcv_obj.b193); qDebug() << "行信号DE微调出当前值" << cbDE->currentIndex();
cbABC->setCurrentIndex(expertWin->zrf_rcv_obj.b193); qDebug() << "行信号ABC微调出当前值" << cbABC->currentIndex();
cbXiaoYinDianPing->setCurrentIndex(expertWin->zrf_rcv_obj.b1_5); qDebug() << "消隐电平出当前值:" << cbXiaoYinDianPing->currentIndex();
cbSTB->setCurrentIndex(expertWin->zrf_rcv_obj.b0_6); qDebug() << "锁存STB电平方向出当前值" << cbSTB->currentIndex();
cbSRowOut->setCurrentIndex(expertWin->zrf_rcv_obj.b0_4); qDebug() << "行输出电平出当前值:" << cbSRowOut->currentIndex();
//checkbox
checkSyncXianKa->setChecked(expertWin->zrf_rcv_obj.b26_7); qDebug() << "同步显卡出当前值:" << checkSyncXianKa->isChecked();
checkJianLiang->setChecked(expertWin->zrf_rcv_obj.b1_0); qDebug() << "开屏渐亮出当前值:" << checkJianLiang->isChecked();
checkDoubleCopy->setChecked(expertWin->zrf_rcv_obj.b1_4); qDebug() << "双备份出当前值:" << checkDoubleCopy->isChecked();
checkDsignalAsCLk->setChecked(expertWin->zrf_rcv_obj.b1_1); qDebug() << "D信号作为第二组CLK出当前值" << checkDsignalAsCLk->isChecked();
expertWin->SendBaseParam_zrf();
}
}
void DoubleLatchEffectWin::reSetcontrolerByIcType(QString strIcName)
{
if(strIcName == "ICN2053")
{
cbDCLKf->clear();
cbDCLKf->addItem("31.2M");cbDCLKf->addItem("25M");cbDCLKf->addItem("20.83M");cbDCLKf->addItem("17.86M");cbDCLKf->addItem("15.63M");cbDCLKf->addItem("12.5M");cbDCLKf->addItem("10.42M");cbDCLKf->addItem("8.9M");
cbDCLKf->addItem("7.8M");cbDCLKf->addItem("6.25M");;cbDCLKf->addItem("5.2M");;cbDCLKf->addItem("4.5M");;cbDCLKf->addItem("3.9M");;cbDCLKf->addItem("3.125M"); ;cbDCLKf->addItem("1.9M"); ;cbDCLKf->addItem("1M");
cbGryLevel->clear();
cbGryLevel->addItem("正常16384");
freshBeiLv->clear();
freshBeiLv->addItem("8");
}
}

View File

@ -0,0 +1,25 @@
#ifndef DOUBLELATCHEFFECTWIN_H
#define DOUBLELATCHEFFECTWIN_H
#include <QObject>
#include <QWidget>
#include "expertwin.h"
#include <QLabel>
#include <QSpinBox>
#include <QComboBox>
#include <QCheckBox>
#include <QRadioButton>
class DoubleLatchEffectWin: public QWidget
{
public:
DoubleLatchEffectWin(ExpertWin *parent = nullptr);
ExpertWin *expertWin;
QSpinBox *spinLineNs,*spinLineWz,*spinLineXy,*spinPointsOnePort;
QComboBox *cbDCLKf,*cbDclkXw, *cbDclkZkb,*freshBeiLv,*cbGryLevel,*cbNoSign,*cbStb,*cbDE,*cbABC,*cbXiaoYinDianPing,*cbSTB,*cbSRowOut;
QLabel * m_ctrlFreshRate,*m_ctrlBrightEff,*m_ctrlMinOE;
QCheckBox * checkSyncXianKa,*checkJianLiang,*checkDoubleCopy,*checkDsignalAsCLk;
void changeValueByEffectControler();
void SetEffectControlerValueByClass();
void reSetcontrolerByIcType(QString strIcName);
};
#endif // DOUBLELATCHEFFECTWIN_H

584
ledset/ic_ui/icn2053.cpp Normal file
View File

@ -0,0 +1,584 @@
#include "icn2053.h"
#include <QPushButton>
#include <QSplitter>
#include "gutil/qgui.h"
#include <QTabWidget>
#include <QLineEdit>
#include <QPushButton>
#include <QGroupBox>
#include <QStackedWidget>
#include <QRadioButton>
#include <QCheckBox>
#include <QApplication>
#include <QFile>
#include <QJsonDocument>
icn_2053::icn_2053(ExpertWin *expertWin) : BaseWin{expertWin}, expertWin(expertWin)
{
setWindowModality(Qt::WindowModal);
setAttribute(Qt::WA_DeleteOnClose);
setWindowTitle(tr("电流增益调节设置"));
resize(480, 200);
auto vBox = new QVBoxLayout(center);
vBox->setContentsMargins(0,0,0,0);
vBox->setSpacing(3);
vBox->addLayout(addBtns(new QHBoxLayout()));
auto tab = new QTabWidget;
tab->setStyleSheet(R"rrr(
QTabWidget::pane {border: 1px solid #888; margin-top:-1px;}
QTabBar::tab {margin-top: 4px; padding: 6px 20px; border: 1px solid #888; border-radius: 0 0 3px 3px;}
QTabBar::tab:selected {margin-top: 0; border-bottom: none; color: #acf; background-color: #666;}
)rrr");
vBox->addWidget(tab);
auto dianliu = new QWidget;
tab->addTab(dianliu, "电流增益调节");
{
int iMax=200;
int iMin=10;
int iInitValue=100;
auto vBox = new VBox(dianliu);
vBox->addStretch();
auto hBox = new HBox(vBox);
auto lb = new QLabel(tr("红灯")+":");
lb->setMinimumWidth(70);
lb->setAlignment(Qt::AlignRight);
hBox->addWidget(lb);
fdBright_r = new QSpinBox();
fdBright_r->setRange(iMin,iMax);
fdBright_r->setValue(iInitValue);
hBox->addWidget(fdBright_r);
hBox->addSpacing(10);
sliBright_r = new QSlider(Qt::Horizontal);
sliBright_r->setRange(iMin,iMax);
sliBright_r->setValue(iInitValue);
hBox->addWidget(sliBright_r);
connect(fdBright_r, (void(QSpinBox::*)(int))&QSpinBox::valueChanged, this, [=](int value){
sliBright_r->setValue(value);
if(m_chk->isChecked()){
sliBright_g->setValue(value);
sliBright_b->setValue(value);
}
});
connect(sliBright_r, &QSlider::valueChanged, this, [=](int value){
fdBright_r->setValue(value);
if(m_chk->isChecked()){
fdBright_b->setValue(value);
fdBright_g->setValue(value);
}
});
hBox = new HBox(vBox);
lb = new QLabel(tr("绿灯")+":");
lb->setMinimumWidth(70);
lb->setAlignment(Qt::AlignRight);
hBox->addWidget(lb);
fdBright_g = new QSpinBox();
fdBright_g->setRange(iMin,iMax);
fdBright_g->setValue(iInitValue);
hBox->addWidget(fdBright_g);
hBox->addSpacing(10);
sliBright_g = new QSlider(Qt::Horizontal);
sliBright_g->setRange(iMin,iMax);
sliBright_g->setValue(iInitValue);
hBox->addWidget(sliBright_g);
connect(fdBright_g, (void(QSpinBox::*)(int))&QSpinBox::valueChanged, this, [=](int value){
sliBright_g->setValue(value);
if(m_chk->isChecked()){
sliBright_r->setValue(value);
sliBright_b->setValue(value);
}
});
connect(sliBright_g, &QSlider::valueChanged, this, [=](int value){
fdBright_g->setValue(value);
if(m_chk->isChecked()){
fdBright_r->setValue(value);
fdBright_b->setValue(value);
}
});
hBox = new HBox(vBox);
lb = new QLabel(tr("蓝灯")+":");
lb->setMinimumWidth(70);
lb->setAlignment(Qt::AlignRight);
hBox->addWidget(lb);
fdBright_b = new QSpinBox();
fdBright_b->setRange(iMin,iMax);
fdBright_b->setValue(iInitValue);
hBox->addWidget(fdBright_b);
hBox->addSpacing(10);
sliBright_b = new QSlider(Qt::Horizontal);
sliBright_b->setRange(iMin,iMax);
sliBright_b->setValue(iInitValue);
hBox->addWidget(sliBright_b);
connect(fdBright_b, (void(QSpinBox::*)(int))&QSpinBox::valueChanged, this, [=](int value){
sliBright_b->setValue(value);
if(m_chk->isChecked()){
sliBright_g->setValue(value);
sliBright_r->setValue(value);
}
});
connect(sliBright_b, &QSlider::valueChanged, this, [=](int value){
fdBright_b->setValue(value);
if(m_chk->isChecked()){
fdBright_r->setValue(value);
fdBright_g->setValue(value);
}
});
hBox = new HBox(vBox);
m_chk = new QCheckBox(tr("同步"));
connect(m_chk, &QCheckBox::stateChanged, this, [=](int value) {
if(value==0)
{
}
else{
fdBright_g->setValue(fdBright_r->value());
fdBright_b->setValue(fdBright_r->value());
}
});
hBox->addWidget(m_chk);
vBox->addStretch();
//应用按钮
hBox = new HBox(vBox);
auto btn = new QPushButton(tr("应用"));
btn->setProperty("ss","blue");
hBox->addStretch();
hBox->addWidget(btn);
hBox->addStretch();
connect(btn, &QPushButton::clicked, this, [this] {
});
}
auto kuoZhan = new QWidget;
tab->addTab(kuoZhan, "扩展属性");
{
auto vBox = new VBox(kuoZhan);
auto gBox = new QGroupBox("");
vBox->addWidget(gBox);
{
auto hh = new HBox(gBox);
hh->addSpacing(20);
auto vvv = new VBox(hh);
vvv->addStretch();
auto lb = new QLabel(" ");
vvv->addWidget(lb);
lb = new QLabel("低灰麻点优化: ");
vvv->addWidget(lb);
lb = new QLabel("消隐等级: ");
vvv->addWidget(lb);
lb = new QLabel("低灰白平衡调节: ");
vvv->addWidget(lb);
vvv->addStretch();
vvv = new VBox(hh);
vvv->addStretch();
lb = new QLabel("红芯片 ");
vvv->addWidget(lb);
auto r_madianyouhua = new QSpinBox();
r_madianyouhua->setRange(0,3);
r_madianyouhua->setValue(1);
vvv->addWidget(r_madianyouhua);
auto r_xiaoyinlevel = new QSpinBox();
r_xiaoyinlevel->setRange(0,31);
r_xiaoyinlevel->setValue(31);
vvv->addWidget(r_xiaoyinlevel);
auto r_dibaipingheng = new QSpinBox();
r_madianyouhua->setRange(0,15);
r_madianyouhua->setValue(15);
vvv->addWidget(r_dibaipingheng);
vvv->addStretch();
vvv = new VBox(hh);
vvv->addStretch();
lb = new QLabel("绿芯片 ");
vvv->addWidget(lb);
auto g_madianyouhua = new QSpinBox();
g_madianyouhua->setRange(0,3);
g_madianyouhua->setValue(1);
vvv->addWidget(g_madianyouhua);
auto g_xiaoyinlevel = new QSpinBox();
g_xiaoyinlevel->setRange(0,31);
g_xiaoyinlevel->setValue(31);
vvv->addWidget(g_xiaoyinlevel);
auto g_dibaipingheng = new QSpinBox();
g_madianyouhua->setRange(0,15);
g_madianyouhua->setValue(15);
vvv->addWidget(g_dibaipingheng);
vvv->addStretch();
vvv = new VBox(hh);
vvv->addStretch();
lb = new QLabel("蓝芯片 ");
vvv->addWidget(lb);
auto b_madianyouhua = new QSpinBox();
b_madianyouhua->setRange(0,3);
b_madianyouhua->setValue(1);
vvv->addWidget(b_madianyouhua);
auto b_xiaoyinlevel = new QSpinBox();
b_xiaoyinlevel->setRange(0,31);
b_xiaoyinlevel->setValue(31);
vvv->addWidget(b_xiaoyinlevel);
auto b_dibaipingheng = new QSpinBox();
b_madianyouhua->setRange(0,15);
b_madianyouhua->setValue(15);
vvv->addWidget(b_dibaipingheng);
vvv->addStretch();
hh = new HBox(vBox);
//亮度调节
lb = new QLabel(tr("亮度调节(10~100):")); hh->addWidget(lb);
auto spinbright = new QSpinBox; spinbright->setRange(10, 100); spinbright->setValue(100); hh->addWidget(spinbright); hh->addStretch();
vBox->addStretch();
}
//应用按钮
auto hBox = new HBox(vBox);
auto btn = new QPushButton(tr("应用"));
btn->setProperty("ss","blue");
hBox->addStretch();
hBox->addWidget(btn);
hBox->addStretch();
connect(btn, &QPushButton::clicked, this, [this] {
});
}
auto AdvanceAdjust = new QWidget;
tab->addTab(AdvanceAdjust, "高级调节");
{
auto vBox = new VBox(AdvanceAdjust);
auto hBox = new HBox(vBox);
auto gBox = new QGroupBox("第一组寄存器");
hBox->addWidget(gBox);
{
auto hh = new HBox(gBox);
hh->addSpacing(20);
auto vvv = new VBox(hh);
auto lb = new QLabel(" ");
vvv->addWidget(lb);
vvv->addSpacing(5);
lb = new QLabel("红芯片: ");
vvv->addWidget(lb);
vvv->addSpacing(6);
lb = new QLabel("绿芯片: ");
vvv->addWidget(lb);
vvv->addSpacing(7);
lb = new QLabel("蓝芯片: ");
vvv->addWidget(lb);
vvv->addStretch();
vvv = new VBox(hh);
lb = new QLabel("高字节(hex) ");
vvv->addWidget(lb);
QRegExp regx("[A-Fa-f0-9]{2}");
m_r_AddrH1= new QLineEdit("1F");
QValidator *validator = new QRegExpValidator(regx);
m_r_AddrH1->setValidator(validator);
vvv->addWidget(m_r_AddrH1);
m_g_AddrH1 = new QLineEdit("1F") ;
m_g_AddrH1->setValidator(validator);
vvv->addWidget(m_g_AddrH1);
m_b_AddrH1 = new QLineEdit("1F") ;
m_b_AddrH1->setValidator(validator);
vvv->addWidget(m_b_AddrH1);
vvv->addStretch();
vvv = new VBox(hh);
lb = new QLabel("低字节(hex) ");
vvv->addWidget(lb);
m_r_AddrL1= new QLineEdit("70");
m_r_AddrL1->setValidator(validator);
vvv->addWidget(m_r_AddrL1);
m_g_AddrL1 = new QLineEdit("70") ;
m_g_AddrL1->setValidator(validator);
vvv->addWidget(m_g_AddrL1);
m_b_AddrL1 = new QLineEdit("70") ;
m_b_AddrL1->setValidator(validator);
vvv->addWidget(m_b_AddrL1);
vvv->addStretch();
}
gBox = new QGroupBox("第二组寄存器");
hBox->addWidget(gBox);
{
auto hh = new HBox(gBox);
hh->addSpacing(20);
auto vvv = new VBox(hh);
auto lb = new QLabel(" ");
vvv->addWidget(lb);
vvv->addSpacing(6);
lb = new QLabel("红芯片: ");
vvv->addWidget(lb);
vvv->addSpacing(5);
lb = new QLabel("绿芯片: ");
vvv->addWidget(lb);
vvv->addSpacing(7);
lb = new QLabel("蓝芯片: ");
vvv->addWidget(lb);
vvv->addStretch();
vvv = new VBox(hh);
lb = new QLabel("高字节(hex) ");
vvv->addWidget(lb);
QRegExp regx("[A-Fa-f0-9]{2}");
m_r_AddrH2= new QLineEdit("7F");
QValidator *validator = new QRegExpValidator(regx);
m_r_AddrH2->setValidator(validator);
vvv->addWidget(m_r_AddrH2);
m_g_AddrH2 = new QLineEdit("7F") ;
m_g_AddrH2->setValidator(validator);
vvv->addWidget(m_g_AddrH2);
m_b_AddrH2 = new QLineEdit("7F") ;
m_b_AddrH2->setValidator(validator);
vvv->addWidget(m_b_AddrH2);
vvv->addStretch();
vvv = new VBox(hh);
lb = new QLabel("低字节(hex) ");
vvv->addWidget(lb);
m_r_AddrL2= new QLineEdit("FF");
m_r_AddrL2->setValidator(validator);
vvv->addWidget(m_r_AddrL2);
m_g_AddrL2 = new QLineEdit("FF") ;
m_g_AddrL2->setValidator(validator);
vvv->addWidget(m_g_AddrL2);
m_b_AddrL2 = new QLineEdit("FF") ;
m_b_AddrL2->setValidator(validator);
vvv->addWidget(m_b_AddrL2);
vvv->addStretch();
}
hBox = new HBox(vBox);
gBox = new QGroupBox("第三组寄存器");
hBox->addWidget(gBox);
{
auto hh = new HBox(gBox);
hh->addSpacing(20);
auto vvv = new VBox(hh);
auto lb = new QLabel(" ");
vvv->addWidget(lb);
vvv->addSpacing(5);
lb = new QLabel("红芯片: ");
vvv->addWidget(lb);
vvv->addSpacing(6);
lb = new QLabel("绿芯片: ");
vvv->addWidget(lb);
vvv->addSpacing(7);
lb = new QLabel("蓝芯片: ");
vvv->addWidget(lb);
vvv->addStretch();
vvv = new VBox(hh);
lb = new QLabel("高字节(hex) ");
vvv->addWidget(lb);
QRegExp regx("[A-Fa-f0-9]{2}");
m_r_AddrH3= new QLineEdit("40");
QValidator *validator = new QRegExpValidator(regx);
m_r_AddrH3->setValidator(validator);
vvv->addWidget(m_r_AddrH3);
m_g_AddrH3 = new QLineEdit("40") ;
m_g_AddrH3->setValidator(validator);
vvv->addWidget(m_g_AddrH3);
m_b_AddrH3 = new QLineEdit("40") ;
m_b_AddrH3->setValidator(validator);
vvv->addWidget(m_b_AddrH3);
vvv->addStretch();
vvv = new VBox(hh);
lb = new QLabel("低字节(hex) ");
vvv->addWidget(lb);
m_r_AddrL3= new QLineEdit("07");
m_r_AddrL3->setValidator(validator);
vvv->addWidget(m_r_AddrL3);
m_g_AddrL3= new QLineEdit("07") ;
m_g_AddrL3->setValidator(validator);
vvv->addWidget(m_g_AddrL3);
m_b_AddrL3 = new QLineEdit("07") ;
m_b_AddrL3->setValidator(validator);
vvv->addWidget(m_b_AddrL3);
vvv->addStretch();
}
gBox = new QGroupBox("第四组寄存器");
hBox->addWidget(gBox);
{
auto hh = new HBox(gBox);
hh->addSpacing(20);
auto vvv = new VBox(hh);
auto lb = new QLabel(" ");
vvv->addWidget(lb);
vvv->addSpacing(5);
lb = new QLabel("红芯片: ");
vvv->addWidget(lb);
vvv->addSpacing(6);
lb = new QLabel("绿芯片: ");
vvv->addWidget(lb);
vvv->addSpacing(7);
lb = new QLabel("蓝芯片: ");
vvv->addWidget(lb);
vvv->addStretch();
vvv = new VBox(hh);
lb = new QLabel("高字节(hex) ");
vvv->addWidget(lb);
QRegExp regx("[A-Fa-f0-9]{2}");
m_r_AddrH4= new QLineEdit("00");
QValidator *validator = new QRegExpValidator(regx);
m_r_AddrH4->setValidator(validator);
vvv->addWidget(m_r_AddrH4);
m_g_AddrH4 = new QLineEdit("00") ;
m_g_AddrH4->setValidator(validator);
vvv->addWidget(m_g_AddrH4);
m_b_AddrH4 = new QLineEdit("00") ;
m_b_AddrH4->setValidator(validator);
vvv->addWidget(m_b_AddrH4);
vvv->addStretch();
vvv = new VBox(hh);
lb = new QLabel("低字节(hex) ");
vvv->addWidget(lb);
m_r_AddrL4= new QLineEdit("40");
m_r_AddrL4->setValidator(validator);
vvv->addWidget(m_r_AddrL4);
m_g_AddrL4 = new QLineEdit("40") ;
m_g_AddrL4->setValidator(validator);
vvv->addWidget(m_g_AddrL4);
m_b_AddrL4 = new QLineEdit("40") ;
m_b_AddrL4->setValidator(validator);
vvv->addWidget(m_b_AddrL4);
vvv->addStretch();
}
//应用按钮
hBox = new HBox(vBox);
auto btn = new QPushButton(tr("应用"));
btn->setProperty("ss","blue");
hBox->addStretch();
hBox->addWidget(btn);
hBox->addStretch();
connect(btn, &QPushButton::clicked, this, [=] {
expertWin->zrf_rcv_obj.b169_192[0]=m_r_AddrH1->text().toInt(NULL, 16);
expertWin->zrf_rcv_obj.b169_192[1]=m_r_AddrL1->text().toInt(NULL, 16);
expertWin->zrf_rcv_obj.b169_192[2]=m_r_AddrH2->text().toInt(NULL, 16);
expertWin->zrf_rcv_obj.b169_192[3]=m_r_AddrL2->text().toInt(NULL, 16);
expertWin->zrf_rcv_obj.b169_192[4]=m_r_AddrH3->text().toInt(NULL, 16);
expertWin->zrf_rcv_obj.b169_192[5]=m_r_AddrL3->text().toInt(NULL, 16);
expertWin->zrf_rcv_obj.b169_192[6]=m_g_AddrH1->text().toInt(NULL, 16);
expertWin->zrf_rcv_obj.b169_192[7]=m_g_AddrL1->text().toInt(NULL, 16);
expertWin->zrf_rcv_obj.b169_192[8]=m_g_AddrH2->text().toInt(NULL, 16);
expertWin->zrf_rcv_obj.b169_192[9]=m_g_AddrL2->text().toInt(NULL, 16);
expertWin->zrf_rcv_obj.b169_192[10]=m_g_AddrH3->text().toInt(NULL, 16);
expertWin->zrf_rcv_obj.b169_192[11]=m_g_AddrL3->text().toInt(NULL, 16);
expertWin->zrf_rcv_obj.b169_192[12]=m_b_AddrH1->text().toInt(NULL, 16);
expertWin->zrf_rcv_obj.b169_192[13]=m_b_AddrL1->text().toInt(NULL, 16);
expertWin->zrf_rcv_obj.b169_192[14]=m_b_AddrH2->text().toInt(NULL, 16);
expertWin->zrf_rcv_obj.b169_192[15]=m_b_AddrL2->text().toInt(NULL, 16);
expertWin->zrf_rcv_obj.b169_192[16]=m_b_AddrH3->text().toInt(NULL, 16);
expertWin->zrf_rcv_obj.b169_192[17]=m_b_AddrL3->text().toInt(NULL, 16);
expertWin->zrf_rcv_obj.b169_192[18]=m_r_AddrH4->text().toInt(NULL, 16);
expertWin->zrf_rcv_obj.b169_192[19]=m_r_AddrL4->text().toInt(NULL, 16);
expertWin->zrf_rcv_obj.b169_192[20]=m_g_AddrH4->text().toInt(NULL, 16);
expertWin->zrf_rcv_obj.b169_192[21]=m_g_AddrL4->text().toInt(NULL, 16);
expertWin->zrf_rcv_obj.b169_192[22]=m_b_AddrH4->text().toInt(NULL, 16);
expertWin->zrf_rcv_obj.b169_192[23]=m_b_AddrL4->text().toInt(NULL, 16);
expertWin->classToBaseMsg();
expertWin->SendBaseParam_zrf();
});
btn = new QPushButton(tr("恢复默认值"));
btn->setProperty("ss","blue");
hBox->addWidget(btn);
connect(btn, &QPushButton::clicked, this, [=] {
m_r_AddrH1->setText("1F");
m_r_AddrL1->setText("70");
m_g_AddrH1->setText("1F");
m_g_AddrL1->setText("70");
m_b_AddrH1->setText("1F");
m_b_AddrL1->setText("70");
m_r_AddrH2->setText("7F");
m_r_AddrL2->setText("FF");
m_g_AddrH2->setText("7F");
m_g_AddrL2->setText("FF");
m_b_AddrH2->setText("7F");
m_b_AddrL2->setText("FF");
m_r_AddrH3->setText("40");
m_r_AddrL3->setText("07");
m_g_AddrH3->setText("40");
m_g_AddrL3->setText("07");
m_b_AddrH3->setText("40");
m_b_AddrL3->setText("07");
m_r_AddrH4->setText("00");
m_r_AddrL4->setText("40");
m_g_AddrH4->setText("00");
m_g_AddrL4->setText("40");
m_b_AddrH4->setText("00");
m_b_AddrL4->setText("40");
});
}
init();
}
void icn_2053::init()
{
m_r_AddrH1->setText(QString("%1").arg(expertWin->zrf_rcv_obj.b169_192[0],2,16,QLatin1Char('0')).toUpper());
m_r_AddrL1->setText(QString("%1").arg(expertWin->zrf_rcv_obj.b169_192[1],2,16,QLatin1Char('0')).toUpper());
m_r_AddrH2->setText(QString("%1").arg(expertWin->zrf_rcv_obj.b169_192[2],2,16,QLatin1Char('0')).toUpper());
m_r_AddrL2->setText(QString("%1").arg(expertWin->zrf_rcv_obj.b169_192[3],2,16,QLatin1Char('0')).toUpper());
m_r_AddrH3->setText(QString("%1").arg(expertWin->zrf_rcv_obj.b169_192[4],2,16,QLatin1Char('0')).toUpper());
m_r_AddrL3->setText(QString("%1").arg(expertWin->zrf_rcv_obj.b169_192[5],2,16,QLatin1Char('0')).toUpper());
m_g_AddrH1->setText(QString("%1").arg(expertWin->zrf_rcv_obj.b169_192[6],2,16,QLatin1Char('0')).toUpper());
m_g_AddrL1->setText(QString("%1").arg(expertWin->zrf_rcv_obj.b169_192[7],2,16,QLatin1Char('0')).toUpper());
m_g_AddrH2->setText(QString("%1").arg(expertWin->zrf_rcv_obj.b169_192[8],2,16,QLatin1Char('0')).toUpper());
m_g_AddrL2->setText(QString("%1").arg(expertWin->zrf_rcv_obj.b169_192[9],2,16,QLatin1Char('0')).toUpper());
m_g_AddrH3->setText(QString("%1").arg(expertWin->zrf_rcv_obj.b169_192[10],2,16,QLatin1Char('0')).toUpper());
m_g_AddrL3->setText(QString("%1").arg(expertWin->zrf_rcv_obj.b169_192[11],2,16,QLatin1Char('0')).toUpper());
m_b_AddrH1->setText(QString("%1").arg(expertWin->zrf_rcv_obj.b169_192[12],2,16,QLatin1Char('0')).toUpper());
m_b_AddrL1->setText(QString("%1").arg(expertWin->zrf_rcv_obj.b169_192[13],2,16,QLatin1Char('0')).toUpper());
m_b_AddrH2->setText(QString("%1").arg(expertWin->zrf_rcv_obj.b169_192[14],2,16,QLatin1Char('0')).toUpper());
m_b_AddrL2->setText(QString("%1").arg(expertWin->zrf_rcv_obj.b169_192[15],2,16,QLatin1Char('0')).toUpper());
m_b_AddrH3->setText(QString("%1").arg(expertWin->zrf_rcv_obj.b169_192[16],2,16,QLatin1Char('0')).toUpper());
m_b_AddrL3->setText(QString("%1").arg(expertWin->zrf_rcv_obj.b169_192[17],2,16,QLatin1Char('0')).toUpper());
m_r_AddrH4->setText(QString("%1").arg(expertWin->zrf_rcv_obj.b169_192[18],2,16,QLatin1Char('0')).toUpper());
m_r_AddrL4->setText(QString("%1").arg(expertWin->zrf_rcv_obj.b169_192[19],2,16,QLatin1Char('0')).toUpper());
m_g_AddrH4->setText(QString("%1").arg(expertWin->zrf_rcv_obj.b169_192[20],2,16,QLatin1Char('0')).toUpper());
m_g_AddrL4->setText(QString("%1").arg(expertWin->zrf_rcv_obj.b169_192[21],2,16,QLatin1Char('0')).toUpper());
m_b_AddrH4->setText(QString("%1").arg(expertWin->zrf_rcv_obj.b169_192[22],2,16,QLatin1Char('0')).toUpper());
m_b_AddrL4->setText(QString("%1").arg(expertWin->zrf_rcv_obj.b169_192[23],2,16,QLatin1Char('0')).toUpper());
}

24
ledset/ic_ui/icn2053.h Normal file
View File

@ -0,0 +1,24 @@
#ifndef ICN2053_H
#define ICN2053_H
#include <QObject>
#include <QWidget>
#include "expertwin.h"
#include <QLineEdit >
class icn_2053: public BaseWin {
Q_OBJECT
public:
explicit icn_2053(ExpertWin *parent = nullptr);
ExpertWin *expertWin;
QLineEdit *m_r_AddrH1,*m_g_AddrH1,*m_b_AddrH1,*m_r_AddrL1,*m_g_AddrL1,*m_b_AddrL1;
QLineEdit *m_r_AddrH2,*m_g_AddrH2,*m_b_AddrH2,*m_r_AddrL2,*m_g_AddrL2,*m_b_AddrL2;
QLineEdit *m_r_AddrH3,*m_g_AddrH3,*m_b_AddrH3,*m_r_AddrL3,*m_g_AddrL3,*m_b_AddrL3;
QLineEdit *m_r_AddrH4,*m_g_AddrH4,*m_b_AddrH4,*m_r_AddrL4,*m_g_AddrL4,*m_b_AddrL4;
QSpinBox *fdBright_r ,*fdBright_g,*fdBright_b;
QSlider * sliBright_r , *sliBright_g, *sliBright_b ;
QCheckBox *m_chk ;
void init();
};
#endif // ICN2053_H

View File

@ -0,0 +1,293 @@
#include "normaleffectwin.h"
#include "globalfunc.h"
#include "gutil/qgui.h"
#include <QPushButton>
#include <QStackedWidget>
#include <QCheckBox>
#include "efffrefr.h"
NormalEffectWin::NormalEffectWin(ExpertWin *parent)
{
expertWin=parent;
resize(880, 220);
{
if(expertWin->m_iRcvCardType == enum_zrf)
{
auto vBox1=new VBox(this);
auto hh = new HBox(vBox1);
hh->addSpacing(20);
//第一列区域
auto vvv = new VBox(hh);
//1.1.移位时钟频率
auto hhh = new HBox(vvv);
auto lb = new QLabel(tr("DCLK频率:"));
hhh->addWidget(lb);
cbDCLKf = new QComboBox(); cbDCLKf->addItem("31.2M");cbDCLKf->addItem("25M");cbDCLKf->addItem("20.83M");cbDCLKf->addItem("17.86M");cbDCLKf->addItem("15.63M");cbDCLKf->addItem("12.5M");cbDCLKf->addItem("10.42M");cbDCLKf->addItem("8.9M");
cbDCLKf->addItem("7.8M");cbDCLKf->addItem("6.25M");;cbDCLKf->addItem("5.2M");;cbDCLKf->addItem("4.5M");;cbDCLKf->addItem("3.9M");;cbDCLKf->addItem("3.125M"); ;cbDCLKf->addItem("1.9M"); ;cbDCLKf->addItem("1M"); hhh->addWidget(cbDCLKf);
//1.2.灰度级别
hhh = new HBox(vvv);
lb = new QLabel(tr("灰度级数:")); hhh->addWidget(lb);
cbGryLevel = new QComboBox(); cbGryLevel->addItem("无灰度"); cbGryLevel->addItem("无OE8级");cbGryLevel->addItem("无OE16级");cbGryLevel->addItem("无OE32级");cbGryLevel->addItem("无OE64级");cbGryLevel->addItem("正常16级"); cbGryLevel->addItem("高亮16级");cbGryLevel->addItem("正常32级");
cbGryLevel->addItem("高亮32级");cbGryLevel->addItem("正常64级");cbGryLevel->addItem("高亮64级");cbGryLevel->addItem("正常128级");cbGryLevel->addItem("高亮128级");cbGryLevel->addItem("正常256级");cbGryLevel->addItem("高亮256级");cbGryLevel->addItem("正常512级");
cbGryLevel->addItem("高亮512级");cbGryLevel->addItem("正常1024级");cbGryLevel->addItem("高亮1024级");cbGryLevel->addItem("低亮2048级");cbGryLevel->addItem("正常2048级");cbGryLevel->addItem("高亮2048级");cbGryLevel->addItem("低亮4096级");cbGryLevel->addItem("正常4096级");
cbGryLevel->addItem("高亮4096级");cbGryLevel->addItem("低亮8192级");cbGryLevel->addItem("正常8192级");cbGryLevel->addItem("高亮8192级");cbGryLevel->addItem("低亮16384级");cbGryLevel->addItem("正常16384");cbGryLevel->addItem("正常32768级");cbGryLevel->addItem("正常65535级"); hhh->addWidget(cbGryLevel);
//1.3.刷新倍率
hhh = new HBox(vvv);
lb = new QLabel(tr("刷新倍率:")); hhh->addWidget(lb);
freshBeiLv = new QComboBox(); freshBeiLv->addItem("1");freshBeiLv->addItem("2");freshBeiLv->addItem("3");freshBeiLv->addItem("4");freshBeiLv->addItem("5");freshBeiLv->addItem("6");freshBeiLv->addItem("7");freshBeiLv->addItem("8"); hhh->addWidget(freshBeiLv);
//1.4.换行时间
hhh = new HBox(vvv);
lb = new QLabel(tr("换行时间(ns):")); hhh->addWidget(lb);
spinLineNs = new QSpinBox; spinLineNs->setRange(2, 9999); hhh->addWidget(spinLineNs);
//1.5.换行位置
hhh = new HBox(vvv);
lb = new QLabel(tr("换行位置(ns):")); hhh->addWidget(lb);
spinLineWz = new QSpinBox; spinLineWz->setRange(2, 9999); hhh->addWidget(spinLineWz);
//1.6.行消隐时间
hhh = new HBox(vvv);
lb = new QLabel(tr("行消隐时间(ns):")); hhh->addWidget(lb);
spinLineXy = new QSpinBox; spinLineWz->setRange(2, 9999); hhh->addWidget(spinLineXy);
//第二列区域
hh->addSpacing(20);
vvv = new VBox(hh);
//2.1.无信号数据
hhh = new HBox(vvv);
lb = new QLabel(tr("无信号数据:")); hhh->addWidget(lb);
cbNoSign = new QComboBox();
cbNoSign->addItem("最后一帧画面");cbNoSign->addItem("黑屏"); hhh->addWidget(cbNoSign);
//2.2.显卡同步
hhh = new HBox(vvv);
lb = new QLabel(tr("显卡同步")); hhh->addWidget(lb);
checkSyncXianKa = new QCheckBox; checkSyncXianKa->setChecked(true); hhh->addWidget(checkSyncXianKa);
//2.3.开屏渐亮
hhh = new HBox(vvv);
lb = new QLabel(tr("双卡备份")); hhh->addWidget(lb);
checkDoubleCopy = new QCheckBox; checkDoubleCopy->setChecked(false); hhh->addWidget(checkDoubleCopy);
//2.4.开屏渐亮
hhh = new HBox(vvv);
lb = new QLabel(tr("开屏渐亮")); hhh->addWidget(lb);
checkJianLiang = new QCheckBox; checkSyncXianKa->setChecked(false); hhh->addWidget(checkJianLiang);
//2.5.D信号为第二组时钟
hhh = new HBox(vvv);
lb = new QLabel(tr("信号为第二组时钟")); hhh->addWidget(lb);
checkDsignalAsCLk = new QCheckBox; checkDsignalAsCLk->setChecked(false); hhh->addWidget(checkDsignalAsCLk);
//更多设置
hh->addStretch();
vvv = new VBox(hh);
vvv->addStretch();
hhh = new HBox(vvv);
auto btn = new QPushButton(tr("更多设置"));
btn->setProperty("ss","blue");
hhh->addWidget(btn);
connect(btn, &QPushButton::clicked, this, [=] {
});
vvv->addStretch();
hh->addStretch();
vvv = new VBox(hh);
//分割线
auto hh3 = new HBox(vvv);
QFrame * line2 = new QFrame();
line2->setFrameShape(QFrame::VLine);
line2->setFrameShadow(QFrame::Sunken);
line2->setStyleSheet("background-color:#222;");
hh3->addWidget(line2);
//第三列区域
vvv = new VBox(hh);
//3.1.DCLK相位
hhh = new HBox(vvv);
lb = new QLabel(tr("DCLK相位:")); hhh->addWidget(lb);
cbDclkXw = new QComboBox(); cbDclkXw->addItem("0度");cbDclkXw->addItem("+90度");cbDclkXw->addItem("-90度"); hhh->addWidget(cbDclkXw);
//3.2.DCLK占空比
hhh = new HBox(vvv);
lb = new QLabel(tr("DCLK占空比:")); hhh->addWidget(lb);
cbDclkZkb = new QComboBox(); cbDclkZkb->addItem("50%");cbDclkZkb->addItem("25%");cbDclkZkb->addItem("75%"); hhh->addWidget(cbDclkZkb);
//3.3.锁存STB相位微调
hhh = new HBox(vvv);
lb = new QLabel(tr("锁存STB相位微调:")); hhh->addWidget(lb);
cbStb = new QComboBox(); cbStb->addItem("不调整");cbStb->addItem("前移1个时钟");cbStb->addItem("前移2个时钟");cbStb->addItem("前移3个时钟");cbStb->addItem("后移1个时钟");cbStb->addItem("后移2个时钟");cbStb->addItem("后移3个时钟"); hhh->addWidget(cbStb);
//3.4.行信号DE相位微调
hhh = new HBox(vvv);
lb = new QLabel(tr("行信号DE相位微调:")); hhh->addWidget(lb);
cbDE = new QComboBox(); cbDE->addItem("不调整");cbDE->addItem("前移1个时钟");cbDE->addItem("前移2个时钟");cbDE->addItem("前移3个时钟");cbDE->addItem("后移1个时钟");cbDE->addItem("后移2个时钟");cbDE->addItem("后移3个时钟"); hhh->addWidget(cbDE);
//3.5.行信号ABC相位微调
hhh = new HBox(vvv);
lb = new QLabel(tr("行信号ABC相位微调:")); hhh->addWidget(lb);
cbABC = new QComboBox(); cbABC->addItem("不调整");cbABC->addItem("前移1个时钟");cbABC->addItem("前移2个时钟");cbABC->addItem("前移3个时钟");cbABC->addItem("后移1个时钟");cbABC->addItem("后移2个时钟");cbABC->addItem("后移3个时钟"); hhh->addWidget(cbABC);
//3.6.单口带载点数
hhh = new HBox(vvv);
lb = new QLabel(tr("单口带载点数:")); hhh->addWidget(lb);
spinPointsOnePort = new QSpinBox; spinPointsOnePort->setRange(1, 999); hhh->addWidget(spinPointsOnePort);
hh->addSpacing(20);
//第四列区域
vvv = new VBox(hh);
//4.1.消隐电平
hhh = new HBox(vvv);
lb = new QLabel(tr("消隐电平:")); hhh->addWidget(lb);
cbXiaoYinDianPing= new QComboBox(); cbXiaoYinDianPing->addItem("高有效");cbXiaoYinDianPing->addItem("低有效"); hhh->addWidget(cbXiaoYinDianPing);
//4.2.锁存信号
hhh = new HBox(vvv);
lb = new QLabel(tr("锁存信号:")); hhh->addWidget(lb);
cbSTB = new QComboBox(); cbSTB->addItem("正向");cbSTB->addItem("反向"); hhh->addWidget(cbSTB);
//4.3.行输出
hhh = new HBox(vvv);
lb = new QLabel(tr("行输出:")); hhh->addWidget(lb);
cbSRowOut = new QComboBox(); cbSRowOut->addItem("低有效");cbSRowOut->addItem("高有效"); hhh->addWidget(cbSRowOut);
//分割线
auto hh1 = new HBox(vBox1);
QFrame * line = new QFrame();
line->setFrameShape(QFrame::HLine);
line->setFrameShadow(QFrame::Sunken);
line->setStyleSheet("background-color:#222;");
hh1->addWidget(line);
auto hh2=new HBox(vBox1);
//计算结果竖直信息区
auto resultInfo = new HBox(hh2);
lb = new QLabel(tr("[普刷] 视觉刷新率:")); resultInfo->addWidget(lb);
float freshLv1=Get_Frefr(7/*小数权值*/ , 12/*灰度位宽*/ , 12500000/*移位时钟频率*/ , 240/*扫描长度*/ , 16/*扫描类型*/ , 4/*倍频*/ ); m_ctrlFreshRate = new QLabel(QString::number(freshLv1)); resultInfo->addWidget(m_ctrlFreshRate);
resultInfo->addStretch();
lb = new QLabel(tr("亮度有效率:")); resultInfo->addWidget(lb);
float BrightYouXiaoLv1=Get_Eff(8,16); m_ctrlBrightEff = new QLabel(QString::number(BrightYouXiaoLv1)); resultInfo->addWidget(m_ctrlBrightEff);
resultInfo->addStretch();
lb = new QLabel(tr("最小OE:")); resultInfo->addWidget(lb);
float minOe=Get_Eff(8,16); m_ctrlMinOE = new QLabel(QString::number(minOe)); resultInfo->addWidget(m_ctrlMinOE);
resultInfo->addStretch();
vBox1->addStretch();
changeValueByEffectControler() ;
}
else if(expertWin->m_iRcvCardType == enum_xixun_sync)
{
}
}
}
void NormalEffectWin::changeValueByEffectControler() {
//spinbox
if(expertWin->m_iRcvCardType==enum_zrf)
{
qDebug()<<"changeValueByEffectControler";
QObject::connect(spinLineNs, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), [=](int value){ qDebug() << "换行时间当前值:" << value;
expertWin->zrf_rcv_obj.b193=value; });
QObject::connect(spinLineWz, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), [=](int value){ qDebug() << "行位置当前值:" << value;
expertWin->zrf_rcv_obj.b193=value; });
QObject::connect(spinLineXy, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), [=](int value){ qDebug() << "消隐时间当前值:" << value;
expertWin->zrf_rcv_obj.b2=value; });//
QObject::connect(spinPointsOnePort, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), [=](int value){ qDebug() << "单口带载点数当前值:" << value;
expertWin->zrf_rcv_obj.b193=value; });
//combox
QObject::connect(cbDCLKf, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "DLC频率当前值" << value;
expertWin->zrf_rcv_obj.b18_3_0=value; });//
QObject::connect(cbDclkXw, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "DCLK相位当前值" << value;
expertWin->zrf_rcv_obj.b19_7_4=value; });//
QObject::connect(cbDclkZkb, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "DCLK占空比当前值" << value;
expertWin->zrf_rcv_obj.b19_3_0=value; });//
QObject::connect(freshBeiLv, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "刷新倍率出当前值:" << value;
expertWin->zrf_rcv_obj.b21_7_5=value; });//
QObject::connect(cbGryLevel, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "灰度等级出当前值:" << value;
if(expertWin->zrf_rcv_obj.m_pwmFlag==1){
switch(value){
case 0: expertWin->zrf_rcv_obj.b21_4_0=23; break;//正常4096
case 1: expertWin->zrf_rcv_obj.b21_4_0=26; break;//正常8192
case 2: expertWin->zrf_rcv_obj.b21_4_0=29; break;//正常16384
case 3: expertWin->zrf_rcv_obj.b21_4_0=30; break;//正常32768
case 4: expertWin->zrf_rcv_obj.b21_4_0=31; break;//正常65535
default: expertWin->zrf_rcv_obj.b21_4_0=31; break;//正常65535
}
}
else
expertWin->zrf_rcv_obj.b21_4_0=value; });//
QObject::connect(cbNoSign, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "无信号输出出当前值:" << value;
expertWin->zrf_rcv_obj.b29_1_0=value; });//
QObject::connect(cbStb, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "行信号STB微调出当前值" << value;
expertWin->zrf_rcv_obj.b193=value; });
QObject::connect(cbDE, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "行信号DE微调出当前值" << value;
expertWin->zrf_rcv_obj.b193=value; });
QObject::connect(cbABC, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "行信号ABC微调出当前值" << value;
expertWin->zrf_rcv_obj.b193=value; });
QObject::connect(cbXiaoYinDianPing, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "消隐电平出当前值:" << value;
expertWin->zrf_rcv_obj.b1_5=value; });//
QObject::connect(cbSTB, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "锁存STB电平方向出当前值" << value;
expertWin->zrf_rcv_obj.b0_6=value; });//
QObject::connect(cbSRowOut, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "行输出电平出当前值:" << value;
expertWin->zrf_rcv_obj.b0_4=value; });//
//checkbox
QObject::connect(checkSyncXianKa, static_cast<void (QCheckBox::*)(int)>(&QCheckBox::stateChanged), [=](int value){ qDebug() << "同步显卡出当前值:" << value;
if(value==0) expertWin->zrf_rcv_obj.b26_7=value ;
else expertWin->zrf_rcv_obj.b26_7=0b1; });//
QObject::connect(checkJianLiang, static_cast<void (QCheckBox::*)(int)>(&QCheckBox::stateChanged), [=](int value){ qDebug() << "开屏渐亮出当前值:" << value;
if(value==0) expertWin->zrf_rcv_obj.b1_0=value ;
else expertWin->zrf_rcv_obj.b1_0=0b1; });//
QObject::connect(checkDoubleCopy, static_cast<void (QCheckBox::*)(int)>(&QCheckBox::stateChanged), [=](int value){ qDebug() << "双备份出当前值:" << value;
if(value==0) expertWin->zrf_rcv_obj.b1_4=value ;
else expertWin->zrf_rcv_obj.b1_4=0b1; });//
QObject::connect(checkDsignalAsCLk, static_cast<void (QCheckBox::*)(int)>(&QCheckBox::stateChanged), [=](int value){ qDebug() << "D信号作为第二组CLK出当前值" << value;
if(value==0) expertWin->zrf_rcv_obj.b1_1=value ;
else expertWin->zrf_rcv_obj.b1_1=0b1; });//
}
}
void NormalEffectWin::SetEffectControlerValueByClass()
{
if(expertWin->m_iRcvCardType == enum_zrf) {
//spinbox
qDebug()<<"SetEffectControlerValueByClass";
spinLineNs->setValue(expertWin->zrf_rcv_obj.b193); qDebug() << "换行时间当前值:" << spinLineNs->value();
spinLineWz->setValue(expertWin->zrf_rcv_obj.b193); qDebug() << "行位置当前值:" << spinLineWz->value();
spinLineXy->setValue(expertWin->zrf_rcv_obj.b2); qDebug() << "消隐时间当前值:" << spinLineXy->value();//
spinPointsOnePort->setValue(expertWin->zrf_rcv_obj.b193); qDebug() << "单口带载点数当前值:" << spinPointsOnePort->value();
//combox
cbDCLKf->setCurrentIndex(expertWin->zrf_rcv_obj.b18_3_0); qDebug() << "DLC频率当前值" << cbDCLKf->currentIndex();
cbDclkXw->setCurrentIndex(expertWin->zrf_rcv_obj.b19_7_4); qDebug() << "DCLK相位当前值" << cbDclkXw->currentIndex();
cbDclkZkb->setCurrentIndex(expertWin->zrf_rcv_obj.b19_3_0); qDebug() << "DCLK占空比当前值" << cbDclkZkb->currentIndex();
freshBeiLv->setCurrentIndex(expertWin->zrf_rcv_obj.b21_7_5); qDebug() << "刷新倍率出当前值:" << freshBeiLv->currentIndex();
int index=31;
if(expertWin->zrf_rcv_obj.m_pwmFlag==1)
switch(expertWin->zrf_rcv_obj.b21_4_0){
case 23: index=0; break;//正常4096
case 26: index=1; break;//正常8192
case 29: index=2; break;//正常16384
case 30: index=3; break;//正常32768
case 31: index=4; break;//正常65535
default: index=4; break;//正常65535
}
else
index=expertWin->zrf_rcv_obj.b21_4_0;
cbGryLevel->setCurrentIndex(index); qDebug() << "灰度等级出当前值:" << cbGryLevel->currentIndex();
cbNoSign->setCurrentIndex(expertWin->zrf_rcv_obj.b29_1_0); qDebug() << "无信号输出出当前值:" << cbNoSign->currentIndex();
cbStb->setCurrentIndex(expertWin->zrf_rcv_obj.b193); qDebug() << "行信号STB微调出当前值" << cbStb->currentIndex();
cbDE->setCurrentIndex(expertWin->zrf_rcv_obj.b193); qDebug() << "行信号DE微调出当前值" << cbDE->currentIndex();
cbABC->setCurrentIndex(expertWin->zrf_rcv_obj.b193); qDebug() << "行信号ABC微调出当前值" << cbABC->currentIndex();
cbXiaoYinDianPing->setCurrentIndex(expertWin->zrf_rcv_obj.b1_5); qDebug() << "消隐电平出当前值:" << cbXiaoYinDianPing->currentIndex();
cbSTB->setCurrentIndex(expertWin->zrf_rcv_obj.b0_6); qDebug() << "锁存STB电平方向出当前值" << cbSTB->currentIndex();
cbSRowOut->setCurrentIndex(expertWin->zrf_rcv_obj.b0_4); qDebug() << "行输出电平出当前值:" << cbSRowOut->currentIndex();
//checkbox
checkSyncXianKa->setChecked(expertWin->zrf_rcv_obj.b26_7); qDebug() << "同步显卡出当前值:" << checkSyncXianKa->isChecked();
checkJianLiang->setChecked(expertWin->zrf_rcv_obj.b1_0); qDebug() << "开屏渐亮出当前值:" << checkJianLiang->isChecked();
checkDoubleCopy->setChecked(expertWin->zrf_rcv_obj.b1_4); qDebug() << "双备份出当前值:" << checkDoubleCopy->isChecked();
checkDsignalAsCLk->setChecked(expertWin->zrf_rcv_obj.b1_1); qDebug() << "D信号作为第二组CLK出当前值" << checkDsignalAsCLk->isChecked();
expertWin->SendBaseParam_zrf();
}
}
void NormalEffectWin::reSetcontrolerByIcType(QString strIcName)
{
if(strIcName == "ICN2053")
{
cbDCLKf->clear();
cbDCLKf->addItem("31.2M");cbDCLKf->addItem("25M");cbDCLKf->addItem("20.83M");cbDCLKf->addItem("17.86M");cbDCLKf->addItem("15.63M");cbDCLKf->addItem("12.5M");cbDCLKf->addItem("10.42M");cbDCLKf->addItem("8.9M");
cbDCLKf->addItem("7.8M");cbDCLKf->addItem("6.25M");;cbDCLKf->addItem("5.2M");;cbDCLKf->addItem("4.5M");;cbDCLKf->addItem("3.9M");;cbDCLKf->addItem("3.125M"); ;cbDCLKf->addItem("1.9M"); ;cbDCLKf->addItem("1M");
}
}

View File

@ -0,0 +1,26 @@
#ifndef NORMALEFFECTWIN_H
#define NORMALEFFECTWIN_H
#include <QObject>
#include <QWidget>
#include "expertwin.h"
#include <QLabel>
#include <QSpinBox>
#include <QComboBox>
#include <QCheckBox>
#include <QRadioButton>
class NormalEffectWin: public QWidget
{
Q_OBJECT
public:
NormalEffectWin(ExpertWin *parent = nullptr);
ExpertWin *expertWin;
QSpinBox *spinLineNs,*spinLineWz,*spinLineXy,*spinPointsOnePort;
QComboBox *cbDCLKf,*cbDclkXw, *cbDclkZkb,*freshBeiLv,*cbGryLevel,*cbNoSign,*cbStb,*cbDE,*cbABC,*cbXiaoYinDianPing,*cbSTB,*cbSRowOut;
QLabel * m_ctrlFreshRate,*m_ctrlBrightEff,*m_ctrlMinOE;
QCheckBox * checkSyncXianKa,*checkJianLiang,*checkDoubleCopy,*checkDsignalAsCLk;
void changeValueByEffectControler();
void SetEffectControlerValueByClass();
void reSetcontrolerByIcType(QString strIcName);
};
#endif // NORMALEFFECTWIN_H

View File

@ -0,0 +1,321 @@
#include "pwmeffectwin.h"
#include "globalfunc.h"
#include "gutil/qgui.h"
#include <QPushButton>
#include <QStackedWidget>
#include <QCheckBox>
#include "efffrefr.h"
#include "ic_ui/icn2053.h"
PwmEffectWin::PwmEffectWin(ExpertWin *parent):expertWin(parent)
{
resize(880, 220);
{
if(expertWin->m_iRcvCardType == enum_zrf)
{
auto vBox1=new VBox(this);
auto hh = new HBox(vBox1);
hh->addSpacing(20);
//第一列区域
auto vvv = new VBox(hh);
//1.1.移位时钟频率
auto hhh = new HBox(vvv);
auto lb = new QLabel(tr("移位时钟:"));
hhh->addWidget(lb);
cbDCLKf = new QComboBox(); cbDCLKf->addItem("31.2M");cbDCLKf->addItem("25M");cbDCLKf->addItem("20.83M");cbDCLKf->addItem("17.86M");cbDCLKf->addItem("15.63M");cbDCLKf->addItem("12.5M");cbDCLKf->addItem("10.42M");cbDCLKf->addItem("8.9M");
cbDCLKf->addItem("7.8M");cbDCLKf->addItem("6.25M");;cbDCLKf->addItem("5.2M");;cbDCLKf->addItem("4.5M");;cbDCLKf->addItem("3.9M");;cbDCLKf->addItem("3.125M"); ;cbDCLKf->addItem("1.9M"); ;cbDCLKf->addItem("1M"); hhh->addWidget(cbDCLKf);
//1.2.GCLK频率
hhh = new HBox(vvv);
lb = new QLabel(tr("灰度时钟:"));
hhh->addWidget(lb);
cbGCLKf = new QComboBox();
cbGCLKf->addItem("25M");cbGCLKf->addItem("20.83M");cbGCLKf->addItem("17.86M");cbGCLKf->addItem("15.63M");cbGCLKf->addItem("13.89M");cbGCLKf->addItem("12.5M");cbGCLKf->addItem("11.36M");cbGCLKf->addItem("10.42M");cbGCLKf->addItem("9.62M");
hhh->addWidget(cbGCLKf);
//1.3.灰度级别
hhh = new HBox(vvv);
lb = new QLabel(tr("灰度级数:")); hhh->addWidget(lb);
cbGryLevel = new QComboBox(); cbGryLevel->addItem("无灰度"); cbGryLevel->addItem("无OE8级");cbGryLevel->addItem("无OE16级");cbGryLevel->addItem("无OE32级");cbGryLevel->addItem("无OE64级");cbGryLevel->addItem("正常16级"); cbGryLevel->addItem("高亮16级");cbGryLevel->addItem("正常32级");
cbGryLevel->addItem("高亮32级");cbGryLevel->addItem("正常64级");cbGryLevel->addItem("高亮64级");cbGryLevel->addItem("正常128级");cbGryLevel->addItem("高亮128级");cbGryLevel->addItem("正常256级");cbGryLevel->addItem("高亮256级");cbGryLevel->addItem("正常512级");
cbGryLevel->addItem("高亮512级");cbGryLevel->addItem("正常1024级");cbGryLevel->addItem("高亮1024级");cbGryLevel->addItem("低亮2048级");cbGryLevel->addItem("正常2048级");cbGryLevel->addItem("高亮2048级");cbGryLevel->addItem("低亮4096级");cbGryLevel->addItem("正常4096级");
cbGryLevel->addItem("高亮4096级");cbGryLevel->addItem("低亮8192级");cbGryLevel->addItem("正常8192级");cbGryLevel->addItem("高亮8192级");cbGryLevel->addItem("低亮16384级");cbGryLevel->addItem("正常16384");cbGryLevel->addItem("正常32768级");cbGryLevel->addItem("正常65535级"); hhh->addWidget(cbGryLevel);
//1.4.刷新倍率
hhh = new HBox(vvv);
lb = new QLabel(tr("刷新倍率:")); hhh->addWidget(lb);
freshBeiLv = new QComboBox(); freshBeiLv->addItem("20");freshBeiLv->addItem("24");freshBeiLv->addItem("28");freshBeiLv->addItem("32");freshBeiLv->addItem("36");freshBeiLv->addItem("40");freshBeiLv->addItem("44");freshBeiLv->addItem("48");freshBeiLv->addItem("64"); hhh->addWidget(freshBeiLv);
//1.5.换行时间
hhh = new HBox(vvv);
lb = new QLabel(tr("换行时间(ns):")); hhh->addWidget(lb);
spinLineNs = new QSpinBox; spinLineNs->setRange(2, 9999); hhh->addWidget(spinLineNs);
//1.6.换行位置
hhh = new HBox(vvv);
lb = new QLabel(tr("换行位置(ns):")); hhh->addWidget(lb);
spinLineWz = new QSpinBox; spinLineWz->setRange(2, 9999); hhh->addWidget(spinLineWz);
//第二列区域
hh->addSpacing(20);
vvv = new VBox(hh);
//2.1.无信号数据
hhh = new HBox(vvv);
lb = new QLabel(tr("无信号数据:")); hhh->addWidget(lb);
cbNoSign = new QComboBox();
cbNoSign->addItem("最后一帧画面");cbNoSign->addItem("黑屏"); hhh->addWidget(cbNoSign);
//2.2.行消隐时间
hhh = new HBox(vvv);
lb = new QLabel(tr("行消隐时间(ns):")); hhh->addWidget(lb);
spinLineXy = new QSpinBox; spinLineWz->setRange(2, 9999); hhh->addWidget(spinLineXy);
//2.3.显卡同步
hhh = new HBox(vvv);
lb = new QLabel(tr("显卡同步")); hhh->addWidget(lb);
checkSyncXianKa = new QCheckBox; checkSyncXianKa->setChecked(true); hhh->addWidget(checkSyncXianKa);
//2.4.开屏渐亮
hhh = new HBox(vvv);
lb = new QLabel(tr("双卡备份")); hhh->addWidget(lb);
checkDoubleCopy = new QCheckBox; checkDoubleCopy->setChecked(false); hhh->addWidget(checkDoubleCopy);
//2.5.开屏渐亮
hhh = new HBox(vvv);
lb = new QLabel(tr("开屏渐亮")); hhh->addWidget(lb);
checkJianLiang = new QCheckBox; checkSyncXianKa->setChecked(false); hhh->addWidget(checkJianLiang);
//2.6.D信号为第二组时钟
hhh = new HBox(vvv);
lb = new QLabel(tr("信号为第二组时钟")); hhh->addWidget(lb);
checkDsignalAsCLk = new QCheckBox; checkDsignalAsCLk->setChecked(false); hhh->addWidget(checkDsignalAsCLk);
//更多设置
hh->addStretch();
vvv = new VBox(hh);
vvv->addStretch();
hhh = new HBox(vvv);
auto btn = new QPushButton(tr("更多设置"));
btn->setProperty("ss","blue");
hhh->addWidget(btn);
connect(btn, &QPushButton::clicked, this, [=] {
(new icn_2053(expertWin))->show();
});
vvv->addStretch();
hh->addStretch();
vvv = new VBox(hh);
//分割线
auto hh3 = new HBox(vvv);
QFrame * line2 = new QFrame();
line2->setFrameShape(QFrame::VLine);
line2->setFrameShadow(QFrame::Sunken);
line2->setStyleSheet("background-color:#222;");
hh3->addWidget(line2);
//第三列区域
vvv = new VBox(hh);
//3.1.DCLK相位
hhh = new HBox(vvv);
lb = new QLabel(tr("DCLK相位:")); hhh->addWidget(lb);
cbDclkXw = new QComboBox(); cbDclkXw->addItem("0度");cbDclkXw->addItem("+90度");cbDclkXw->addItem("-90度"); hhh->addWidget(cbDclkXw);
//3.2.DCLK占空比
hhh = new HBox(vvv);
lb = new QLabel(tr("DCLK占空比:")); hhh->addWidget(lb);
cbDclkZkb = new QComboBox(); cbDclkZkb->addItem("50%");cbDclkZkb->addItem("25%");cbDclkZkb->addItem("75%"); hhh->addWidget(cbDclkZkb);
//3.3.锁存STB相位微调
hhh = new HBox(vvv);
lb = new QLabel(tr("锁存STB相位微调:")); hhh->addWidget(lb);
cbStb = new QComboBox(); cbStb->addItem("不调整");cbStb->addItem("前移1个时钟");cbStb->addItem("前移2个时钟");cbStb->addItem("前移3个时钟");cbStb->addItem("后移1个时钟");cbStb->addItem("后移2个时钟");cbStb->addItem("后移3个时钟"); hhh->addWidget(cbStb);
//3.4.行信号DE相位微调
hhh = new HBox(vvv);
lb = new QLabel(tr("行信号DE相位微调:")); hhh->addWidget(lb);
cbDE = new QComboBox(); cbDE->addItem("不调整");cbDE->addItem("前移1个时钟");cbDE->addItem("前移2个时钟");cbDE->addItem("前移3个时钟");cbDE->addItem("后移1个时钟");cbDE->addItem("后移2个时钟");cbDE->addItem("后移3个时钟"); hhh->addWidget(cbDE);
//3.5.行信号ABC相位微调
hhh = new HBox(vvv);
lb = new QLabel(tr("行信号ABC相位微调:")); hhh->addWidget(lb);
cbABC = new QComboBox(); cbABC->addItem("不调整");cbABC->addItem("前移1个时钟");cbABC->addItem("前移2个时钟");cbABC->addItem("前移3个时钟");cbABC->addItem("后移1个时钟");cbABC->addItem("后移2个时钟");cbABC->addItem("后移3个时钟"); hhh->addWidget(cbABC);
//3.6.单口带载点数
hhh = new HBox(vvv);
lb = new QLabel(tr("单口带载点数:")); hhh->addWidget(lb);
spinPointsOnePort = new QSpinBox; spinPointsOnePort->setRange(1, 999); hhh->addWidget(spinPointsOnePort);
hh->addSpacing(20);
//第四列区域
vvv = new VBox(hh);
//4.1.消隐电平
hhh = new HBox(vvv);
lb = new QLabel(tr("消隐电平:")); hhh->addWidget(lb);
cbXiaoYinDianPing= new QComboBox(); cbXiaoYinDianPing->addItem("高有效");cbXiaoYinDianPing->addItem("低有效"); hhh->addWidget(cbXiaoYinDianPing);
//4.2.锁存信号
hhh = new HBox(vvv);
lb = new QLabel(tr("锁存信号:")); hhh->addWidget(lb);
cbSTB = new QComboBox(); cbSTB->addItem("正向");cbSTB->addItem("反向"); hhh->addWidget(cbSTB);
//4.3.行输出
hhh = new HBox(vvv);
lb = new QLabel(tr("行输出:")); hhh->addWidget(lb);
cbSRowOut = new QComboBox(); cbSRowOut->addItem("低有效");cbSRowOut->addItem("高有效"); hhh->addWidget(cbSRowOut);
//4.5.GCLK相位
hhh = new HBox(vvv);
lb = new QLabel(tr("GCLK相位:")); hhh->addWidget(lb);
spinGclkXw = new QSpinBox; spinGclkXw->setRange(20, 80); hhh->addWidget(spinGclkXw);
//4.6.GCLK占空比
hhh = new HBox(vvv);
lb = new QLabel(tr("GCLK占空比:")); hhh->addWidget(lb);
spinGclkZkb = new QSpinBox; spinGclkZkb->setRange(20, 80); hhh->addWidget(spinGclkZkb);
//分割线
auto hh1 = new HBox(vBox1);
QFrame * line = new QFrame();
line->setFrameShape(QFrame::HLine);
line->setFrameShadow(QFrame::Sunken);
line->setStyleSheet("background-color:#222;");
hh1->addWidget(line);
auto hh2=new HBox(vBox1);
//计算结果竖直信息区
auto resultInfo = new HBox(hh2);
lb = new QLabel(tr("[PWM]视觉刷新率:")); resultInfo->addWidget(lb);
float freshLv1=Get_Frefr(7/*小数权值*/ , 12/*灰度位宽*/ , 12500000/*移位时钟频率*/ , 240/*扫描长度*/ , 16/*扫描类型*/ , 4/*倍频*/ ); m_ctrlFreshRate = new QLabel(QString::number(freshLv1)); resultInfo->addWidget(m_ctrlFreshRate);
resultInfo->addStretch();
lb = new QLabel(tr("亮度有效率:")); resultInfo->addWidget(lb);
float BrightYouXiaoLv1=Get_Eff(8,16); m_ctrlBrightEff = new QLabel(QString::number(BrightYouXiaoLv1)); resultInfo->addWidget(m_ctrlBrightEff);
resultInfo->addStretch();
lb = new QLabel(tr("最小OE:")); resultInfo->addWidget(lb);
float minOe=Get_Eff(8,16); m_ctrlMinOE = new QLabel(QString::number(minOe)); resultInfo->addWidget(m_ctrlMinOE);
resultInfo->addStretch();
vBox1->addStretch();
changeValueByEffectControler();
}
else if(expertWin->m_iRcvCardType == enum_xixun_sync)
{
}
}
}
void PwmEffectWin::changeValueByEffectControler() {
//spinbox
if(expertWin->m_iRcvCardType==enum_zrf)
{
QObject::connect(spinGclkXw, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), [=](int value){ qDebug() << "GCLK相位当前值" << value;
expertWin->zrf_rcv_obj.b193=value; });
QObject::connect(spinGclkZkb, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), [=](int value){ qDebug() << "GCLK占空比当前值" << value;
expertWin->zrf_rcv_obj.b193=value; });
QObject::connect(spinLineNs, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), [=](int value){ qDebug() << "换行时间当前值:" << value;
expertWin->zrf_rcv_obj.b193=value; });
QObject::connect(spinLineWz, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), [=](int value){ qDebug() << "行位置当前值:" << value;
expertWin->zrf_rcv_obj.b193=value; });
QObject::connect(spinLineXy, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), [=](int value){ qDebug() << "消隐时间当前值:" << value;
expertWin->zrf_rcv_obj.b2=value; });//
QObject::connect(spinPointsOnePort, static_cast<void (QSpinBox::*)(int)>(&QSpinBox::valueChanged), [=](int value){ qDebug() << "单口带载点数当前值:" << value;
expertWin->zrf_rcv_obj.b193=value; });
//combox
QObject::connect(cbDCLKf, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "DLC频率当前值" << value;
expertWin->zrf_rcv_obj.b18_3_0=value; });//
QObject::connect(cbDclkXw, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "DCLK相位当前值" << value;
expertWin->zrf_rcv_obj.b19_7_4=value; });//
QObject::connect(cbDclkZkb, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "DCLK占空比当前值" << value;
expertWin->zrf_rcv_obj.b19_3_0=value; });//
QObject::connect(freshBeiLv, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "刷新倍率出当前值:" << value;
expertWin->zrf_rcv_obj.b21_7_5=value; });//
QObject::connect(cbGCLKf, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "GCLK周期出当前值" << value;
expertWin->zrf_rcv_obj.b193=value; });
QObject::connect(cbGryLevel, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "灰度等级出当前值:" << value;
if(expertWin->zrf_rcv_obj.m_pwmFlag==1){
switch(value){
case 0: expertWin->zrf_rcv_obj.b21_4_0=23; break;//正常4096
case 1: expertWin->zrf_rcv_obj.b21_4_0=26; break;//正常8192
case 2: expertWin->zrf_rcv_obj.b21_4_0=29; break;//正常16384
case 3: expertWin->zrf_rcv_obj.b21_4_0=30; break;//正常32768
case 4: expertWin->zrf_rcv_obj.b21_4_0=31; break;//正常65535
default: expertWin->zrf_rcv_obj.b21_4_0=31; break;//正常65535
}
}
else
expertWin->zrf_rcv_obj.b21_4_0=value; });//
QObject::connect(cbNoSign, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "无信号输出出当前值:" << value;
expertWin->zrf_rcv_obj.b29_1_0=value; });//
QObject::connect(cbStb, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "行信号STB微调出当前值" << value;
expertWin->zrf_rcv_obj.b193=value; });
QObject::connect(cbDE, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "行信号DE微调出当前值" << value;
expertWin->zrf_rcv_obj.b193=value; });
QObject::connect(cbABC, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "行信号ABC微调出当前值" << value;
expertWin->zrf_rcv_obj.b193=value; });
QObject::connect(cbXiaoYinDianPing, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "消隐电平出当前值:" << value;
expertWin->zrf_rcv_obj.b1_5=value; });//
QObject::connect(cbSTB, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "锁存STB电平方向出当前值" << value;
expertWin->zrf_rcv_obj.b0_6=value; });//
QObject::connect(cbSRowOut, static_cast<void (QComboBox::*)(int)>(&QComboBox::currentIndexChanged), [=](int value){ qDebug() << "行输出电平出当前值:" << value;
expertWin->zrf_rcv_obj.b0_4=value; });//
//checkbox
QObject::connect(checkSyncXianKa, static_cast<void (QCheckBox::*)(int)>(&QCheckBox::stateChanged), [=](int value){ qDebug() << "同步显卡出当前值:" << value;
if(value==0) expertWin->zrf_rcv_obj.b26_7=value ;
else expertWin->zrf_rcv_obj.b26_7=0b1; });//
QObject::connect(checkJianLiang, static_cast<void (QCheckBox::*)(int)>(&QCheckBox::stateChanged), [=](int value){ qDebug() << "开屏渐亮出当前值:" << value;
if(value==0) expertWin->zrf_rcv_obj.b1_0=value ;
else expertWin->zrf_rcv_obj.b1_0=0b1; });//
QObject::connect(checkDoubleCopy, static_cast<void (QCheckBox::*)(int)>(&QCheckBox::stateChanged), [=](int value){ qDebug() << "双备份出当前值:" << value;
if(value==0) expertWin->zrf_rcv_obj.b1_4=value ;
else expertWin->zrf_rcv_obj.b1_4=0b1; });//
QObject::connect(checkDsignalAsCLk, static_cast<void (QCheckBox::*)(int)>(&QCheckBox::stateChanged), [=](int value){ qDebug() << "D信号作为第二组CLK出当前值" << value;
if(value==0) expertWin->zrf_rcv_obj.b1_1=value ;
else expertWin->zrf_rcv_obj.b1_1=0b1; });//
}
}
void PwmEffectWin::SetEffectControlerValueByClass()
{
if(expertWin->m_iRcvCardType == enum_zrf) {
//spinbox
spinGclkXw->setValue(expertWin->zrf_rcv_obj.b193); qDebug() << "GCLK相位当前值" << spinGclkXw->value();
spinGclkZkb->setValue(expertWin->zrf_rcv_obj.b193); qDebug() << "GCLK占空比当前值" << spinGclkZkb->value();
spinLineNs->setValue(expertWin->zrf_rcv_obj.b193); qDebug() << "换行时间当前值:" << spinLineNs->value();
spinLineWz->setValue(expertWin->zrf_rcv_obj.b193); qDebug() << "行位置当前值:" << spinLineWz->value();
spinLineXy->setValue(expertWin->zrf_rcv_obj.b2); qDebug() << "消隐时间当前值:" << spinLineXy->value();//
spinPointsOnePort->setValue(expertWin->zrf_rcv_obj.b193); qDebug() << "单口带载点数当前值:" << spinPointsOnePort->value();
//combox
cbDCLKf->setCurrentIndex(expertWin->zrf_rcv_obj.b18_3_0); qDebug() << "DLC频率当前值" << cbDCLKf->currentIndex();
cbDclkXw->setCurrentIndex(expertWin->zrf_rcv_obj.b19_7_4); qDebug() << "DCLK相位当前值" << cbDclkXw->currentIndex();
cbDclkZkb->setCurrentIndex(expertWin->zrf_rcv_obj.b19_3_0); qDebug() << "DCLK占空比当前值" << cbDclkZkb->currentIndex();
freshBeiLv->setCurrentIndex(expertWin->zrf_rcv_obj.b21_7_5); qDebug() << "刷新倍率出当前值:" << freshBeiLv->currentIndex();
cbGCLKf->setCurrentIndex(expertWin->zrf_rcv_obj.b193); qDebug() << "GCLK周期出当前值" << cbGCLKf->currentIndex();
int index=31;
if(expertWin->zrf_rcv_obj.m_pwmFlag==1)
switch(expertWin->zrf_rcv_obj.b21_4_0){
case 23: index=0; break;//正常4096
case 26: index=1; break;//正常8192
case 29: index=2; break;//正常16384
case 30: index=3; break;//正常32768
case 31: index=4; break;//正常65535
default: index=4; break;//正常65535
}
else
index=expertWin->zrf_rcv_obj.b21_4_0;
cbGryLevel->setCurrentIndex(index); qDebug() << "灰度等级出当前值:" << cbGryLevel->currentIndex();
cbNoSign->setCurrentIndex(expertWin->zrf_rcv_obj.b29_1_0); qDebug() << "无信号输出出当前值:" << cbNoSign->currentIndex();
cbStb->setCurrentIndex(expertWin->zrf_rcv_obj.b193); qDebug() << "行信号STB微调出当前值" << cbStb->currentIndex();
cbDE->setCurrentIndex(expertWin->zrf_rcv_obj.b193); qDebug() << "行信号DE微调出当前值" << cbDE->currentIndex();
cbABC->setCurrentIndex(expertWin->zrf_rcv_obj.b193); qDebug() << "行信号ABC微调出当前值" << cbABC->currentIndex();
cbXiaoYinDianPing->setCurrentIndex(expertWin->zrf_rcv_obj.b1_5); qDebug() << "消隐电平出当前值:" << cbXiaoYinDianPing->currentIndex();
cbSTB->setCurrentIndex(expertWin->zrf_rcv_obj.b0_6); qDebug() << "锁存STB电平方向出当前值" << cbSTB->currentIndex();
cbSRowOut->setCurrentIndex(expertWin->zrf_rcv_obj.b0_4); qDebug() << "行输出电平出当前值:" << cbSRowOut->currentIndex();
//checkbox
checkSyncXianKa->setChecked(expertWin->zrf_rcv_obj.b26_7); qDebug() << "同步显卡出当前值:" << checkSyncXianKa->isChecked();
checkJianLiang->setChecked(expertWin->zrf_rcv_obj.b1_0); qDebug() << "开屏渐亮出当前值:" << checkJianLiang->isChecked();
checkDoubleCopy->setChecked(expertWin->zrf_rcv_obj.b1_4); qDebug() << "双备份出当前值:" << checkDoubleCopy->isChecked();
checkDsignalAsCLk->setChecked(expertWin->zrf_rcv_obj.b1_1); qDebug() << "D信号作为第二组CLK出当前值" << checkDsignalAsCLk->isChecked();
expertWin->SendBaseParam_zrf();
}
}
void PwmEffectWin::reSetcontrolerByIcType(QString strIcName)
{//不同的pwm芯片的配置参数不同控件支持的值的范围也不同需要根据IC名称重新初始化控件内容
if(strIcName == "ICN2053")
{
cbDCLKf->clear();
cbDCLKf->addItem("31.2M");cbDCLKf->addItem("25M");cbDCLKf->addItem("20.83M");cbDCLKf->addItem("17.86M");cbDCLKf->addItem("15.63M");cbDCLKf->addItem("12.5M");cbDCLKf->addItem("10.42M");cbDCLKf->addItem("8.9M");
cbDCLKf->addItem("7.8M");cbDCLKf->addItem("6.25M");;cbDCLKf->addItem("5.2M");;cbDCLKf->addItem("4.5M");;cbDCLKf->addItem("3.9M");;cbDCLKf->addItem("3.125M"); ;cbDCLKf->addItem("1.9M"); ;cbDCLKf->addItem("1M");
cbGCLKf->clear();
cbGCLKf->addItem("25M");cbGCLKf->addItem("20.83M");cbGCLKf->addItem("17.86M");cbGCLKf->addItem("15.63M");cbGCLKf->addItem("13.89M");cbGCLKf->addItem("12.5M");cbGCLKf->addItem("11.36M");cbGCLKf->addItem("10.42M");cbGCLKf->addItem("9.62M");
cbGryLevel->clear();
cbGryLevel->addItem("正常16384");
freshBeiLv->clear();
freshBeiLv->addItem("8");
}
}

View File

@ -0,0 +1,26 @@
#ifndef PWMEFFECTWIN_H
#define PWMEFFECTWIN_H
#include <QObject>
#include <QWidget>
#include "expertwin.h"
#include <QLabel>
#include <QSpinBox>
#include <QComboBox>
#include <QCheckBox>
#include <QRadioButton>
class PwmEffectWin: public QWidget
{
Q_OBJECT
public:
PwmEffectWin(ExpertWin *parent = nullptr);
ExpertWin *expertWin;
QSpinBox *spinGclkXw,*spinGclkZkb,*spinLineNs,*spinLineWz,*spinLineXy,*spinPointsOnePort;
QComboBox *cbDCLKf,*cbDclkXw, *cbDclkZkb,*freshBeiLv,*cbGCLKf,*cbGryLevel,*cbNoSign,*cbStb,*cbDE,*cbABC,*cbXiaoYinDianPing,*cbSTB,*cbSRowOut;
QLabel * m_ctrlFreshRate,*m_ctrlBrightEff,*m_ctrlMinOE;
QCheckBox * checkSyncXianKa,*checkJianLiang,*checkDoubleCopy,*checkDsignalAsCLk;
void changeValueByEffectControler();
void SetEffectControlerValueByClass();
void reSetcontrolerByIcType(QString strIcName);
};
#endif // PWMEFFECTWIN_H

BIN
ledset/imgs/cascade.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

BIN
ledset/imgs/mainsend.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

BIN
ledset/imgs/rcv.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

View File

@ -72,6 +72,10 @@ SOURCES += \
gutil/cu.cpp \
gutil/qgui.cpp \
gutil/qjson.cpp \
ic_ui/doublelatcheffectwin.cpp \
ic_ui/icn2053.cpp \
ic_ui/normaleffectwin.cpp \
ic_ui/pwmeffectwin.cpp \
main.cpp \
mainwin.cpp \
pcaprethread.cpp \
@ -94,6 +98,10 @@ HEADERS += \
gutil/cu.h \
gutil/qgui.h \
gutil/qjson.h \
ic_ui/doublelatcheffectwin.h \
ic_ui/icn2053.h \
ic_ui/normaleffectwin.h \
ic_ui/pwmeffectwin.h \
mainwin.h \
pcaprethread.h \
testwin.h \

View File

@ -33,5 +33,8 @@
<file>imgs/close.png</file>
<file>imgs/macos-max.png</file>
<file>imgs/macos-max1.png</file>
<file>imgs/cascade.png</file>
<file>imgs/mainsend.png</file>
<file>imgs/rcv.png</file>
</qresource>
</RCC>