BDTeset/src/cpp/statusTestWin.cpp

428 lines
16 KiB
C++
Raw Normal View History

2025-06-28 17:19:00 +00:00
#include "statusTestWin.h"
#include "ui_statusTestWin.h"
2025-07-05 07:43:44 +00:00
#include "utils.h"
2025-06-28 17:19:00 +00:00
#include <QPushButton>
#include <QFontMetrics>
2025-07-05 07:43:44 +00:00
#include <QDebug>
2025-06-28 17:19:00 +00:00
StatusTestWin::StatusTestWin(QWidget *parent)
: QWidget(parent)
, ui(new Ui::StatusTestWin)
{
ui->setupUi(this);
statusModel = new QStandardItemModel(this);
statusSelect = new QItemSelectionModel(statusModel);
statusModel->setColumnCount(3);
ui->tableView->setModel(statusModel);
ui->tableView->setSelectionModel(statusSelect);
ui->tableView->horizontalHeader()->setVisible(false);
ui->tableView->verticalHeader()->setVisible(false);
ui->tableView->horizontalHeader()->setStretchLastSection(true);
ui->tableView->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch);
ui->tableView->setWordWrap(true);
QFont font = ui->tableView->font();
font.setBold(true);
QList<QStandardItem *> aItemList;
QStandardItem *aItem = new QStandardItem("");
aItem->setEditable(false);
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("");
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("");
aItem->setTextAlignment(Qt::AlignCenter);
2025-07-05 07:43:44 +00:00
aItemList.append(aItem);
2025-06-28 17:19:00 +00:00
statusModel->insertRow(statusModel->rowCount(),aItemList);
QPushButton *readRnSnBtn = new QPushButton("读取RNSS北斗序列号");
2025-07-05 07:43:44 +00:00
connect(readRnSnBtn,SIGNAL(clicked()),this,SLOT(readRnSnHandle()),Qt::QueuedConnection);
2025-06-28 17:19:00 +00:00
readRnSnBtn->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Preferred);
readRnSnBtn->setFont(font);
readRnSnBtn->setDefault(true);
2025-07-05 07:43:44 +00:00
readRnSnBtn->setCursor(Qt::PointingHandCursor);
2025-06-28 17:19:00 +00:00
//QFontMetrics metrics = readRnSnBtn->fontMetrics();
//int minW = metrics.horizontalAdvance("读取RNSS北斗序列号")+40;
//readRnSnBtn->setMinimumWidth(minW);
//ui->tableView->setColumnWidth(0,minW);
ui->tableView->setIndexWidget(statusModel->index(statusModel->rowCount()-1,0),readRnSnBtn);
ui->tableView->setSpan(statusModel->rowCount()-1,0,1,2);
aItemList.clear();
aItem = new QStandardItem("");
aItem->setEditable(false);
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("");
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("");
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
statusModel->insertRow(statusModel->rowCount(),aItemList);
QPushButton *readMPD9Btn = new QPushButton("读取MPD009编号");
readMPD9Btn->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Preferred);
readMPD9Btn->setFont(font);
readMPD9Btn->setDefault(true);
2025-07-05 07:43:44 +00:00
readMPD9Btn->setCursor(Qt::PointingHandCursor);
2025-06-28 17:19:00 +00:00
ui->tableView->setIndexWidget(statusModel->index(statusModel->rowCount()-1,0),readMPD9Btn);
ui->tableView->setSpan(statusModel->rowCount()-1,0,1,2);
aItemList.clear();
aItem = new QStandardItem("");
aItem->setEditable(false);
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("");
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("");
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
statusModel->insertRow(statusModel->rowCount(),aItemList);
2025-07-05 07:43:44 +00:00
QPushButton *readMPD7IdBtn = new QPushButton("读取MPD007编号");
connect(readMPD7IdBtn,SIGNAL(clicked()),this,SLOT(readMPD7IdHandle()),Qt::QueuedConnection);
readMPD7IdBtn->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Preferred);
readMPD7IdBtn->setFont(font);
readMPD7IdBtn->setDefault(true);
readMPD7IdBtn->setCursor(Qt::PointingHandCursor);
ui->tableView->setIndexWidget(statusModel->index(statusModel->rowCount()-1,0),readMPD7IdBtn);
2025-06-28 17:19:00 +00:00
ui->tableView->setSpan(statusModel->rowCount()-1,0,1,2);
aItemList.clear();
aItem = new QStandardItem("");
aItem->setEditable(false);
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("");
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("");
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
statusModel->insertRow(statusModel->rowCount(),aItemList);
2025-07-05 07:43:44 +00:00
QPushButton *readPrmIdBtn = new QPushButton("读取PRM编号");
connect(readPrmIdBtn,SIGNAL(clicked()),this,SLOT(readPrmIdHandle()),Qt::QueuedConnection);
readPrmIdBtn->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Preferred);
readPrmIdBtn->setFont(font);
readPrmIdBtn->setDefault(true);
readPrmIdBtn->setCursor(Qt::PointingHandCursor);
ui->tableView->setIndexWidget(statusModel->index(statusModel->rowCount()-1,0),readPrmIdBtn);
2025-06-28 17:19:00 +00:00
ui->tableView->setSpan(statusModel->rowCount()-1,0,1,2);
aItemList.clear();
aItem = new QStandardItem("");
aItem->setEditable(false);
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("");
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("");
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
statusModel->insertRow(statusModel->rowCount(),aItemList);
QPushButton *readMPD7DateBtn = new QPushButton("读取MPD007有效期");
2025-07-05 07:43:44 +00:00
connect(readMPD7DateBtn,SIGNAL(clicked()),this,SLOT(readMPD7DateHandle()),Qt::QueuedConnection);
2025-06-28 17:19:00 +00:00
readMPD7DateBtn->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Preferred);
readMPD7DateBtn->setFont(font);
readMPD7DateBtn->setDefault(true);
2025-07-05 07:43:44 +00:00
readMPD7DateBtn->setCursor(Qt::PointingHandCursor);
2025-06-28 17:19:00 +00:00
ui->tableView->setIndexWidget(statusModel->index(statusModel->rowCount()-1,0),readMPD7DateBtn);
ui->tableView->setSpan(statusModel->rowCount()-1,0,1,2);
aItemList.clear();
aItem = new QStandardItem("");
aItem->setEditable(false);
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("");
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("");
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
statusModel->insertRow(statusModel->rowCount(),aItemList);
QPushButton *readPrmDateBtn = new QPushButton("读取PRM有效期");
2025-07-05 07:43:44 +00:00
connect(readPrmDateBtn,SIGNAL(clicked()),this,SLOT(readPrmDateHandle()),Qt::QueuedConnection);
2025-06-28 17:19:00 +00:00
readPrmDateBtn->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Preferred);
readPrmDateBtn->setFont(font);
readPrmDateBtn->setDefault(true);
2025-07-05 07:43:44 +00:00
readPrmDateBtn->setCursor(Qt::PointingHandCursor);
2025-06-28 17:19:00 +00:00
ui->tableView->setIndexWidget(statusModel->index(statusModel->rowCount()-1,0),readPrmDateBtn);
ui->tableView->setSpan(statusModel->rowCount()-1,0,1,2);
//多一行空白行合并,使该行变宽
aItemList.clear();
aItem = new QStandardItem("");
aItem->setEditable(false);
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("");
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("");
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
statusModel->insertRow(statusModel->rowCount(),aItemList);
ui->tableView->setSpan(statusModel->rowCount()-2,0,2,2);
ui->tableView->setSpan(statusModel->rowCount()-2,2,2,1);
aItemList.clear();
aItem = new QStandardItem("");
aItem->setEditable(false);
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("");
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("");
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
statusModel->insertRow(statusModel->rowCount(),aItemList);
QPushButton *readRdSnBtn = new QPushButton("读取RDSS北斗序列号");
2025-07-05 07:43:44 +00:00
connect(readRdSnBtn,SIGNAL(clicked()),this,SLOT(readRdSnHandle()),Qt::QueuedConnection);
2025-06-28 17:19:00 +00:00
readRdSnBtn->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Preferred);
readRdSnBtn->setFont(font);
readRdSnBtn->setDefault(true);
2025-07-05 07:43:44 +00:00
readRdSnBtn->setCursor(Qt::PointingHandCursor);
2025-06-28 17:19:00 +00:00
ui->tableView->setIndexWidget(statusModel->index(statusModel->rowCount()-1,0),readRdSnBtn);
ui->tableView->setSpan(statusModel->rowCount()-1,0,1,2);
aItemList.clear();
aItem = new QStandardItem("");
aItem->setEditable(false);
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("北斗ID号");
aItem->setFont(font);
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("");
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
statusModel->insertRow(statusModel->rowCount(),aItemList);
QPushButton *readIdBtn = new QPushButton("读取北斗ID号");
2025-07-05 07:43:44 +00:00
connect(readIdBtn,SIGNAL(clicked()),this,SLOT(readRdSnHandle()),Qt::QueuedConnection);
2025-06-28 17:19:00 +00:00
readIdBtn->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Preferred);
readIdBtn->setFont(font);
readIdBtn->setDefault(true);
2025-07-05 07:43:44 +00:00
readIdBtn->setCursor(Qt::PointingHandCursor);
2025-06-28 17:19:00 +00:00
ui->tableView->setIndexWidget(statusModel->index(statusModel->rowCount()-1,0),readIdBtn);
aItemList.clear();
aItem = new QStandardItem("");
aItem->setEditable(false);
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("服务频度");
aItem->setFont(font);
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("");
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
statusModel->insertRow(statusModel->rowCount(),aItemList);
aItemList.clear();
aItem = new QStandardItem("");
aItem->setEditable(false);
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("通信等级");
aItem->setFont(font);
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("");
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
statusModel->insertRow(statusModel->rowCount(),aItemList);
aItemList.clear();
aItem = new QStandardItem("");
aItem->setEditable(false);
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("通播地址");
aItem->setFont(font);
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("");
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
statusModel->insertRow(statusModel->rowCount(),aItemList);
aItemList.clear();
aItem = new QStandardItem("");
aItem->setEditable(false);
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("保密标志");
aItem->setFont(font);
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
aItem = new QStandardItem("");
aItem->setTextAlignment(Qt::AlignCenter);
aItemList.append(aItem);
statusModel->insertRow(statusModel->rowCount(),aItemList);
ui->tableView->setSpan(statusModel->rowCount()-5,0,5,1);
}
StatusTestWin::~StatusTestWin()
{
delete ui;
}
2025-07-05 07:43:44 +00:00
void StatusTestWin::readRnSnHandle()
{
statusModel->item(0,2)->setText("");
QString cmd = "$CCRMO,SBX,2,0*37\r\n";
emit writeDataSignal(cmd.toLatin1());
}
void StatusTestWin::readRdSnHandle()
{
for(int i=7;i<=12;i++){
statusModel->item(i,2)->setText("");
}
QString cmd = "$CCICA,0,0*4B\r\n";
emit writeDataSignal(cmd.toLatin1());
}
void StatusTestWin::readMPD7IdHandle()
{
statusModel->item(2,2)->setText("");
QString cmd = "$CCIID*44\r\n";
emit writeDataSignal(cmd.toLatin1());
}
void StatusTestWin::readPrmIdHandle()
{
statusModel->item(3,2)->setText("");
QString cmd = "$CCPID*5D\r\n";
emit writeDataSignal(cmd.toLatin1());
}
void StatusTestWin::readMPD7DateHandle()
{
statusModel->item(4,2)->setText("");
QString cmd = "$CCRMO,ICM,2,1*38\r\n";
emit writeDataSignal(cmd.toLatin1());
}
void StatusTestWin::readPrmDateHandle()
{
statusModel->item(5,2)->setText("");
QString cmd = "$CCRMO,PMU,2,1*37\r\n";
emit writeDataSignal(cmd.toLatin1());
}
void StatusTestWin::recvSbxHandle(const QString &cmd)
{
QStringList paras = extractParaList(cmd);
if(paras.size()==7){
QString sn = paras[5];
statusModel->item(0,2)->setText(sn);
}
}
void StatusTestWin::recvIciHandle(const QString &cmd)
{
QStringList paras = extractParaList(cmd);
if(paras.size()==8){
QString id = paras[0];
QString sn = paras[1];
QString brocast = paras[2];
QString freq = paras[4];
QString level = paras[5];
QString encMark = paras[6];
statusModel->item(7,2)->setText(sn);
statusModel->item(8,2)->setText(id);
statusModel->item(9,2)->setText(freq);
statusModel->item(10,2)->setText(level);
statusModel->item(11,2)->setText(brocast);
if(encMark=="E"){
statusModel->item(12,2)->setText("加密");
}else if(encMark=="N"){
statusModel->item(12,2)->setText("非密");
}else{
statusModel->item(12,2)->setText(encMark);
}
}
}
void StatusTestWin::recvPidHandle(const QString &cmd)
{
QStringList paras = extractParaList(cmd);
if(paras.size()==1){
QString pid = paras[0];
statusModel->item(3,2)->setText(pid);
}
}
void StatusTestWin::recvIidHandle(const QString &cmd)
{
QStringList paras = extractParaList(cmd);
if(paras.size()==1){
QString iid = paras[0];
statusModel->item(2,2)->setText(iid);
}
}
void StatusTestWin::recvIcmHandle(const QString &cmd)
{
QStringList paras = extractParaList(cmd);
if(paras.size()==1){
QString date = paras[0];
if(date.size()==6){
QString day = date.mid(0,2);
QString mon = date.mid(2,2);
QString year = date.mid(4,2);
statusModel->item(4,2)->setText(QString("%1年%2月%3日").arg(year,mon,day));
}else{
statusModel->item(4,2)->setText(date);
}
}
}
void StatusTestWin::recvPmuHandle(const QString &cmd)
{
QStringList paras = extractParaList(cmd);
if(paras.size()==3){
QString feq = paras[0];
QString startDate = paras[1];
QString endDate = paras[2];
QString feqStr;
if(feq=="3"){
feqStr = "B3";
}else if(feq=="1"){
feqStr = "B1";
}else{
feqStr = feq;
}
QString startDateStr,endDateStr;
if(startDate.size()==6){
QString day = startDate.mid(0,2);
QString mon = startDate.mid(2,2);
QString year = startDate.mid(4,2);
startDateStr = QString("%1年%2月%3日").arg(year,mon,day);
}else{
startDateStr = startDate;
}
if(endDate.size()==6){
QString day = endDate.mid(0,2);
QString mon = endDate.mid(2,2);
QString year = endDate.mid(4,2);
endDateStr = QString("%1年%2月%3日").arg(year,mon,day);
}else{
endDateStr = endDate;
}
QString tmp = QString("%1:%2——%3").arg(feqStr,startDateStr,endDateStr);
QString txt = statusModel->item(5,2)->text();
if(!txt.contains(tmp)){
if(!tmp.isEmpty()){
txt += "\n";
}
txt += tmp;
statusModel->item(5,2)->setText(txt);
}
}
}