|
|
|
|
#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);
|
|
|
|
|
}
|