#include "modelcameradlg.h" #include "ui_modelcameradlg.h" ModelCameraDlg::ModelCameraDlg(QWidget *parent) : QDialog(parent) , ui(new Ui::ModelCameraDlg) { ui->setupUi(this); InitialComboBox(); cameraCMDThread = new QThread(this); encodeModelCamera = new EncodeModelCamera(this); encodeModelCamera->moveToThread(cameraCMDThread); cameraCMDThread->start(); connect(this,&ModelCameraDlg::on_sendCmdData_signal,encodeModelCamera,&EncodeModelCamera::SendCMD); connect(encodeModelCamera,&EncodeModelCamera::UDP_Receive,this, &ModelCameraDlg::on_receiveUDP); } ModelCameraDlg::~ModelCameraDlg() { delete ui; if(encodeModelCamera!=nullptr) delete encodeModelCamera; if(cameraCMDThread!=nullptr) { cameraCMDThread->quit(); cameraCMDThread->wait(); } } void ModelCameraDlg::InitialComboBox() { ui->photoTimeDbSpinBox->setSuffix("s"); //快门速度 ui->SSComboBox->insertItem(0,"1/100"); ui->SSComboBox->insertItem(1,"1/125"); ui->SSComboBox->insertItem(2,"1/160"); ui->SSComboBox->insertItem(3,"1/200"); ui->SSComboBox->insertItem(4,"1/250"); ui->SSComboBox->insertItem(5,"1/320"); ui->SSComboBox->insertItem(6,"1/400"); ui->SSComboBox->insertItem(7,"1/500"); ui->SSComboBox->insertItem(8,"1/640"); ui->SSComboBox->insertItem(9,"1/800"); ui->SSComboBox->insertItem(10,"1/1000"); ui->SSComboBox->insertItem(11,"1/1250"); ui->SSComboBox->insertItem(12,"1/1600"); ui->SSComboBox->insertItem(13,"1/2000"); //ISO ui->ISOComboBox->insertItem(0,"50~800"); ui->ISOComboBox->insertItem(1,"50~1600"); ui->ISOComboBox->insertItem(2,"50"); ui->ISOComboBox->insertItem(3,"100"); ui->ISOComboBox->insertItem(4,"125"); ui->ISOComboBox->insertItem(5,"160"); ui->ISOComboBox->insertItem(6,"200"); ui->ISOComboBox->insertItem(7,"250"); ui->ISOComboBox->insertItem(8,"320"); ui->ISOComboBox->insertItem(9,"400"); ui->ISOComboBox->insertItem(10,"500"); ui->ISOComboBox->insertItem(11,"640"); ui->ISOComboBox->insertItem(12,"800"); ui->ISOComboBox->insertItem(13,"1000"); ui->ISOComboBox->insertItem(14,"1250"); ui->ISOComboBox->insertItem(15,"1600"); //AWB ui->AWBComboBox->insertItem(0,"自动"); ui->AWBComboBox->insertItem(1,"日光"); //相机模式 ui->cameraModelComboBox->insertItem(0,"拍照模式"); ui->cameraModelComboBox->insertItem(1,"录像模式"); //色彩模式 ui->ColorModelComboBox->insertItem(0,"艳丽"); ui->ColorModelComboBox->insertItem(1,"标准"); } //解析通过校验的udp数据、界面刷新显示 void ModelCameraDlg::on_receiveUDP(QByteArray arrdata){ int picNum = (arrdata[3]<<8)|arrdata[4]; //照片数量(某一个视角) QString str = QString::number(picNum); ui->lineEdit_2->setText(QString::number(picNum*5)); ui->lineEdit_3->setText(str); ui->lineEdit_4->setText(str); ui->lineEdit_5->setText(str); ui->lineEdit_6->setText(str); ui->lineEdit_7->setText(str); int shutterSpd = (arrdata[7]<<8)|arrdata[8]; //快门速度(倒数) ui->lineEdit_10->setText(QString("1/%1").arg(shutterSpd)); int iso = (arrdata[9]<<8)|arrdata[10]; //iso固定值 -1表示50~1600,-2表示50~800 if (iso==-1){ ui->lineEdit_14->setText("50~1600"); } else if(iso==-2){ ui->lineEdit_14->setText("50~800"); } else{ QString qstr = QString("%1").arg(iso); ui->lineEdit_14->setText(qstr); } int awb = (arrdata[11]<<8)|arrdata[12]; //白平衡值 0x0001:自动,0x0002:日光 if(awb==1){ ui->lineEdit_9->setText("自动"); } else if(awb==2){ ui->lineEdit_9->setText("日光"); } int colorMode = (arrdata[13]<<8)|arrdata[14]; //色彩模式 0x0001:艳丽,0x0002:标准 if(colorMode==1){ ui->lineEdit_12->setText("艳丽"); } else if(colorMode==2){ ui->lineEdit_12->setText("标准"); } } //开始拍照点击事件 void ModelCameraDlg::on_startPhotoBtn_clicked() { quint8 photoTime = ui->photoTimeDbSpinBox->value() * 10; cmdDataArray.clear(); cmdDataArray.insert(0,0x02); cmdDataArray.insert(1,0xA1); cmdDataArray.insert(2,0x03); cmdDataArray.insert(3,0x01); cmdDataArray.insert(4,photoTime); emit on_sendCmdData_signal(cmdDataArray); } //停止拍照 void ModelCameraDlg::on_stopPhotoBtn_clicked() { cmdDataArray.clear(); cmdDataArray.insert(0,0x01); cmdDataArray.insert(1,0xA1); cmdDataArray.insert(2,0x03); cmdDataArray.insert(3,QByteArray(1, char(0x00))); emit on_sendCmdData_signal(cmdDataArray); } //开机 void ModelCameraDlg::on_ONBtn_clicked() { cmdDataArray.clear(); cmdDataArray.insert(0,0x01); cmdDataArray.insert(1,0xA1); cmdDataArray.insert(2,0x01); cmdDataArray.insert(3,0x01); emit on_sendCmdData_signal(cmdDataArray); } //关机 void ModelCameraDlg::on_OFFBtn_clicked() { cmdDataArray.clear(); cmdDataArray.insert(0,0x01); cmdDataArray.insert(1,0xA1); cmdDataArray.insert(2,0x01); cmdDataArray.insert(3,QByteArray(1, char(0x00))); emit on_sendCmdData_signal(cmdDataArray); } //播放视频 void ModelCameraDlg::on_pushButton_5_clicked() { QString str = ui->pushButton_5->text(); if(str == "播放视频") { QString ip = ui->videoIPLineEdit->text(); ui->cameraVideoWidget->play(); ui->cameraVideoWidget->setUrl(ip); ui->pushButton_5->setText("暂停播放"); } else { ui->cameraVideoWidget->stop(); ui->pushButton_5->setText("播放视频"); } } //快门速度 void ModelCameraDlg::on_SSComboBox_activated(int index) { QString tmp = ui->SSComboBox->itemText(index); QString strSS = tmp.right(tmp.length()-2); qint16 hexValue = strSS.toShort();// cmdDataArray.clear(); cmdDataArray.insert(0,0x04); cmdDataArray.insert(1,0xA2); cmdDataArray.insert(2,0x01); cmdDataArray.insert(3,0x01); QByteArray byteArray; byteArray.resize(2); qToBigEndian(hexValue, (char*)byteArray.data()); cmdDataArray.append(byteArray); cmdDataArray.insert(6,0xFF); emit on_sendCmdData_signal(cmdDataArray); } //ISO void ModelCameraDlg::on_ISOComboBox_activated(int index) { QString strSS = ui->ISOComboBox->itemText(index); if(index == 0) strSS = "-2"; else if(index == 1) strSS = "-1"; qint16 hexValue = strSS.toShort();// cmdDataArray.clear(); cmdDataArray.insert(0,0x04); cmdDataArray.insert(1,0xA2); cmdDataArray.insert(2,0x02); cmdDataArray.insert(3,0x01); QByteArray byteArray; byteArray.resize(2); qToBigEndian(hexValue, (char*)byteArray.data()); cmdDataArray.append(byteArray); cmdDataArray.insert(6,0xFF); emit on_sendCmdData_signal(cmdDataArray); } //AWB白平衡 void ModelCameraDlg::on_AWBComboBox_activated(int index) { quint16 hexValue = index + 1;// cmdDataArray.clear(); cmdDataArray.insert(0,0x04); cmdDataArray.insert(1,0xA2); cmdDataArray.insert(2,0x06); cmdDataArray.insert(3,0x01); QByteArray byteArray; byteArray.resize(2); qToBigEndian(hexValue, (uchar*)byteArray.data()); cmdDataArray.append(byteArray); cmdDataArray.insert(6,0xFF); emit on_sendCmdData_signal(cmdDataArray); } //相机模式 void ModelCameraDlg::on_cameraModelComboBox_activated(int index) { // quint16 hexValue = index + 1;// cmdDataArray.clear(); cmdDataArray.insert(0,0x01); cmdDataArray.insert(1,0xA1); cmdDataArray.insert(2,0x02); if(index == 0) cmdDataArray.insert(3,QByteArray(1, char(0x00))); else if(index == 1) cmdDataArray.insert(3,0x01); emit on_sendCmdData_signal(cmdDataArray); } //色彩模式 void ModelCameraDlg::on_ColorModelComboBox_activated(int index) { quint16 hexValue = index + 1;// cmdDataArray.clear(); cmdDataArray.insert(0,0x04); cmdDataArray.insert(1,0xA2); cmdDataArray.insert(2,0x08); cmdDataArray.insert(3,0x01); QByteArray byteArray; byteArray.resize(2); qToBigEndian(hexValue, (uchar*)byteArray.data()); cmdDataArray.append(byteArray); cmdDataArray.insert(6,0xFF); emit on_sendCmdData_signal(cmdDataArray); } //获取开关机状态 void ModelCameraDlg::quireOnorOff(){ cmdDataArray.clear(); cmdDataArray.insert(0,0x01); cmdDataArray.insert(1,0xA1); cmdDataArray.insert(2,0x01); cmdDataArray.insert(3,0xFF); emit on_sendCmdData_signal(cmdDataArray); } //查询图传状态 void ModelCameraDlg::quirePictranStatus(){ } //查询快门速度 void ModelCameraDlg::quireShutterSpeed(){ cmdDataArray.clear(); cmdDataArray.insert(0,0x02); cmdDataArray.insert(1,0xA2); cmdDataArray.insert(2,0x01); cmdDataArray.insert(3,0xFF); cmdDataArray.insert(4,0xFF); emit on_sendCmdData_signal(cmdDataArray); } //查询ISO void ModelCameraDlg::quireISO(){ cmdDataArray.clear(); cmdDataArray.insert(0,0x02); cmdDataArray.insert(1,0xA2); cmdDataArray.insert(2,0x02); cmdDataArray.insert(3,0xFF); cmdDataArray.insert(4,0xFF); emit on_sendCmdData_signal(cmdDataArray); } //查询白平衡 void ModelCameraDlg::quireAWB(){ cmdDataArray.clear(); cmdDataArray.insert(0,0x02); cmdDataArray.insert(1,0xA2); cmdDataArray.insert(2,0x06); cmdDataArray.insert(3,0xFF); cmdDataArray.insert(4,0xFF); emit on_sendCmdData_signal(cmdDataArray); } //查询相机模式 void ModelCameraDlg::quireCameraMode(){ cmdDataArray.clear(); cmdDataArray.insert(0,0x01); cmdDataArray.insert(1,0xA1); cmdDataArray.insert(2,0x02); cmdDataArray.insert(3,0xFF); emit on_sendCmdData_signal(cmdDataArray); } //查询色彩(饱和度)模式 void ModelCameraDlg::quireColorMode(){ cmdDataArray.clear(); cmdDataArray.insert(0,0x01); cmdDataArray.insert(1,0xA2); cmdDataArray.insert(2,0x08); cmdDataArray.insert(3,0xFF); cmdDataArray.insert(4,0xFF); emit on_sendCmdData_signal(cmdDataArray); } //查询温度 void ModelCameraDlg::quireTempe(){ } //查询照片总数,以及各个视角的照片数量 void ModelCameraDlg::quirePicNumAll(){ cmdDataArray.clear(); cmdDataArray.insert(0,0x01); cmdDataArray.insert(1,0xA1); cmdDataArray.insert(2,0x07); cmdDataArray.insert(3,0xFF); emit on_sendCmdData_signal(cmdDataArray); }