#include "statusTestWin.h" #include "ui_statusTestWin.h" #include "utils.h" #include #include #include 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 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); aItemList.append(aItem); statusModel->insertRow(statusModel->rowCount(),aItemList); QPushButton *readRnSnBtn = new QPushButton("读取RNSS北斗序列号"); connect(readRnSnBtn,SIGNAL(clicked()),this,SLOT(readRnSnHandle()),Qt::QueuedConnection); readRnSnBtn->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Preferred); readRnSnBtn->setFont(font); readRnSnBtn->setDefault(true); readRnSnBtn->setCursor(Qt::PointingHandCursor); //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); readMPD9Btn->setCursor(Qt::PointingHandCursor); 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); 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); 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 *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); 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有效期"); connect(readMPD7DateBtn,SIGNAL(clicked()),this,SLOT(readMPD7DateHandle()),Qt::QueuedConnection); readMPD7DateBtn->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Preferred); readMPD7DateBtn->setFont(font); readMPD7DateBtn->setDefault(true); readMPD7DateBtn->setCursor(Qt::PointingHandCursor); 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有效期"); connect(readPrmDateBtn,SIGNAL(clicked()),this,SLOT(readPrmDateHandle()),Qt::QueuedConnection); readPrmDateBtn->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Preferred); readPrmDateBtn->setFont(font); readPrmDateBtn->setDefault(true); readPrmDateBtn->setCursor(Qt::PointingHandCursor); 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北斗序列号"); connect(readRdSnBtn,SIGNAL(clicked()),this,SLOT(readRdSnHandle()),Qt::QueuedConnection); readRdSnBtn->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Preferred); readRdSnBtn->setFont(font); readRdSnBtn->setDefault(true); readRdSnBtn->setCursor(Qt::PointingHandCursor); 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号"); connect(readIdBtn,SIGNAL(clicked()),this,SLOT(readRdSnHandle()),Qt::QueuedConnection); readIdBtn->setSizePolicy(QSizePolicy::Preferred,QSizePolicy::Preferred); readIdBtn->setFont(font); readIdBtn->setDefault(true); readIdBtn->setCursor(Qt::PointingHandCursor); 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; } 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); } } }