From b8d3691202e0eb3bebdd00c55208a8eb9ce3e5af Mon Sep 17 00:00:00 2001 From: caoyuhui <1152604503@qq.com> Date: Fri, 26 Jul 2024 16:19:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=89=E7=94=B5=E5=90=8A=E8=88=B1=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E4=BC=98=E5=8C=96=EF=BC=9B=E5=A2=9E=E5=8A=A0=E5=85=89?= =?UTF-8?q?=E7=94=B5=E5=90=8A=E8=88=B1=E9=81=A5=E6=B5=8B=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E8=A7=A3=E6=9E=90=E6=98=BE=E7=A4=BA=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Src/GDDC/gddcSet.cpp | 1 + Src/GDDC/gddcdlg.cpp | 646 +++++++++++++++++++++++++++++++++- Src/GDDC/gddcdlg.h | 34 +- Src/GDDC/gddcdlg.ui | 24 +- Src/GDDC/structDefineMyslef.h | 5 +- Src/include/FrameRecieve.h | 595 +++++++++++++++++++++++++++++++ Src/include/basetype.h | 364 +++++++++++++++++++ ffmpegvideodlg.cpp | 8 +- global.h | 2 - mainwindow.cpp | 51 +-- mainwindow.h | 2 +- mainwindow.ui | 72 ++-- res/Qss/qss.qss | 49 +++ 13 files changed, 1754 insertions(+), 99 deletions(-) create mode 100644 Src/include/FrameRecieve.h create mode 100644 Src/include/basetype.h diff --git a/Src/GDDC/gddcSet.cpp b/Src/GDDC/gddcSet.cpp index 9761b22..e190d73 100644 --- a/Src/GDDC/gddcSet.cpp +++ b/Src/GDDC/gddcSet.cpp @@ -23,6 +23,7 @@ GDDCSet::~GDDCSet() void GDDCSet::initWindow() { this->setWindowTitle("通信设置"); + setAttribute(Qt::WA_QuitOnClose,false); } void GDDCSet::initUDPSocket() { diff --git a/Src/GDDC/gddcdlg.cpp b/Src/GDDC/gddcdlg.cpp index 2a80bdd..6c3655a 100644 --- a/Src/GDDC/gddcdlg.cpp +++ b/Src/GDDC/gddcdlg.cpp @@ -7,7 +7,6 @@ #include #include - #define CONFIG_PATH "config.ini" @@ -35,7 +34,7 @@ GDDCdlg::~GDDCdlg() { //关闭定时器 GDDCControlTimer->stop(); - + delete GDDCControlTimer; //停止所有通信 stopConnectURL1(); stopConnectURL2(); @@ -43,6 +42,8 @@ GDDCdlg::~GDDCdlg() stopConnectUDPCtrl(); stopConnectTCPCtrl(); + delete m_DlgGDDCSet; + delete m_tableModel; delete ui; } @@ -159,6 +160,86 @@ void GDDCdlg::initParam() connectFlag.resize(10,false); ui->pushButShowCmdArea->setIcon(QIcon(":/res/down.png")); + + m_tableModel = new QStandardItemModel(); + m_tableModel->setHorizontalHeaderItem(0,new QStandardItem("类型")); + m_tableModel->setHorizontalHeaderItem(1,new QStandardItem("详细信息")); + // m_tableModel->setVerticalHeaderItem(0,new QStandardItem("序号")); + + ui->tableViewShowIState->setModel(m_tableModel); + //栅格显示或隐藏 + ui->tableViewShowIState->setShowGrid(true); + // 固定表格宽度不可扩展,不可手动调整宽度 + ui->tableViewShowIState->horizontalHeader()->setSectionResizeMode(QHeaderView::Fixed); + // 表格宽度随内容自动扩展 + //ui->tableViewShowIState->horizontalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); + // 表格宽度自动根据UI进行计算,不可手动调整宽度 + //ui->tableViewShowIState->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); + + // 固定表格高度不可扩展,不可手动调整高度 + ui->tableViewShowIState->verticalHeader()->setSectionResizeMode(QHeaderView::Fixed); + // 表格高度随内容自动扩展 + //ui->tableViewShowIState->verticalHeader()->setSectionResizeMode(QHeaderView::ResizeToContents); + // 表格高度自动根据UI进行计算,不可手动调整高度 + //ui->tableViewShowIState->verticalHeader()->setSectionResizeMode(QHeaderView::Stretch); + + ui->tableViewShowIState->setColumnWidth(0,100); + ui->tableViewShowIState->setColumnWidth(1,100); + + m_tableModel->setItem(0,0,new QStandardItem("跟踪源类型")); + m_tableModel->setItem(1,0,new QStandardItem("姿态方位角")); + m_tableModel->setItem(2,0,new QStandardItem("姿态俯仰角")); + m_tableModel->setItem(3,0,new QStandardItem("姿态横滚角")); + m_tableModel->setItem(4,0,new QStandardItem("中心点宽坐标")); + m_tableModel->setItem(5,0,new QStandardItem("中心点高坐标")); + m_tableModel->setItem(6,0,new QStandardItem("可见光焦距")); + m_tableModel->setItem(7,0,new QStandardItem("可见光视场角")); + m_tableModel->setItem(8,0,new QStandardItem("红外焦距")); + m_tableModel->setItem(9,0,new QStandardItem("红外视场角")); + m_tableModel->setItem(10,0,new QStandardItem("激光测距值")); + m_tableModel->setItem(11,0,new QStandardItem("命令反馈")); + m_tableModel->setItem(12,0,new QStandardItem("视频输出类型")); + m_tableModel->setItem(13,0,new QStandardItem("红外电子变倍")); + m_tableModel->setItem(14,0,new QStandardItem("可见光电子放大")); + m_tableModel->setItem(15,0,new QStandardItem("吊舱框架方位角")); + m_tableModel->setItem(16,0,new QStandardItem("吊舱框架俯仰角")); + m_tableModel->setItem(17,0,new QStandardItem("吊舱框架横滚角")); + m_tableModel->setItem(18,0,new QStandardItem("TF剩余百分比")); + m_tableModel->setItem(19,0,new QStandardItem("TF卡总容量")); + m_tableModel->setItem(20,0,new QStandardItem("TF插卡状态")); + m_tableModel->setItem(21,0,new QStandardItem("拍照")); + m_tableModel->setItem(22,0,new QStandardItem("视频抓图")); + m_tableModel->setItem(23,0,new QStandardItem("连拍")); + m_tableModel->setItem(24,0,new QStandardItem("视频连续抓图")); + m_tableModel->setItem(25,0,new QStandardItem("录像状态")); + m_tableModel->setItem(26,0,new QStandardItem("文件命名")); + m_tableModel->setItem(27,0,new QStandardItem("当前图像反馈")); + m_tableModel->setItem(28,0,new QStandardItem("载荷类型")); + m_tableModel->setItem(29,0,new QStandardItem("红外机芯")); + m_tableModel->setItem(30,0,new QStandardItem("可见光机芯")); + m_tableModel->setItem(31,0,new QStandardItem("陀螺仪")); + m_tableModel->setItem(32,0,new QStandardItem("角度传感器")); + m_tableModel->setItem(33,0,new QStandardItem("电机")); + m_tableModel->setItem(34,0,new QStandardItem("压缩")); + m_tableModel->setItem(35,0,new QStandardItem("综合控制")); + m_tableModel->setItem(36,0,new QStandardItem("吊舱准备状态")); + m_tableModel->setItem(37,0,new QStandardItem("红外伪彩")); + m_tableModel->setItem(38,0,new QStandardItem("红外图像增强")); + m_tableModel->setItem(39,0,new QStandardItem("当前载荷版本")); + m_tableModel->setItem(40,0,new QStandardItem("目标定位经度")); + m_tableModel->setItem(41,0,new QStandardItem("目标定位纬度")); + m_tableModel->setItem(42,0,new QStandardItem("目标海拔高度")); + m_tableModel->setItem(43,0,new QStandardItem("姿态指示完成反馈")); + m_tableModel->setItem(44,0,new QStandardItem("目标宽")); + m_tableModel->setItem(45,0,new QStandardItem("目标高")); + m_tableModel->setItem(46,0,new QStandardItem("目标类型")); + m_tableModel->setItem(47,0,new QStandardItem("跟踪状态")); + m_tableModel->setItem(48,0,new QStandardItem("最高温")); + m_tableModel->setItem(49,0,new QStandardItem("配置保存")); + m_tableModel->setItem(50,0,new QStandardItem("伺服状态")); + m_tableModel->setItem(51,0,new QStandardItem("超温报警")); + m_tableModel->setItem(52,0,new QStandardItem("红点指示")); + //ui->tableViewShowIState->horizontalHeader()->setStyleSheet("QHeaderView::section{background:rgb(255,228,225);color: black;}"); } @@ -287,16 +368,16 @@ void GDDCdlg::mouseMoveEvent(QMouseEvent *event) { qDebug() << this->geometry().x(); qDebug() << this->geometry().y(); - QPoint sPoint1=event->globalPos(); + QPointF sPoint1=event->globalPosition(); //qDebug()<<"相对于屏幕坐标1:"<<"("<mapFromGlobal(sPoint2); + QPointF windowPoint=this->mapFromGlobal(sPoint2); //qDebug()<<"相对于窗口坐标:"<<"("<WgtffmpegVideo->mapFromGlobal(sPoint1); + QPointF widgetPoint=ui->WgtffmpegVideo->mapFromGlobal(sPoint1); //qDebug()<<"相对于控件坐标:"<<"("<width()); //qDebug()<<"宽度,高度:"<tabWidget->isVisible()){cmdAreaHeight = 250;} else{cmdAreaHeight = 0;} ui->tabWidget->setGeometry(0,GDDCPageHeight-cmdAreaHeight,(int)cmdAreaWidth,(int)cmdAreaHeight); - /*******视频区域位置和大小设置********/ - double VideoAreaHeight = GDDCPageHeight-cmdAreaHeight; //视频区域高度 - double VideoAreaWidth = GDDCPageWidth; //视频区域宽度 + /*********状态区位置和大小设置***********/ + double stateAreaHeight = GDDCPageHeight; + double stateAreaWidth; + if(ui->tableViewShowIState->isVisible()){stateAreaWidth = 250;} + else{stateAreaWidth = 0;} + ui->tableViewShowIState->setGeometry(GDDCPageWidth-stateAreaWidth,0,stateAreaWidth,stateAreaHeight); + //ui->listViewShowCmdArea->lower(); + + /*******视频区位置和大小设置********/ + double VideoAreaHeight = GDDCPageHeight-cmdAreaHeight; //视频区高度 + double VideoAreaWidth = GDDCPageWidth-stateAreaWidth; //视频区宽度 //高度值相对比较大 if(VideoAreaHeight*16>VideoAreaWidth*9) { - double setVideoAreaWidth = VideoAreaWidth;//等于吊舱页面宽度 + double setVideoAreaWidth = VideoAreaWidth;//等于吊舱页面宽度-状态区高度 double setVideoAreaHeight = VideoAreaWidth*9/16; - ui->WgtffmpegVideo->setGeometry(0,0.5*(GDDCPageHeight-cmdAreaHeight-setVideoAreaHeight),(int)setVideoAreaWidth,(int)setVideoAreaHeight); + ui->WgtffmpegVideo->setGeometry(0,0.5*(VideoAreaHeight-setVideoAreaHeight),(int)setVideoAreaWidth,(int)setVideoAreaHeight); } //宽度值相对比较大 else { - double setVideoAreaHeight = VideoAreaHeight;//等于 吊舱页面高度-控制指令高度 + double setVideoAreaHeight = VideoAreaHeight;//等于吊舱页面高度-控制区高度 double setVideoAreaWidth = VideoAreaHeight*16/9; - ui->WgtffmpegVideo->setGeometry(0.5*(GDDCPageWidth-setVideoAreaWidth),0,(int)setVideoAreaWidth,(int)setVideoAreaHeight); + ui->WgtffmpegVideo->setGeometry(0.5*(VideoAreaWidth-setVideoAreaWidth),0,(int)setVideoAreaWidth,(int)setVideoAreaHeight); } /**************设置按钮****************/ - ui->pushButtonSet->setGeometry(GDDCPageWidth-40,10,40,40); + ui->pushButtonSet->setGeometry(GDDCPageWidth-stateAreaWidth-45,0,40,40); /**********控制指令区显示隐藏按钮********/ - ui->pushButShowCmdArea->setGeometry(GDDCPageWidth*0.5,GDDCPageHeight-cmdAreaHeight-20,20,20); + ui->pushButShowCmdArea->setGeometry((GDDCPageWidth-200)*0.5,GDDCPageHeight-cmdAreaHeight-20,40,20); ui->pushButShowCmdArea->raise(); + } //定时器处理 @@ -1663,6 +1753,7 @@ void GDDCdlg::stopConnectUDPCtrl() if(connectFlag[3]) { udpSocket->abort();//关闭套接字,并丢缓冲区中的所有待处理数据 + delete udpSocket; connectFlag[3] = false; } } @@ -1687,6 +1778,7 @@ void GDDCdlg::stopConnectTCPCtrl() void GDDCdlg::on_pushButtonSet_clicked() { m_DlgGDDCSet->show(); + m_DlgGDDCSet->activateWindow(); } //udp数据接收 @@ -1699,15 +1791,534 @@ void GDDCdlg::UDPMessageReceive() udpSocket->readDatagram(data.data(),data.size(),&addr,&port); //const char* chardata= data.constData(); qDebug()<setItem(28,1,new QStandardItem(str)); + /*****自检结果*****/ + //红外机芯 + if((data.at(3)&'\x01')==0x01){ + str = "正常"; + } + else{ + str = "异常"; + } + m_tableModel->setItem(29,1,new QStandardItem(str)); + //可见光机芯 + if((data.at(3)>>1)&'\x01'){ + str = "正常"; + } + else{ + str = "异常"; + } + m_tableModel->setItem(30,1,new QStandardItem(str)); + //陀螺仪 + if((data.at(3)>>2)&'\x01'){ + str = "正常"; + } + else{ + str = "异常"; + } + m_tableModel->setItem(31,1,new QStandardItem(str)); + //角度传感器 + if((data.at(3)>>3)&'\x01'){ + str = "正常"; + } + else{ + str = "异常"; + } + m_tableModel->setItem(32,1,new QStandardItem(str)); + //驱动板-电机 + if((data.at(3)>>4)&'\x01'){ + str = "正常"; + } + else{ + str = "异常"; + } + m_tableModel->setItem(33,1,new QStandardItem(str)); + //压缩存储 + if((data.at(3)>>5)&'\x01'){ + str = "正常"; + } + else{ + str = "异常"; + } + m_tableModel->setItem(34,1,new QStandardItem(str)); + //综合处理 + if((data.at(3)>>6)&'\x01'){ + str = "正常"; + } + else{ + str = "异常"; + } + m_tableModel->setItem(35,1,new QStandardItem(str)); + //吊舱准备状态 + if((data.at(3)>>7)&'\x01'){ + str = "已准备好"; + } + else{ + str = "未准备好"; + } + m_tableModel->setItem(36,1,new QStandardItem(str)); + + /*****吊舱状态1******/ + //拍照 + if(data.at(4)&'\x01'){ + str = "正在拍照"; + } + else{ + str = "未拍照"; + } + m_tableModel->setItem(21,1,new QStandardItem(str)); + //视频抓图 + if((data.at(4)>>1)&'\x01'){ + str = "正在抓图"; + } + else{ + str = "未抓图"; + } + m_tableModel->setItem(22,1,new QStandardItem(str)); + //连拍 + if((data.at(4)>>2)&'\x01'){ + str = "正在连拍"; + } + else{ + str = "未连拍"; + } + m_tableModel->setItem(23,1,new QStandardItem(str)); + //视频连续抓图 + if((data.at(4)>>3)&'\x01'){ + str = "正在连续抓图"; + } + else{ + str = "未连续抓图"; + } + m_tableModel->setItem(24,1,new QStandardItem(str)); + //录像状态 + if((data.at(4)>>4)&'\x01'){ + str = "正在录像"; + } + else{ + str = "未开始录像"; + } + m_tableModel->setItem(25,1,new QStandardItem(str)); + //文件命名 + if((data.at(4)>>5)&'\x01'){ + str = "信息导入完毕"; + } + else{ + str = "未成功导入"; + } + m_tableModel->setItem(26,1,new QStandardItem(str)); + //TF插卡状态 + if((data.at(4)>>6)&'\x01'){ + str = "TF卡已插入"; + } + else{ + str = "TF卡未插入"; + } + m_tableModel->setItem(20,1,new QStandardItem(str)); + //超温报警状态 + if((data.at(4)>>7)&'\x01'){ + str = "超温"; + } + else{ + str = "未超温"; + } + m_tableModel->setItem(51,1,new QStandardItem(str)); + //红点指示 + if(data.at(5)&'\x01'){ + str = "开"; + } + else{ + str = "关"; + } + m_tableModel->setItem(52,1,new QStandardItem(str)); + //备用 + //红外图像增强 + str = QString::number((data.at(5)>>3)&'\x0F'); + m_tableModel->setItem(38,1,new QStandardItem(str)); + //备用 + //备用 + + /*****吊舱状态2******/ + //备用 + //跟踪源类型 + if(data.at(6)&'\x02'){ + str = "可见光"; + } + else{ + str = "红外"; + } + m_tableModel->setItem(0,1,new QStandardItem(str)); + //红外电子变倍 + str = QString::number(((data.at(6)>>2)&'\x7F')*0.1,'f', 1); + m_tableModel->setItem(13,1,new QStandardItem(str)); + //配置保存 + if(data.at(7)&'\x01'){ + str = "保存成功"; + } + else{ + str = "未保存"; + } + m_tableModel->setItem(49,1,new QStandardItem(str)); + //可见光电子变倍 + switch((data.at(7)>>1)&'\x03') + { + case 0: + str = "1x"; + break; + case 1: + str = "2x"; + break; + case 2: + str = "4x"; + break; + default: + str = "未知"; + break; + } + m_tableModel->setItem(14,1,new QStandardItem(str)); + //红外伪彩-色带 + switch((data.at(7)>>3)&'\x1F') + { + case 0x00: + str = "白热"; + break; + case 0x01: + str = "黑热"; + break; + case 0x02: + str = "彩虹"; + break; + case 0x03: + str = "高对比度彩虹"; + break; + case 0x04: + str = "铁红"; + break; + case 0x05: + str = "熔岩"; + break; + case 0x06: + str = "天空"; + break; + case 0x07: + str = "中灰"; + break; + case 0x08: + str = "灰红"; + break; + case 0x09: + str = "紫橙"; + break; + case 0x0b: + str = "警示红"; + break; + case 0x0c: + str = "冰火"; + break; + default: + str = "未知"; + break; + } + m_tableModel->setItem(37,1,new QStandardItem(str)); + + /*********伺服状态********/ + //红外伪彩-色带 + switch((data.at(7)>>3)&'\x1F') + { + case 0x00: + str = "待命"; + break; + case 0x01: + str = "关伺服"; + break; + case 0x02: + str = "手动"; + break; + case 0x03: + str = "收藏"; + break; + case 0x04: + str = "数引"; + break; + case 0x05: + str = "航向锁定"; + break; + case 0x06: + str = "扫描"; + break; + case 0x07: + str = "跟踪"; + break; + case 0x08: + str = "垂直下视"; + break; + case 0x09: + str = "陀螺自动较漂"; + break; + case 0xA0: + str = "陀螺温度较漂"; + break; + case 0x0B: + str = "航向随动"; + break; + case 0x0C: + str = "归中"; + break; + case 0x0D: + str = "手动陀螺较漂"; + break; + case 0x0F: + str = "姿态指引"; + break; + default: + str = ""; + break; + } + m_tableModel->setItem(50,1,new QStandardItem(str)); + //吊舱框架方位角 + dou = (data.at(9)+data.at(10)*256)*0.01; + str = QString::number(dou,'f', 2); + m_tableModel->setItem(15,1,new QStandardItem(str)); + //吊舱框架俯仰角 + dou = (data.at(11)+data.at(12)*256)*0.01; + str = QString::number(dou,'f', 2); + m_tableModel->setItem(16,1,new QStandardItem(str)); + //吊舱框架横滚角 + dou = (data.at(13)+data.at(14)*256)*0.01; + str = QString::number(dou,'f', 2); + m_tableModel->setItem(17,1,new QStandardItem(str)); + //当前载荷版本号 + str = QString::number(data.at(15)>>4) + "." + QString::number(data.at(15)&'\x07'); + m_tableModel->setItem(39,1,new QStandardItem(str)); + //红外视场角 + dou = ((UINT8)data[16]+(UINT16)data[17]*256)*0.1; + str = QString::number(dou,'f', 1); + m_tableModel->setItem(9,1,new QStandardItem(str)); + //TF使用容量百分比 + str = QString::number((UINT8)data.at(18))+"%"; + m_tableModel->setItem(18,1,new QStandardItem(str)); + //可见光视场角 + dou = ((UINT8)data.at(19)+(UINT16)data.at(20)*256)*0.1; + str = QString::number(dou,'f', 1); + m_tableModel->setItem(7,1,new QStandardItem(str)); + //TF卡总容量 + dou = ((UINT8)data.at(21)+(UINT16)data.at(22)*256)*0.1; + str = QString::number(dou,'f', 1); + m_tableModel->setItem(19,1,new QStandardItem(str)); + //红外焦距 + dou = ((UINT8)data.at(23)+(UINT16)data.at(24)*256)*0.1; + str = QString::number(dou,'f', 1); + m_tableModel->setItem(8,1,new QStandardItem(str)); + //可见光焦距-白光 + dou = ((UINT8)data.at(25)+(UINT16)data.at(26)*256)*0.1; + str = QString::number(dou,'f', 1); + m_tableModel->setItem(6,1,new QStandardItem(str)); + //激光测距距离 + str = QString::number((UINT8)data.at(27)+(UINT16)data.at(28)*256); + m_tableModel->setItem(10,1,new QStandardItem(str)); + //目标定位经度 + flo = m_uint32_to_float(data.at(29),data.at(30),data.at(31),data.at(32)); + str = QString::number(flo,'f',6); + m_tableModel->setItem(40,1,new QStandardItem(str)); + //目标定位纬度 + flo = m_uint32_to_float(data.at(33),data.at(34),data.at(35),data.at(36)); + str = QString::number(flo,'f',6); + m_tableModel->setItem(41,1,new QStandardItem(str)); + //目标海拔高度 + str = QString::number(data.at(37)+data.at(38)*256); + m_tableModel->setItem(42,1,new QStandardItem(str)); + //最高温-温度 + // dou = (data.at(39)+data.at(40)*256)*0.1; + // str = QString::number(dou,'f',1); + // m_tableModel->setItem(42,1,new QStandardItem(str)); + //吊舱姿态方位角 + dou = (data.at(41)+data.at(42)*256)*0.01; + str = QString::number(dou,'f',2); + m_tableModel->setItem(1,1,new QStandardItem(str)); + //吊舱姿态俯仰角 + dou = (data.at(43)+data.at(44)*256)*0.01; + str = QString::number(dou,'f',2); + m_tableModel->setItem(2,1,new QStandardItem(str)); + //吊舱姿态横滚角 + dou = (data.at(45)+data.at(46)*256)*0.01; + str = QString::number(dou,'f',2); + m_tableModel->setItem(3,1,new QStandardItem(str)); + //当前显示图像反馈 + switch (data.at(47)) { + case 0x00: + str = "红外"; + break; + case 0x01: + str = "可见光"; + break; + case 0x02: + str = "上下分屏"; + break; + case 0x03: + str = "可见光画中画"; + break; + case 0x04: + str = "红外画中画"; + break; + case 0x05: + str = "左右分屏"; + break; + default: + str = "未知"; + break; + } + m_tableModel->setItem(27,1,new QStandardItem(str)); + //接收到的命令字反馈 + str = QString::number(data.at(48)); + m_tableModel->setItem(11,1,new QStandardItem(str)); + //姿态指示完成反馈 + switch (data.at(49)) { + case 0x12: + str = "姿态指示中"; + break; + case 0x13: + str = "姿态指示完成"; + break; + default: + str = "------"; + break; + } + m_tableModel->setItem(43,1,new QStandardItem(str)); + //跟踪中心点宽方向坐标 + str = QString::number((UINT8)data[50]+(UINT16)data[51]*256); + m_tableModel->setItem(4,1,new QStandardItem(str)); + //跟踪中心点高方向坐标 + str = QString::number((UINT8)data[52]+(UINT16)data[53]*256); + m_tableModel->setItem(5,1,new QStandardItem(str)); + //目标宽 + str = QString::number((UINT8)data.at(54)+data.at(55)*256); + m_tableModel->setItem(44,1,new QStandardItem(str)); + //目标高 + str = QString::number((UINT8)data.at(56)+data.at(57)*256); + m_tableModel->setItem(45,1,new QStandardItem(str)); + //目标类型 + switch (data.at(58)) { + case 0x00: + if(data.at(6)&'\x02'){//可见光 + str = "人"; + } + else{//红外 + str = "车"; + } + break; + case 0x01: + if(data.at(6)&'\x02'){//可见光 + str = "小汽车"; + } + else{//红外 + str = "人"; + } + break; + case 0x02: + if(data.at(6)&'\x02'){//可见光 + str = "公交车"; + } + break; + case 0x03: + if(data.at(6)&'\x02'){//可见光 + str = "卡车"; + } + break; + default: + str = "未知"; + break; + } + m_tableModel->setItem(46,1,new QStandardItem(str)); + //跟踪状态 + switch (data.at(59)) { + case 0x00: + str = "空闲状态"; + break; + case 0x01: + str = "稳定跟踪"; + break; + case 0x02: + str = "记忆跟踪"; + break; + case 0x03: + str = "目标丢失"; + break; + case 0x05: + str = "截获状态"; + break; + default: + str = "未知"; + break; + } + m_tableModel->setItem(47,1,new QStandardItem(str)); + //最高温 + dou = (data.at(60)+data.at(61)*256)*0.1; + str = QString::number(dou,'f',1)+"℃"; + m_tableModel->setItem(48,1,new QStandardItem(str)); + // + } } +bool GDDCdlg::checkdata(QByteArray buffer,int length, int type) +{ + if(length!=64){ + return false; + } + if((buffer.at(0) != '\xFC')||(buffer.at(1) != '\x2C')||buffer.at(63) !='\xF0') + { + return false; + } + if(type==1) + { + //亦或校验 + // for(int i = 2;i<62;++i) + // { + // buffer.at(i)^buffer.at(i+1); + // } + } + else if (type==2) + { + //和校验 + } + + return true; + +} //控制页面隐藏与显示 void GDDCdlg::on_pushButShowCmdArea_clicked() { if(isCmdAreaShow) { ui->tabWidget->setVisible(false); + ui->tableViewShowIState->setVisible(false); isCmdAreaShow = false; resizeUI(); ui->pushButShowCmdArea->setIcon(QIcon(":/res/up.png")); @@ -1716,6 +2327,7 @@ void GDDCdlg::on_pushButShowCmdArea_clicked() else { ui->tabWidget->setVisible(true); + ui->tableViewShowIState->setVisible(true); isCmdAreaShow = true; resizeUI(); ui->pushButShowCmdArea->setIcon(QIcon(":/res/down.png")); diff --git a/Src/GDDC/gddcdlg.h b/Src/GDDC/gddcdlg.h index 2661f17..949e883 100644 --- a/Src/GDDC/gddcdlg.h +++ b/Src/GDDC/gddcdlg.h @@ -11,11 +11,12 @@ #include #include #include - #include "cffmpeg_decode.h" #include "Src/GDDC/gddcSet.h" #include +#include +#include #define cmdLength 44 namespace Ui { @@ -62,6 +63,7 @@ public: void mousePressEvent(QMouseEvent *event); //事件过滤器 void mouseMoveEvent(QMouseEvent *event); //事件过滤器 + QStandardItemModel *m_tableModel; void startConnectURL1(); void stopConnectURL1(); void startConnectURL2(); @@ -72,6 +74,12 @@ public: void stopConnectUDPCtrl(); void startConnectTCPCtrl(); void stopConnectTCPCtrl(); + /*数据校验 + * 数据 + * 数据长度 + * 校验方式 1亦或,2和校验 + */ + bool checkdata(QByteArray,int,int); public: bool pointSelectionTracking = false; //选点跟踪 bool param_pushButton_3_9; @@ -87,6 +95,30 @@ public slots: void startConnect(int); //开始连接 void stopConnect(int); //停止连接 void UDPMessageReceive(); //udp数据接收 +public: + typedef union + { + float float_value; + UINT8 uint8[4]; + }packet_uint32_to_float; + float m_uint32_to_float(UINT8 value4, UINT8 value3, UINT8 value2, UINT8 value1) + { + packet_uint32_to_float packet; + + UINT8 buf[4]; memset(buf,0x00,sizeof(buf)); + buf[0] = (UINT8)((value1) & 0xFF); + buf[1] = (UINT8)((value2) & 0xFF); + buf[2] = (UINT8)((value3) & 0xFF); + buf[3] = (UINT8)((value4) & 0xFF); + UINT32 uint32 = ((buf[0]<<24) & 0XFFFFFFFF) + ((buf[1]<<16) & 0XFFFFFF) + ((buf[2]<<8) & 0XFFFF) + buf[3]; + + for(UINT8 i = 0; i < 4; i++) + { + packet.uint8[i] = (UINT8)(uint32>>(i*8)); + } + //print("modbus_uint32_to_float uint32=%d, value1=%d; value2=%d; float_value = %f;",uint32,value1,value2,packet.float_value); + return packet.float_value; + } private slots: /*系统控制*/ void on_pushButton_11_pressed(); diff --git a/Src/GDDC/gddcdlg.ui b/Src/GDDC/gddcdlg.ui index 789f0b1..19fa1ca 100644 --- a/Src/GDDC/gddcdlg.ui +++ b/Src/GDDC/gddcdlg.ui @@ -145,7 +145,7 @@ 10 350 - 1201 + 1071 250 @@ -189,7 +189,7 @@ QTabWidget::Rounded - 0 + 2 Qt::ElideNone @@ -703,7 +703,7 @@ 510 - 0 + 10 121 191 @@ -929,7 +929,7 @@ 640 - 0 + 10 121 191 @@ -1027,7 +1027,7 @@ 920 - 0 + 10 120 211 @@ -1069,7 +1069,7 @@ 780 - 0 + 10 120 211 @@ -1167,7 +1167,7 @@ 380 - -1 + 10 120 191 @@ -2269,6 +2269,16 @@ font: 12pt "Microsoft YaHei UI"; + + + + 1060 + 120 + 256 + 192 + + + diff --git a/Src/GDDC/structDefineMyslef.h b/Src/GDDC/structDefineMyslef.h index ae4a7d9..51a85e7 100644 --- a/Src/GDDC/structDefineMyslef.h +++ b/Src/GDDC/structDefineMyslef.h @@ -1,7 +1,7 @@ #ifndef STRUCTDEFINEMYSLEF_H #define STRUCTDEFINEMYSLEF_H -#endif // STRUCTDEFINEMYSLEF_H + #include #include @@ -47,3 +47,6 @@ public: quint16 getRemotePort(){return remotePort;} QHostAddress getRemoteAddr(){return remoteAddr;} }; + + +#endif // STRUCTDEFINEMYSLEF_H diff --git a/Src/include/FrameRecieve.h b/Src/include/FrameRecieve.h new file mode 100644 index 0000000..b6984f6 --- /dev/null +++ b/Src/include/FrameRecieve.h @@ -0,0 +1,595 @@ +#ifndef __FRAME_RECIEVE_H +#define __FRAME_RECIEVE_H + +#include "framelib/basetype.h" + +#if _MSC_VER > 1000 +#pragma once +#endif // _MSC_VER > 1000 + +#include + +#define ROUND_INT8(v) ((INT8)((floor)(v+0.5))) +#define ROUND_UINT8(v) ((UINT8)((floor)(v+0.5))) +#define ROUND_INT16(v) ((INT16)((floor)(v+0.5))) +#define ROUND_UINT16(v) ((UINT16)((floor)(v+0.5))) +#define ROUND_INT32(v) ((INT32)((floor)(v+0.5))) +#define ROUND_UINT32(v) ((UINT32)((floor)(v+0.5))) + +const BYTE FLAG_PLAT = 0xE0; +const BYTE PLAT_Manual = 0x00 << 5; +const BYTE PLAT_Auto = 0x01 << 5; +const BYTE PLAT_Locking = 0x02 << 5; +const BYTE PLAT_Leading = 0x03 << 5; +const BYTE PLAT_Scaning = 0x04 << 5; +const BYTE PLAT_Reseting = 0x05 << 5; +const BYTE PLAT_Init = 0x06 << 5; + +const BYTE FLAG_TRACKER = 0x1C; +const BYTE TRACKER_Normal = 0x00 << 2; +const BYTE TRACKER_Error = 0x01 << 2; +const BYTE TRACKER_Lost = 0x02 << 2; +const BYTE TRACKER_Corr = 0x03 << 2; +const BYTE TRACKER_GBlack = 0x04 << 2; +const BYTE TRACKER_GWhite = 0x05 << 2; +const BYTE TRACKER_ShowFreeze = 0x06 << 2; +const BYTE TRACKER_Freeze = 0x07 << 2; + +const BYTE FLAG_LIFTER = 0x03; +const BYTE LIFTER_Top = 0x00; +const BYTE LIFTER_Bottom = 0x01; +const BYTE LIFTER_Uping = 0x02; +const BYTE LIFTER_Downing = 0x03; + +const BYTE FLAG_EO = 0xC0; +const BYTE EO_Working = 0x00 << 6; +const BYTE EO_Error = 0x01 << 6; +const BYTE EO_Heating = 0x02 << 6; +const BYTE EO_Heated = 0x03 << 6; + +const BYTE FLAG_PAYLOAD = 0x20; +const BYTE PAYLOAD_EO = 0x00 << 5; +const BYTE PAYLOAD_HW = 0x01 << 5; + +const BYTE FLAG_HW = 0x18; +const BYTE HW_Working = 0x00 << 3; +const BYTE HW_Error = 0x01 << 3; +const BYTE HW_Manual = 0x02 << 3; +const BYTE HW_Auto = 0x03 << 3; + +const BYTE FLAG_LASER = 0x07; +const BYTE LASER_Normal = 0x00; +const BYTE LASER_Error = 0x01; +const BYTE LASER_Close = 0x02; +const BYTE LASER_Standby = 0x03; +const BYTE LASER_On = 0x04; +const BYTE LASER_Off = 0x05; + +const double AngRatiode = 360.0 / 65535.0; +const double AngRatioen = 65535.0 / 360.0; + +typedef enum { ftFJu, //ɻƽ̨ЭУ + ftFJd, //ɻƽ̨ЭУ + ftEOu, //ȶƽ̨ЭУ + ftEOd, //ȶƽ̨ЭУ + ftCJu, //ЭУ + ftCJd, //ЭУ + ftQBu, //鱨ЭУ + ftQBd, //鱨ЭУ + ftCKd, //ЭУ + ftSFu, ftSFd, ftFKu, ftFKd, ftEOGCSu, ftEOSBu, ftTXd, ftTXd_8B, ftTXd_8B_SM, ftTXd_8B_SAR, //ͼ񸴽Э + ftEOU_8B, + ftMIMUu, //MIMUЭЭ + ftMIMUd, //MIMUЭЭ + ftGPSu, //GPSЭЭ + ftGPSd, //GPSЭЭ + ftBDu, //ЭЭ + ftBDd, //ЭЭ + ftPOWERu, //ɿؼ͵Դ֡ + ftPOWERd, //Դ͵ɿؼ֡ + ftOILu, //ɿؼ͵֡ + ftOILd, //͵ɿؼ֡ + ftMAGu, //ɿؼ͵̵֡ + ftMAGd, //̷͵ɿؼ֡ + ftGKu, //ɿؼ͵߶/ٴ֡ + ftGKd, //߶/ٴ͵ɿؼ֡ + ftNone //ԶУ +} TFrameType; + +inline double RoundMax(double v, double vmax) +{ + return fmod(v, vmax); + // while (v < 0) + // v += vmax; + // while (v > vmax) + // v -= vmax; + // return v; +} + +inline void ChangeFileNameExt(char *name, const char *ext) +{ + char *p = strrchr(name, '.'); + if(p) *(p+1) = 0; + strcat(name, ext); +} + +//ѭ +class CBufferLoop { +private: + int FSize; //С + int FStart; //Чͷ + int FEnd; //Чβ + int FLength; //Чݳ + BYTE* FBuffer; //ַ +protected: + INT16 Append(const unsigned char* Src, const UINT32 alen) + { + INT16 len = (alen > (UINT32) FSize) ? FSize : (INT16) alen; + assert(len > 0); + //ʣռ䲻Length + if ((len + FLength) >= FSize) + len = FSize - FLength; + if ((len + FEnd) >= FSize) { + //ݿ󲿿ռ䲻LengthݿƵ׵ַ + memcpy(FBuffer, FBuffer + FStart, FLength); + FStart = 0; + FEnd = FLength; + } + memcpy(FBuffer + FEnd, Src, len); + FEnd += len; + FLength += len; + return len; + } + void Drop(const UINT16 len) + { + assert(len > 0); + if (len > FLength) { + FStart = 0; + FEnd = 0; + FLength = 0; + } else { + FStart += len; + FLength -= len; + } + } + int Size(){return FSize;} + int Length(){return FLength;} +public: + CBufferLoop() : FSize(1000), FStart(0), FEnd(0), FLength(0), FBuffer(0) + { + FBuffer = new unsigned char[FSize]; + memset(FBuffer, 0, FSize); + }; + CBufferLoop(const CBufferLoop& abl) + : FSize(abl.FSize), FStart(abl.FStart), FEnd(abl.FEnd), + FLength(abl.FLength), FBuffer(0) + { + FBuffer = new unsigned char[FSize]; + memcpy(FBuffer, abl.FBuffer, FSize); + } + virtual ~CBufferLoop(){ + delete[] FBuffer; + FBuffer = 0; + } + CBufferLoop& operator=(const CBufferLoop& abl) + { + if (this == &abl) + return *this; // 17 + if (FBuffer) + delete[] FBuffer; + FSize = abl.FSize; + FStart = abl.FStart; + FEnd = abl.FEnd; + FLength = abl.FLength; + FBuffer = new unsigned char[FSize]; + memcpy(FBuffer, abl.FBuffer, FSize); + return *this; + } + BYTE* const Addr() {return FBuffer + FStart;} + void Reset() + { + memset(FBuffer, 0, FSize); + FStart = 0; + FEnd = 0; + FLength = 0; + } +}; + +class CSimpleCriticalSection { +private: + CRITICAL_SECTION FSection; +public: + CSimpleCriticalSection(){InitializeCriticalSection(&FSection);} + virtual ~CSimpleCriticalSection(){DeleteCriticalSection(&FSection);} + void Enter(){EnterCriticalSection(&FSection);} + void Leave(){LeaveCriticalSection(&FSection);} +}; + +//¼ص +class CFrameAbstract; +typedef void (CALLBACK *FLDropBYTECALLBACK)(CFrameAbstract* frm, UINT16 Count); +typedef void (CALLBACK *FLDropFrameCALLBACK)(CFrameAbstract* frm, UINT16 Count); +typedef void (CALLBACK *FLNotCheckCALLBACK)(CFrameAbstract* frm); +typedef void (CALLBACK *FLCheckCALLBACK)(CFrameAbstract* frm); + +//֡֡ +class CFrameAbstract : public CBufferLoop { +public: + CFrameAbstract() : + FrameLength(32), + HeadLength(2), + CheckLength(1), + CheckPos(31), + FrameType(ftNone), + bphrasing(FALSE), + bFileOpen(FALSE), + nFlushCount(0), + cs(new CSimpleCriticalSection()), + hFileOrg(NULL), + hFileCheck(NULL), + hFileNotCheck(NULL), + funcDropBYTE(NULL), + funcDropFrame(NULL), + funcNotCheck(NULL), + funcCheck(NULL), + CountBYTEAll(0), + CountBYTEDrop(0), + CountFrameAll(0), + CountFrameCheck(0), + CountFrameNotCheck(0), + CountFrameDrop(0), + funcDropBYTEParam(NULL), + funcDropFrameParam(NULL), + funcNotCheckParam(NULL), + funcCheckParam(NULL) + {}; + virtual ~CFrameAbstract(){ + funcDropBYTE = NULL; + funcDropFrame = NULL; + funcNotCheck = NULL; + funcCheck = NULL; + funcDropBYTEParam = NULL; + funcDropFrameParam = NULL; + funcNotCheckParam = NULL; + funcCheckParam = NULL; + while (TRUE == bphrasing){ + Sleep(100); + } + if(bFileOpen){ + fclose(hFileOrg); + fclose(hFileCheck); + fclose(hFileNotCheck); + bFileOpen = FALSE; + } + delete cs; + } + +protected: + UINT16 FrameLength; //֡ + UINT16 HeadLength; //֡ͷ + UINT16 CheckLength; //֡ڱУֽڵĸ + UINT16 CheckPos; //֡ڱУֽڵλ + TFrameType FrameType; //֡ʽ +public: + char Name[20]; + BYTE Head[12]; + + + TFrameType GetFrameType(){return FrameType;} + UINT16 GetFrameLength(){return FrameLength;} + UINT16 GetHeadLength(){return HeadLength;} +private: + BOOL bphrasing; + BOOL bFileOpen; + INT32 nFlushCount; + CSimpleCriticalSection* cs; + + char strModuleName[1024]; + char strAppPath[1024]; +public: + char strDataPath[1024]; +protected: + char strDataName[1024]; + FILE * hFileOrg; + FILE * hFileCheck; + FILE * hFileNotCheck; + + virtual BOOL FullFrame() + { + int HeaderPos, HeaderPos2; + HeaderPos = FindHead(0, Length() - HeadLength); + if (0 == HeaderPos){ + //֡ͷǰ + if (OnCheck()){ + DoCheck(); + } + else //Уûͨ + { + HeaderPos2 = FindHead(HeadLength, Length() - HeadLength); + if ((HeaderPos2 >= 0) && (HeaderPos2 < FrameLength)) + { + DoDropFrame((UINT16) HeaderPos2); + } + else if (HeaderPos2 < 0) + { + if (Length() <= FrameLength + (HeadLength - 1)) + { + if (HeadLength == 1) + DoNotCheck(); + else + { + BYTE* p = Addr(); + if (p[FrameLength - (HeadLength - 1)] != Head[0]) + DoNotCheck(); + else + return TRUE; + } + } else + DoNotCheck(); + } + else + { + DoNotCheck(); + } + } + } else if (HeaderPos < 0) { + //ûҵ֡ͷ + DoDropBYTE((UINT16) (FrameLength - HeadLength)); + } else { + //֡ͷǰ + DoDropBYTE((UINT16) HeaderPos); + } + return FALSE; + } + void DoCheck() + { + assert(FrameLength > 0); + ++CountFrameAll; + ++CountFrameCheck; + OnDataCheck(); + Drop(FrameLength); + } + void DoNotCheck() + { + assert(FrameLength > 0); + ++CountFrameAll; + CountBYTEDrop += FrameLength; + ++CountFrameNotCheck; + OnDataNotCheck(); + Drop(FrameLength); + } + void DoDropFrame(const UINT16 Count) + { + assert(Count > 0); + ++CountFrameAll; + CountBYTEDrop += Count; + ++CountFrameDrop; + OnDataDropFrame(Count); + Drop(Count); + } + void DoDropBYTE(const UINT16 Count) + { + assert(Count > 0); + CountBYTEDrop += Count; + OnDataDropBYTE(Count); + Drop(Count); + } + int FindHead(int Start, const int Length) + { + assert((Start >= 0) && (Length > 0)); + BYTE* p = Addr() + Start; + while (Start < Length) { + if (memcmp(p, Head, HeadLength) == 0) + return Start; + ++p; + ++Start; + } + return -1; + } + virtual BOOL OnCheck() //֡У麯 + { + BYTE* p = Addr(); + struCHECK ck=CheckCRC(p); + if (1 == CheckLength) + { + return (ck.C0== p[CheckPos]) ? TRUE : FALSE; + } + else if (2 == CheckLength) + { + return ((p[CheckPos]==ck.C0)&&(p[CheckPos+1]==ck.C1)); + } + else + { + return false; + } + } + +protected: + FLDropBYTECALLBACK funcDropBYTE; + FLDropFrameCALLBACK funcDropFrame; + FLNotCheckCALLBACK funcNotCheck; + FLCheckCALLBACK funcCheck; + + INT32 CountBYTEAll; //յȫֽ + INT32 CountBYTEDrop; //ֽ + INT32 CountFrameAll; //ȫ֡ + INT32 CountFrameCheck; //Ч֡ + INT32 CountFrameNotCheck; //У֡ + INT32 CountFrameDrop; //֡ + virtual void OnDataDropBYTE(const UINT16 Count) //Чֽڶ¼ûбƴ + { + if (funcDropBYTE != NULL) funcDropBYTE(this, Count); + } + virtual void OnDataDropFrame(const UINT16 Count) //֡¼ûбƴ + { + if (funcDropFrame != NULL) funcDropFrame(this, Count); + } + virtual void OnDataNotCheck() //֡У¼ûбƴ + { + //Decode(); + if (funcNotCheck != NULL) funcNotCheck(this); + //Distribute(); + //Show(); + if(bFileOpen) fwrite(Addr(), FrameLength, 1, hFileNotCheck); + } + virtual void OnDataCheck() //Ч֡¼ûбƴ + { + Decode(); + if (funcCheck != NULL) funcCheck(this); + Distribute(); + Show(); + if(bFileOpen) fwrite(Addr(), FrameLength, 1, hFileCheck); + } + +public: + UINT32 funcDropBYTEParam; + UINT32 funcDropFrameParam; + UINT32 funcNotCheckParam; + UINT32 funcCheckParam; + void SetDropBYTECallback(FLDropBYTECALLBACK fun, UINT32 Param = 0){ funcDropBYTE = fun; funcDropBYTEParam = Param;} + void SetDropFrameCallback(FLDropFrameCALLBACK fun, UINT32 Param = 0){ funcDropFrame = fun; funcDropFrameParam = Param;} + void SetNotCheckCallback(FLNotCheckCALLBACK fun, UINT32 Param = 0){ funcNotCheck = fun; funcNotCheckParam = Param;} + void SetCheckCallback(FLCheckCALLBACK fun, UINT32 Param = 0){ funcCheck = fun; funcCheckParam = Param;} + void SetSaveStatus(BOOL IsSave, const char *name = NULL) + { + if(IsSave){ + GetModuleFileName(GetModuleHandle(NULL), strModuleName, 1024); + char *p = strrchr(strModuleName, '\\'); + if(p) strncpy(strAppPath, strModuleName, p - strModuleName); + else strcpy(strAppPath, strModuleName); + + time_t ltime; + struct tm *t; + time( <ime ); + t = localtime( <ime ); + + sprintf(strDataPath, "%s\\RecordOrg-%04d%02d%02d", strAppPath, t->tm_year, t->tm_mon, t->tm_mday); + char temp[1024]; + sprintf(temp, "%04d%02d%02d %02d%02d%02d", t->tm_year + 1900, t->tm_mon, t->tm_mday, t->tm_hour, t->tm_min, t->tm_sec); + CreateDirectory((LPCSTR)strDataPath, NULL); + + if(name == NULL){ + sprintf(strDataName, "%s\\%s-%s.dat", strDataPath, temp, Name); + } + else{ + sprintf(strDataName, "%s\\%s-%s.dat", strDataPath, temp, name); + } + + if((hFileOrg = fopen(strDataName, "wb")) != NULL){ + strcpy(temp, strDataName); + ChangeFileNameExt(temp,"chk"); + if((hFileCheck = fopen(temp, "wb")) != NULL){ + strcpy(temp, strDataName); + ChangeFileNameExt(temp,"err"); + if((hFileNotCheck = fopen(temp, "wb")) != NULL){ + bFileOpen = TRUE; + } + else{ + fclose(hFileCheck); + fclose(hFileOrg); + } + bFileOpen = TRUE; + } + else{ + fclose(hFileOrg); + } + } + } + else{ + if(bFileOpen){ + fclose(hFileOrg); + fclose(hFileCheck); + fclose(hFileNotCheck); + bFileOpen = FALSE; + } + } + } + + void ResetCount() + { + //ڼ + CountBYTEAll = 0L; + CountBYTEDrop = 0L; + CountFrameAll = 0L; + CountFrameCheck = 0L; + CountFrameNotCheck = 0L; + CountFrameDrop = 0L; + } + void Phrase(const BYTE* Src, const UINT32 Count) + { + cs->Enter(); + int ReadCount; + UINT32 LeftCount = Count; + const BYTE* psrc = Src; + bphrasing = TRUE; + while (LeftCount > 0) + { + ReadCount = Append(psrc, LeftCount); + psrc += ReadCount; + LeftCount -= ReadCount; + CountBYTEAll += ReadCount; + while (Length() >= FrameLength) + if (FullFrame()) + break; + } + try{ + if(bFileOpen) + { + fwrite(Src, Count, 1, hFileOrg); + if((CountBYTEAll - nFlushCount) > 40960) + { + fflush(hFileOrg); + fflush(hFileCheck); + fflush(hFileNotCheck); + nFlushCount = CountBYTEAll; + } + } + } + catch (...) + { + cs->Leave(); + bphrasing = FALSE; + } + cs->Leave(); + bphrasing = FALSE; + } + INT32 GetCountBYTEAll(){return CountBYTEAll;} + INT32 GetCountBYTEDrop(){return CountBYTEDrop;} + INT32 GetCountFrameAll(){return CountFrameAll;} + INT32 GetCountFrameCheck(){return CountFrameCheck;} + INT32 GetCountFrameNotCheck(){return CountFrameNotCheck;} + INT32 GetCountFrameDrop(){return CountFrameDrop;} + //output +protected: + virtual void FrameCrc(BYTE* p) + { + struCHECK ck=CheckCRC(p); + if (CheckLength==1) + { + p[CheckPos]=ck.C0; + } + if (CheckLength==2) + { + p[CheckPos] = ck.C0; + p[CheckPos+1]=ck.C1; + } + } +public: + virtual BYTE* SendPrepare() + { + BYTE* po; + po = Addr(); + Encode(); + FrameCrc(po); + return(po); + } + virtual struCHECK CheckCRC(BYTE* const p) = 0; +protected: + virtual void Decode(){} + virtual void Distribute(){} + virtual void Encode(){} +public: + virtual void Show(){} +}; + +#endif // !defined(AFX_FRAMERECIEVE_H__79D92644_4FC6_49FB_A28B_59EF7305C25A__INCLUDED_) diff --git a/Src/include/basetype.h b/Src/include/basetype.h new file mode 100644 index 0000000..7faba6f --- /dev/null +++ b/Src/include/basetype.h @@ -0,0 +1,364 @@ +#ifndef _BASE_TYPE_H_ +#define _BASE_TYPE_H_ + +#define __WIN_32_VC__ +//#define __DOS_16_BC__ +//#define __WIN_32_BCB__ + +#ifdef __WIN_32_VC__ +// #include +#include +#include +#include +#include +#include +#endif + +#ifdef __WIN_32_BCB__ +#include +#endif + +#ifdef __WIN_32_BCB__ +typedef unsigned __int8 BYTE; +typedef unsigned __int8 UINT8; +typedef unsigned __int16 UINT16; +typedef unsigned __int32 UINT32; +typedef __int8 INT8; +typedef __int16 INT16; +typedef __int32 INT32; +#endif + +#ifdef __DOS_16_BC__ +typedef unsigned char BYTE; +typedef unsigned char UINT8; +typedef unsigned int UINT16; +typedef unsigned long UINT32; +typedef char INT8; +typedef int INT16; +typedef long INT32; +#endif + +#ifdef __DJGPP__ +typedef unsigned char BYTE; +typedef unsigned char UINT8; +typedef unsigned int UINT16; +typedef unsigned long UINT32; +typedef char INT8; +typedef int INT16; +typedef long INT32; +#endif + +#ifdef __WIN_32_VC__ +typedef unsigned char BYTE; +typedef unsigned char UINT8; +typedef unsigned __int16 UINT16; +typedef unsigned int UINT32; +//typedef char INT8; +typedef __int16 INT16; +typedef int INT32; +#endif + +#ifndef __WIN_32_BCB__ +#ifdef __BORLANDC__ +typedef unsigned char BOOL; +const BOOL FALSE = 0; +const BOOL TRUE = 1; +#endif +#endif + + +//#define SIGN(x) (((x)<0)?-1:1) +//#define ABS(x) (((x)<0)?-(x):(x)) + +const double PI = 3.141592653589793238462643383279502884197169399; +const double PI2 = PI * 2; +const double PI_2 = PI * 0.5; +const double PI_3 = PI / 3; +const double PI_4 = PI * 0.25; +const double DEG2RAD = 0.017453292519943295769236907684886127134428718885417; +const double RAD2DEG = 57.295779513082322864647721871733665466308593750000; + +template< class T> inline const int SIGN(const T& x) +{ + return x < 0 ? -1 : 1; +} + +template< class T> inline const T ABS(const T& x) +{ + return x < 0 ? -x : x; +} + +typedef struct { + double lon; + double lat; + double height; + double roll; + double pitch; + double yaw; + double eoaz; + double eopitch; + double laser; + double focus; + double vg; + unsigned char GPS_STATUS; + short biasx; + short biasy; + bool ccd; + float utc; +}ESD_DATA; + +struct struCHECK +{ + struCHECK(){C0=C1=0;}; + BYTE C0; + BYTE C1; +}; + +const UINT16 CRC8TAB[256] = +{ +//0 + 0x0000, 0x0031, 0x0062, 0x0053, 0x00C4, 0x00F5, 0x00A6, 0x0097, + 0x00B9, 0x0088, 0x00DB, 0x00EA, 0x007D, 0x004C, 0x001F, 0x002E, +//1 + 0x0043, 0x0072, 0x0021, 0x0010, 0x0087, 0x00B6, 0x00E5, 0x00D4, + 0x00FA, 0x00CB, 0x0098, 0x00A9, 0x003E, 0x000F, 0x005C, 0x006D, +//2 + 0x0086, 0x00B7, 0x00E4, 0x00D5, 0x0042, 0x0073, 0x0020, 0x0011, + 0x003F, 0x000E, 0x005D, 0x006C, 0x00FB, 0x00CA, 0x0099, 0x00A8, +//3 + 0x00C5, 0x00F4, 0x00A7, 0x0096, 0x0001, 0x0030, 0x0063, 0x0052, + 0x007C, 0x004D, 0x001E, 0x002F, 0x00B8, 0x0089, 0x00DA, 0x00EB, +//4 + 0x003D, 0x000C, 0x005F, 0x006E, 0x00F9, 0x00C8, 0x009B, 0x00AA, + 0x0084, 0x00B5, 0x00E6, 0x00D7, 0x0040, 0x0071, 0x0022, 0x0013, +//5 + 0x007E, 0x004F, 0x001C, 0x002D, 0x00BA, 0x008B, 0x00D8, 0x00E9, + 0x00C7, 0x00F6, 0x00A5, 0x0094, 0x0003, 0x0032, 0x0061, 0x0050, +//6 + 0x00BB, 0x008A, 0x00D9, 0x00E8, 0x007F, 0x004E, 0x001D, 0x002C, + 0x0002, 0x0033, 0x0060, 0x0051, 0x00C6, 0x00F7, 0x00A4, 0x0095, +//7 + 0x00F8, 0x00C9, 0x009A, 0x00AB, 0x003C, 0x000D, 0x005E, 0x006F, + 0x0041, 0x0070, 0x0023, 0x0012, 0x0085, 0x00B4, 0x00E7, 0x00D6, +//8 + 0x007A, 0x004B, 0x0018, 0x0029, 0x00BE, 0x008F, 0x00DC, 0x00ED, + 0x00C3, 0x00F2, 0x00A1, 0x0090, 0x0007, 0x0036, 0x0065, 0x0054, +//9 + 0x0039, 0x0008, 0x005B, 0x006A, 0x00FD, 0x00CC, 0x009F, 0x00AE, + 0x0080, 0x00B1, 0x00E2, 0x00D3, 0x0044, 0x0075, 0x0026, 0x0017, +//A + 0x00FC, 0x00CD, 0x009E, 0x00AF, 0x0038, 0x0009, 0x005A, 0x006B, + 0x0045, 0x0074, 0x0027, 0x0016, 0x0081, 0x00B0, 0x00E3, 0x00D2, +//B + 0x00BF, 0x008E, 0x00DD, 0x00EC, 0x007B, 0x004A, 0x0019, 0x0028, + 0x0006, 0x0037, 0x0064, 0x0055, 0x00C2, 0x00F3, 0x00A0, 0x0091, +//C + 0x0047, 0x0076, 0x0025, 0x0014, 0x0083, 0x00B2, 0x00E1, 0x00D0, + 0x00FE, 0x00CF, 0x009C, 0x00AD, 0x003A, 0x000B, 0x0058, 0x0069, +//D + 0x0004, 0x0035, 0x0066, 0x0057, 0x00C0, 0x00F1, 0x00A2, 0x0093, + 0x00BD, 0x008C, 0x00DF, 0x00FE, 0x0079, 0x0048, 0x001B, 0x002A, +//E + 0x00C1, 0x00F0, 0x00A3, 0x0092, 0x0005, 0x0034, 0x0067, 0x0056, + 0x0078, 0x0049, 0x001A, 0x002B, 0x00BC, 0x008D, 0x00DE, 0x00EF, +//F + 0x0082, 0x00B3, 0x00E0, 0x00D1, 0x0046, 0x0077, 0x0024, 0x0015, + 0x003B, 0x000A, 0x0059, 0x0068, 0x00FF, 0x00CE, 0x009D, 0x00AC +}; + +const UINT16 Crc_Table[256] = // X16+X12+X5+1 1021ʽ CCITT +{ + 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7, + 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef, + 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6, + 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de, + 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485, + 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d, + 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4, + 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc, + 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823, + 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b, + 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12, + 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a, + 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41, + 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49, + 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70, + 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78, + 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f, + 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067, + 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e, + 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256, + 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d, + 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, + 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c, + 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634, + 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab, + 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3, + 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a, + 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92, + 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9, + 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1, + 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8, + 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0 +}; + +const unsigned char CRCLIST[512] = { + 0x0,0x0,0x89,0x11,0x12,0x23,0x9b,0x32,0x24,0x46,0xad,0x57,0x36,0x65,0xbf,0x74, + 0x48,0x8c,0xc1,0x9d,0x5a,0xaf,0xd3,0xbe,0x6c,0xca,0xe5,0xdb,0x7e,0xe9,0xf7,0xf8, + 0x81,0x10,0x8,0x1,0x93,0x33,0x1a,0x22,0xa5,0x56,0x2c,0x47,0xb7,0x75,0x3e,0x64, + 0xc9,0x9c,0x40,0x8d,0xdb,0xbf,0x52,0xae,0xed,0xda,0x64,0xcb,0xff,0xf9,0x76,0xe8, + 0x2,0x21,0x8b,0x30,0x10,0x2,0x99,0x13,0x26,0x67,0xaf,0x76,0x34,0x44,0xbd,0x55, + 0x4a,0xad,0xc3,0xbc,0x58,0x8e,0xd1,0x9f,0x6e,0xeb,0xe7,0xfa,0x7c,0xc8,0xf5,0xd9, + 0x83,0x31,0xa,0x20,0x91,0x12,0x18,0x3,0xa7,0x77,0x2e,0x66,0xb5,0x54,0x3c,0x45, + 0xcb,0xbd,0x42,0xac,0xd9,0x9e,0x50,0x8f,0xef,0xfb,0x66,0xea,0xfd,0xd8,0x74,0xc9, + 0x4,0x42,0x8d,0x53,0x16,0x61,0x9f,0x70,0x20,0x4,0xa9,0x15,0x32,0x27,0xbb,0x36, + 0x4c,0xce,0xc5,0xdf,0x5e,0xed,0xd7,0xfc,0x68,0x88,0xe1,0x99,0x7a,0xab,0xf3,0xba, + 0x85,0x52,0xc,0x43,0x97,0x71,0x1e,0x60,0xa1,0x14,0x28,0x5,0xb3,0x37,0x3a,0x26, + 0xcd,0xde,0x44,0xcf,0xdf,0xfd,0x56,0xec,0xe9,0x98,0x60,0x89,0xfb,0xbb,0x72,0xaa, + 0x6,0x63,0x8f,0x72,0x14,0x40,0x9d,0x51,0x22,0x25,0xab,0x34,0x30,0x6,0xb9,0x17, + 0x4e,0xef,0xc7,0xfe,0x5c,0xcc,0xd5,0xdd,0x6a,0xa9,0xe3,0xb8,0x78,0x8a,0xf1,0x9b, + 0x87,0x73,0xe,0x62,0x95,0x50,0x1c,0x41,0xa3,0x35,0x2a,0x24,0xb1,0x16,0x38,0x7, + 0xcf,0xff,0x46,0xee,0xdd,0xdc,0x54,0xcd,0xeb,0xb9,0x62,0xa8,0xf9,0x9a,0x70,0x8b, + 0x8,0x84,0x81,0x95,0x1a,0xa7,0x93,0xb6,0x2c,0xc2,0xa5,0xd3,0x3e,0xe1,0xb7,0xf0, + 0x40,0x8,0xc9,0x19,0x52,0x2b,0xdb,0x3a,0x64,0x4e,0xed,0x5f,0x76,0x6d,0xff,0x7c, + 0x89,0x94,0x0,0x85,0x9b,0xb7,0x12,0xa6,0xad,0xd2,0x24,0xc3,0xbf,0xf1,0x36,0xe0, + 0xc1,0x18,0x48,0x9,0xd3,0x3b,0x5a,0x2a,0xe5,0x5e,0x6c,0x4f,0xf7,0x7d,0x7e,0x6c, + 0xa,0xa5,0x83,0xb4,0x18,0x86,0x91,0x97,0x2e,0xe3,0xa7,0xf2,0x3c,0xc0,0xb5,0xd1, + 0x42,0x29,0xcb,0x38,0x50,0xa,0xd9,0x1b,0x66,0x6f,0xef,0x7e,0x74,0x4c,0xfd,0x5d, + 0x8b,0xb5,0x2,0xa4,0x99,0x96,0x10,0x87,0xaf,0xf3,0x26,0xe2,0xbd,0xd0,0x34,0xc1, + 0xc3,0x39,0x4a,0x28,0xd1,0x1a,0x58,0xb,0xe7,0x7f,0x6e,0x6e,0xf5,0x5c,0x7c,0x4d, + 0xc,0xc6,0x85,0xd7,0x1e,0xe5,0x97,0xf4,0x28,0x80,0xa1,0x91,0x3a,0xa3,0xb3,0xb2, + 0x44,0x4a,0xcd,0x5b,0x56,0x69,0xdf,0x78,0x60,0xc,0xe9,0x1d,0x72,0x2f,0xfb,0x3e, + 0x8d,0xd6,0x4,0xc7,0x9f,0xf5,0x16,0xe4,0xa9,0x90,0x20,0x81,0xbb,0xb3,0x32,0xa2, + 0xc5,0x5a,0x4c,0x4b,0xd7,0x79,0x5e,0x68,0xe1,0x1c,0x68,0xd,0xf3,0x3f,0x7a,0x2e, + 0xe,0xe7,0x87,0xf6,0x1c,0xc4,0x95,0xd5,0x2a,0xa1,0xa3,0xb0,0x38,0x82,0xb1,0x93, + 0x46,0x6b,0xcf,0x7a,0x54,0x48,0xdd,0x59,0x62,0x2d,0xeb,0x3c,0x70,0xe,0xf9,0x1f, + 0x8f,0xf7,0x6,0xe6,0x9d,0xd4,0x14,0xc5,0xab,0xb1,0x22,0xa0,0xb9,0x92,0x30,0x83, + 0xc7,0x7b,0x4e,0x6a,0xd5,0x58,0x5c,0x49,0xe3,0x3d,0x6a,0x2c,0xf1,0x1e,0x78,0xf +}; + +inline struCHECK getCRC8(UINT8* data, int len) + { + UINT16 crc = 0; + int i=0; + while (len-- > 0) + { + crc = CRC8TAB[crc ^ (data[i]&0x00FF)]; + + ++i; + } + + struCHECK ck; + ck.C1=(crc>>8); + ck.C0=(crc&0x00ff); + + return ck; + } + + +inline struCHECK MakeCheckCRC(UINT8 * dataptr,INT16 len) +{ + INT16 count = 0; + UINT8 C0 = 0,C1 = 0,Y0 = 0,Y1 = 0,Z0 = 0,Z1 = 0; + + C0=C1=Y0=Y1=Z0=Z1=0; + + while(count < len) + { + Y0=(CRCLIST[2*(*dataptr)]^C1) & 0x00FF; + Y1=(CRCLIST[2*(*dataptr)+1]) & 0x00FF; + Z0=CRCLIST[2*C0] & 0x00FF; + Z1=CRCLIST[2*C0+1] & 0x00FF; + C0=(Y0^Z0) & 0x00FF; + C1=(Y1^Z1) & 0x00FF; + ++dataptr; + ++count; + } + + struCHECK ck; + ck.C1=C1; + ck.C0=C0; + return ck; + + //return(C0+C1*256);/* return crc result */ +} + +inline struCHECK MakeCheckCRC1(UINT8 *ptr,UINT8 len) +{ + UINT8 temp,i; + UINT16 crc = 0; + + for(i = 0; i < len; ++i) + { + temp = (UINT8) (crc/256); // 8λݴCRC ĸ8 λ + crc <<= 8; // 8 λ + crc ^= Crc_Table[temp ^ *ptr]; // ֽں͵ǰXOR ٲ + ++ptr; + } + struCHECK ck; + ck.C1=(crc>>8); + ck.C0=(crc&0xff); + return ck; +} +inline struCHECK MakeCheckCRC_256(UINT8 *ptr,UINT8 len) +{ + struCHECK ck; + int count = 0; + unsigned char C0,C1,Y0,Y1,Z0,Z1; + + C0=C1=Y0=Y1=Z0=Z1=0; + + BYTE *pData = ptr; + while(count < len) + { + unsigned int idx = (unsigned int)(*pData); + idx = idx << 1; + Y0=(CRCLIST[idx]^C1) & 0x00FF; + Y1=(CRCLIST[idx+1]) & 0x00FF; + idx = ((unsigned int)C0) << 1; + Z0=CRCLIST[idx] & 0x00FF; + Z1=CRCLIST[idx+1] & 0x00FF; + C0=(Y0^Z0) & 0x00FF; + C1=(Y1^Z1) & 0x00FF; + ++pData; + ++count; + } + ck.C0=C0; + ck.C1=C1; + return ck; +} + + +inline UINT8 MakeCheckSum(UINT8 *ptr, UINT8 len) +{ + UINT8 i; + UINT8 CK_A=0; + + for (i=0; i < len; ++i ) + { + CK_A = CK_A + ptr[i]; + } + + return CK_A; +} + +inline struCHECK MakeCheckSum_RTCM(UINT8 *ptr, UINT8 len)//RTCM֡У +{ + + UINT8 i; + UINT8 CK_A=0; + + for (i=0; i < len; ++i ) + { + CK_A = CK_A + ptr[i]; + } + + struCHECK ck; + ck.C1=0x00; + ck.C0=0x100 - CK_A; + + return ck; +} + + +#endif//_BASE_TYPE_H_ diff --git a/ffmpegvideodlg.cpp b/ffmpegvideodlg.cpp index c39f050..61329a8 100644 --- a/ffmpegvideodlg.cpp +++ b/ffmpegvideodlg.cpp @@ -7,19 +7,18 @@ ffmpegvideoDlg::ffmpegvideoDlg(QWidget *parent) { ui->setupUi(this); iniWindow(); - + ffmpeg = new Cffmpeg_decode; // this->resize(640,480); } ffmpegvideoDlg::~ffmpegvideoDlg() { - delete ui; - if(ffmpeg->isRunning()){ stop(); } delete ffmpeg; + delete ui; } @@ -45,8 +44,7 @@ void ffmpegvideoDlg::play() if(!m_PlayStatus) - { - ffmpeg = new Cffmpeg_decode; + { connect(ffmpeg,SIGNAL(sendQImage(QImage)),this,SLOT(receiveQImage(QImage))); connect(ffmpeg,&Cffmpeg_decode::finished,ffmpeg,&Cffmpeg_decode::deleteLater); diff --git a/global.h b/global.h index 8a40a8e..a7ff532 100644 --- a/global.h +++ b/global.h @@ -4,8 +4,6 @@ #include - - /*******************系统颜色***************************************/ extern QColor g_themeColor; extern QString g_PushBtnStyle; diff --git a/mainwindow.cpp b/mainwindow.cpp index 5862967..d28603d 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -49,8 +49,12 @@ MainWindow::MainWindow(QWidget *parent) MainWindow::~MainWindow() { - delete ui; + delete m_GDDCdlg; + delete m_HomePagedlg; delete mWeb; + delete process; + delete ui; + } void MainWindow::initWindow() { @@ -61,7 +65,8 @@ void MainWindow::initWindow() palette.setColor(QPalette::Window,g_themeColor); this->setPalette(palette); this->setWindowTitle("载荷应用软件"); - this->resize(1280,970); + this->resize(1450,860); + //this->setWindowFlags(Qt::Window | Qt::FramelessWindowHint);//隐藏边框 m_GDDCdlg = new GDDCdlg(this); m_HomePagedlg = new HomePageDlg(this); @@ -96,25 +101,25 @@ void MainWindow::initButton() } void MainWindow::initMenuBar() { - QMenuBar *menuBar = new QMenuBar(this); - this->setMenuBar(menuBar); - - QMenu *menu1 = new QMenu("菜单1",this); - QMenu *menu2 = new QMenu("菜单2",this); - QMenu *menu3 = new QMenu("菜单3",this); - QMenu *menu4 = new QMenu("菜单4",this); - QMenu *menu5 = new QMenu("菜单5",this); - QMenu *menu6 = new QMenu("菜单6",this); - QMenu *menu7 = new QMenu("菜单7",this); - - menuBar->addMenu(menu1); - menuBar->addMenu(menu2); - menuBar->addMenu(menu3); - menuBar->addMenu(menu4); - menuBar->addMenu(menu5); - menuBar->addMenu(menu6); - menuBar->addMenu(menu7); - menuBar->setStyleSheet("QMenuBar{color:rgb(255,255,255);background:rgb(0,0,0);}");//设置颜色 + // QMenuBar *menuBar = new QMenuBar(this); + // this->setMenuBar(menuBar); + + // QMenu *menu1 = new QMenu("菜单1",this); + // QMenu *menu2 = new QMenu("菜单2",this); + // QMenu *menu3 = new QMenu("菜单3",this); + // QMenu *menu4 = new QMenu("菜单4",this); + // QMenu *menu5 = new QMenu("菜单5",this); + // QMenu *menu6 = new QMenu("菜单6",this); + // QMenu *menu7 = new QMenu("菜单7",this); + + // menuBar->addMenu(menu1); + // menuBar->addMenu(menu2); + // menuBar->addMenu(menu3); + // menuBar->addMenu(menu4); + // menuBar->addMenu(menu5); + // menuBar->addMenu(menu6); + // menuBar->addMenu(menu7); + // menuBar->setStyleSheet("QMenuBar{color:rgb(255,255,255);background:rgb(0,0,0);}");//设置颜色 } void MainWindow::initToolBar() { @@ -169,7 +174,11 @@ void MainWindow::initToolBar() /*"QAction:hover{background-color:white; color: green;}"*/ /*"QAction:pressed{background-color:rgb(100, 100, 100);}");*/ } +//初始化信号与槽 +void MainWindow::initSignalSlot() +{ +} //主页 void MainWindow::on_pushButton_clicked() diff --git a/mainwindow.h b/mainwindow.h index 77fca7f..7660e57 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -38,6 +38,7 @@ public: void initButton(); void initMenuBar(); void initToolBar(); + void initSignalSlot(); private slots: void on_pushButton_clicked(); @@ -60,7 +61,6 @@ public: HomePageDlg *m_HomePagedlg; //QWeb *m_qWeb; QWebEngineView *mWeb; - private: QProcess *process; QString exeDirPathName = ""; diff --git a/mainwindow.ui b/mainwindow.ui index 355a0af..88ccb91 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -6,8 +6,8 @@ 0 0 - 884 - 462 + 954 + 563 @@ -42,17 +42,30 @@ Qt::NoContextMenu + + + + Qt::Horizontal + + + + 40 + 0 + + + + - + Qt::Vertical 20 - 200 + 40 @@ -60,7 +73,7 @@ - + 0 0 @@ -94,7 +107,7 @@ - + 0 0 @@ -128,7 +141,7 @@ - + 0 0 @@ -162,7 +175,7 @@ - + 0 0 @@ -196,7 +209,7 @@ - + 0 0 @@ -230,7 +243,7 @@ - + 0 0 @@ -264,7 +277,7 @@ - + 0 0 @@ -298,7 +311,7 @@ - + 0 0 @@ -330,34 +343,21 @@ - + Qt::Vertical 20 - 200 + 40 - - - - Qt::Horizontal - - - - 40 - 0 - - - - - + @@ -366,22 +366,6 @@ - - - background:rgb(40,40,40); -color:rgb(20,200,200); - - - - - - 0 - 0 - 884 - 20 - - - diff --git a/res/Qss/qss.qss b/res/Qss/qss.qss index 994f291..873a54d 100644 --- a/res/Qss/qss.qss +++ b/res/Qss/qss.qss @@ -196,3 +196,52 @@ QFrame#frameGDDCPage { border:1px solid rgb(0,255,0); } +/***************************QTableView***********************/ +QTableView +{ + color: rgb(255, 255, 255); + font-family:Consolas; + font-size:9pt; + border:none; + background-color: rgba(50, 50, 50, 50); /*rgba(150, 223, 155, 50)*/ + selection-background-color: rgba(96, 96, 96, 0); /*选中区域的背景色,设置成透明96,96,96*/ +} +QTableWidget::item { + font-size: 12pt; + color: #34495E; + height: 30px; + width: 80px; +} +/*设置单元格背景颜色*/ +QTableWidget::item:selected +{ + /*background-color:#CCFFE5;*/ +} +/*设置表头背景颜色、角落颜色*/ +QHeaderView::section,QTableCornerButton:section +{ + padding:3px; + margin:0px; + color:rgb(0, 255, 0); + border:1px solid #242424; + border-left-width:0px; + border-right-width:1px; + border-top-width:0px; + border-bottom-width:1px; + background:qlineargradient(spread:pad,x1:0,y1:0,x2:0,y2:1,stop:0 rgb(128, 128, 128),stop:1 #525252); +} +QHeaderView::section:checked +{ + background-color: rgb(96, 96, 96 ); +} +/*设置表格中的水平线和垂直线*/ +QTableWidget::horizontalHeader +{ + border-bottom: 1px solid #DADADA; +} +QTableWidget::verticalHeader +{ + border-right: 1px solid #DADADA; +} + +