|
|
|
|
#include "gddcSet.h"
|
|
|
|
|
#include "ui_gddcSet.h"
|
|
|
|
|
#include <QSettings>
|
|
|
|
|
|
|
|
|
|
// #pragma execution_character_set(“utf-8”)
|
|
|
|
|
|
|
|
|
|
GDDCSet::GDDCSet(QWidget *parent) : QWidget(parent), ui(new Ui::GDDCSet) {
|
|
|
|
|
ui->setupUi(this);
|
|
|
|
|
initWindow();
|
|
|
|
|
initParam();
|
|
|
|
|
initUDPSocket();
|
|
|
|
|
|
|
|
|
|
ui->label_3->setVisible(false);
|
|
|
|
|
ui->comboBox_streamType->setVisible(false);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
GDDCSet::~GDDCSet() { delete ui; }
|
|
|
|
|
void GDDCSet::initWindow() {
|
|
|
|
|
setWindowTitle("通信设置");
|
|
|
|
|
setAttribute(Qt::WA_QuitOnClose, false);
|
|
|
|
|
|
|
|
|
|
// 交付时隐藏部分未开发接口
|
|
|
|
|
ui->label_5->hide();
|
|
|
|
|
ui->label_6->hide();
|
|
|
|
|
ui->lineEdit_playURL2->hide();
|
|
|
|
|
ui->pushButton_ConnectURL2->hide();
|
|
|
|
|
ui->groupBox_2->hide();
|
|
|
|
|
ui->radioButton_NetCtrlTCP->hide();
|
|
|
|
|
}
|
|
|
|
|
void GDDCSet::initUDPSocket() {}
|
|
|
|
|
void GDDCSet::initParam() {
|
|
|
|
|
m_FlowType = "";
|
|
|
|
|
|
|
|
|
|
// m_myPairNetwork("",0,"",0);
|
|
|
|
|
// QSettings setting("./sentence.ini",QSettings::IniFormat);
|
|
|
|
|
// setting.setIniCodec(QTextCodec::codecForName("UTF-8")); //重点
|
|
|
|
|
|
|
|
|
|
ui->comboBox_streamType->addItem("RTSP");
|
|
|
|
|
ui->comboBox_streamType->addItem("RTMP");
|
|
|
|
|
// ui->comboBox_streamType->addItem("UDP Raw");
|
|
|
|
|
// ui->comboBox_streamType->addItem("UDP 422");
|
|
|
|
|
// ui->comboBox_streamType->addItem("UDP TS");
|
|
|
|
|
ui->comboBox_playURL1->addItem(
|
|
|
|
|
QStringLiteral("rtsp://192.168.55.65:554/live/track0"));
|
|
|
|
|
ui->comboBox_playURL1->setCurrentIndex(0);
|
|
|
|
|
// ui->comboBox_playURL1->addItem(
|
|
|
|
|
// "rtmp://liteavapp.qcloud.com/live/liteavdemoplayerstreamid");
|
|
|
|
|
ui->comboBox_playURL1->setEditable(true);
|
|
|
|
|
ui->comboBox_streamSource->addItem("地面端");
|
|
|
|
|
ui->comboBox_streamSource->addItem("载荷端");
|
|
|
|
|
ui->comboBox_streamSource->setCurrentIndex(0);
|
|
|
|
|
|
|
|
|
|
ui->lineEdit_pushURL->setText(QStringLiteral("-1"));
|
|
|
|
|
|
|
|
|
|
ui->radioButton_NetCtrlUDP->setChecked(true);
|
|
|
|
|
ui->radioButton_NetCtrlTCP->setChecked(false);
|
|
|
|
|
|
|
|
|
|
// 读取本机网络设备
|
|
|
|
|
QString urlFile = QCoreApplication::applicationDirPath() + "/config.ini";
|
|
|
|
|
// QString urlFile = QDir::currentPath() + "./config.ini";
|
|
|
|
|
m_configIniPath = urlFile.toLatin1();
|
|
|
|
|
char *strSysIniName = m_configIniPath.data(); // 系统配置文件路径
|
|
|
|
|
char inBuf[100];
|
|
|
|
|
|
|
|
|
|
::GetPrivateProfileStringA("光电吊舱-视频连接-显示窗口1", "流类型", "-1",
|
|
|
|
|
inBuf, 100, strSysIniName);
|
|
|
|
|
m_FlowType = streamTypeToflowType(QString::fromUtf8(inBuf));
|
|
|
|
|
ui->comboBox_streamType->setCurrentText(flowTypeTostreamType(m_FlowType));
|
|
|
|
|
|
|
|
|
|
// ::GetPrivateProfileStringA("光电吊舱-视频连接-显示窗口1", "播放URL", "-1",
|
|
|
|
|
// inBuf, 100, strSysIniName);
|
|
|
|
|
// m_playURL1 = QString::fromUtf8(inBuf);
|
|
|
|
|
// ui->comboBox_playURL1->setCurrentText(m_playURL1);
|
|
|
|
|
|
|
|
|
|
// ::GetPrivateProfileStringA("光电吊舱-视频连接-显示窗口2", "播放URL", "-1",
|
|
|
|
|
// inBuf, 100, strSysIniName);
|
|
|
|
|
// m_playURL2 = QString::fromUtf8(inBuf);
|
|
|
|
|
// ui->lineEdit_playURL2->setText(m_playURL2);
|
|
|
|
|
|
|
|
|
|
::GetPrivateProfileStringA("光电吊舱-推流", "推流URL", "-1", inBuf, 100,
|
|
|
|
|
strSysIniName);
|
|
|
|
|
m_pushURL = QString::fromUtf8(inBuf);
|
|
|
|
|
// ui->lineEdit_pushURL->setText(m_pushURL);
|
|
|
|
|
|
|
|
|
|
::GetPrivateProfileStringA("光电吊舱-网络控制", "远端IP", "-1", inBuf, 100,
|
|
|
|
|
strSysIniName);
|
|
|
|
|
m_myPairNetwork.setRemoteIP(QString::fromUtf8(inBuf));
|
|
|
|
|
::GetPrivateProfileStringA("光电吊舱-网络控制", "远端Port", "-1", inBuf, 100,
|
|
|
|
|
strSysIniName);
|
|
|
|
|
m_myPairNetwork.setRemotePort(atoi(inBuf));
|
|
|
|
|
::GetPrivateProfileStringA("光电吊舱-网络控制", "本地IP", "-1", inBuf, 100,
|
|
|
|
|
strSysIniName);
|
|
|
|
|
m_myPairNetwork.setLocalIP(QString::fromUtf8(inBuf));
|
|
|
|
|
::GetPrivateProfileStringA("光电吊舱-网络控制", "本地Port", "-1", inBuf, 100,
|
|
|
|
|
strSysIniName);
|
|
|
|
|
m_myPairNetwork.setLocalPort(atoi(inBuf));
|
|
|
|
|
ui->lineEdit_NetCtrlRemoteIp->setText(m_myPairNetwork.getRemoteIP());
|
|
|
|
|
ui->lineEdit_NetCtrlRemotePort->setText(
|
|
|
|
|
QString::number(m_myPairNetwork.getRemotePort()));
|
|
|
|
|
ui->lineEdit_NetCtrlLocalIp->setText(m_myPairNetwork.getLocalIP());
|
|
|
|
|
ui->lineEdit_NetCtrlLocalPort->setText(
|
|
|
|
|
QString::number(m_myPairNetwork.getLocalPort()));
|
|
|
|
|
}
|
|
|
|
|
// 视频连接-显示窗口1-连接
|
|
|
|
|
void GDDCSet::on_pushButton_ConnectURL1_clicked() {
|
|
|
|
|
saveDataToLocalIni();
|
|
|
|
|
if (ui->pushButton_ConnectURL1->text() == "连接") {
|
|
|
|
|
emit SignalStartConnect(1);
|
|
|
|
|
ui->pushButton_ConnectURL1->setText("断开");
|
|
|
|
|
} else {
|
|
|
|
|
emit SignalStopConnect(1);
|
|
|
|
|
ui->pushButton_ConnectURL1->setText("连接");
|
|
|
|
|
}
|
|
|
|
|
// this->on_pushButton_pushURL_clicked();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 视频连接-显示窗口2-连接
|
|
|
|
|
void GDDCSet::on_pushButton_ConnectURL2_clicked() {
|
|
|
|
|
saveDataToLocalIni();
|
|
|
|
|
if (ui->pushButton_ConnectURL2->text() == "连接") {
|
|
|
|
|
emit SignalStartConnect(2);
|
|
|
|
|
ui->pushButton_ConnectURL2->setText("断开");
|
|
|
|
|
} else {
|
|
|
|
|
emit SignalStopConnect(2);
|
|
|
|
|
ui->pushButton_ConnectURL2->setText("连接");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 串口控制-刷新
|
|
|
|
|
void GDDCSet::on_pushButton_serialControlRefalsh_clicked() {
|
|
|
|
|
saveDataToLocalIni();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 串口控制-连接
|
|
|
|
|
void GDDCSet::on_pushButton_serialControlConnect_clicked() {
|
|
|
|
|
saveDataToLocalIni();
|
|
|
|
|
if (ui->pushButton_serialControlConnect->text() == "连接") {
|
|
|
|
|
emit SignalStartConnect(3);
|
|
|
|
|
ui->pushButton_serialControlConnect->setText("断开");
|
|
|
|
|
} else {
|
|
|
|
|
emit SignalStopConnect(3);
|
|
|
|
|
ui->pushButton_serialControlConnect->setText("连接");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 网络控制-连接
|
|
|
|
|
void GDDCSet::on_pushButton_NetCtrlConnect_clicked() {
|
|
|
|
|
saveDataToLocalIni();
|
|
|
|
|
if (ui->pushButton_NetCtrlConnect->text() == "连接") {
|
|
|
|
|
if (ui->radioButton_NetCtrlUDP->isChecked()) {
|
|
|
|
|
emit SignalStartConnect(4);
|
|
|
|
|
} else {
|
|
|
|
|
emit SignalStartConnect(5);
|
|
|
|
|
}
|
|
|
|
|
ui->pushButton_NetCtrlConnect->setText("断开");
|
|
|
|
|
} else {
|
|
|
|
|
emit SignalStopConnect(4);
|
|
|
|
|
emit SignalStopConnect(5);
|
|
|
|
|
ui->pushButton_NetCtrlConnect->setText("连接");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 推流
|
|
|
|
|
void GDDCSet::on_pushButton_pushURL_clicked() {
|
|
|
|
|
saveDataToLocalIni();
|
|
|
|
|
if (ui->pushButton_pushURL->text() == "推送") {
|
|
|
|
|
emit SignalStartConnect(6);
|
|
|
|
|
// ui->pushButton_pushURL->setText("停止推送");
|
|
|
|
|
} else {
|
|
|
|
|
emit SignalStopConnect(6);
|
|
|
|
|
// ui->pushButton_pushURL->setText("推送");
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 保存数据至本地ini文件
|
|
|
|
|
void GDDCSet::saveDataToLocalIni() {
|
|
|
|
|
char *strSysIniName = m_configIniPath.data(); // 系统配置文件路径
|
|
|
|
|
char *inBuf;
|
|
|
|
|
QByteArray ba;
|
|
|
|
|
|
|
|
|
|
m_myPairNetwork.setLocalIP(ui->lineEdit_NetCtrlLocalIp->text());
|
|
|
|
|
ba = m_myPairNetwork.getLocalIP().toLocal8Bit();
|
|
|
|
|
inBuf = ba.data(); // toLatin1,toUtf8
|
|
|
|
|
::WritePrivateProfileStringA("光电吊舱-网络控制", "本地IP", inBuf,
|
|
|
|
|
strSysIniName);
|
|
|
|
|
|
|
|
|
|
m_myPairNetwork.setLocalPort(ui->lineEdit_NetCtrlLocalPort->text().toInt());
|
|
|
|
|
_itoa_s(
|
|
|
|
|
m_myPairNetwork.getLocalPort(), inBuf, 10,
|
|
|
|
|
10); // 要转换的数字,存放转换结果的字符串,存放结果的字符数组长度,转化的进制数,2表示2进制,10表示10进制
|
|
|
|
|
::WritePrivateProfileStringA("光电吊舱-网络控制", "本地Port", inBuf,
|
|
|
|
|
strSysIniName);
|
|
|
|
|
|
|
|
|
|
m_myPairNetwork.setRemoteIP(ui->lineEdit_NetCtrlRemoteIp->text());
|
|
|
|
|
ba = m_myPairNetwork.getRemoteIP().toLocal8Bit();
|
|
|
|
|
inBuf = ba.data();
|
|
|
|
|
::WritePrivateProfileStringA("光电吊舱-网络控制", "远端IP", inBuf,
|
|
|
|
|
strSysIniName);
|
|
|
|
|
|
|
|
|
|
m_myPairNetwork.setRemotePort(ui->lineEdit_NetCtrlRemotePort->text().toInt());
|
|
|
|
|
_itoa_s(m_myPairNetwork.getRemotePort(), inBuf, 10, 10);
|
|
|
|
|
::WritePrivateProfileStringA("光电吊舱-网络控制", "远端Port", inBuf,
|
|
|
|
|
strSysIniName);
|
|
|
|
|
|
|
|
|
|
QString streamType = ui->comboBox_streamType->currentText();
|
|
|
|
|
m_FlowType = streamTypeToflowType(streamType);
|
|
|
|
|
ba = streamType.toLocal8Bit();
|
|
|
|
|
inBuf = ba.data();
|
|
|
|
|
::WritePrivateProfileStringA("光电吊舱-视频连接-显示窗口1", "流类型", inBuf,
|
|
|
|
|
strSysIniName);
|
|
|
|
|
|
|
|
|
|
m_playURL1 = ui->comboBox_playURL1->currentText();
|
|
|
|
|
ba = m_playURL1.toLocal8Bit();
|
|
|
|
|
inBuf = ba.data();
|
|
|
|
|
::WritePrivateProfileStringA("光电吊舱-视频连接-显示窗口1", "播放URL", inBuf,
|
|
|
|
|
strSysIniName);
|
|
|
|
|
|
|
|
|
|
// m_playURL2 = ui->lineEdit_playURL2->text();
|
|
|
|
|
// ba = m_playURL2.toLocal8Bit();
|
|
|
|
|
// inBuf = ba.data();
|
|
|
|
|
// ::WritePrivateProfileStringA("光电吊舱-视频连接-显示窗口2", "播放URL",
|
|
|
|
|
// inBuf,
|
|
|
|
|
// strSysIniName);
|
|
|
|
|
|
|
|
|
|
m_pushURL = ui->lineEdit_pushURL->text();
|
|
|
|
|
ba = m_pushURL.toLocal8Bit();
|
|
|
|
|
inBuf = ba.data();
|
|
|
|
|
::WritePrivateProfileStringA("光电吊舱-推流", "推流URL", inBuf,
|
|
|
|
|
strSysIniName);
|
|
|
|
|
|
|
|
|
|
m_playURL1 = ui->comboBox_playURL1->currentText();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GDDCSet::initPullURL(QString remoteIP) {
|
|
|
|
|
if (!remoteIP.isEmpty()) {
|
|
|
|
|
m_playURL1 = "rtsp://" + remoteIP + ":554/live/track0";
|
|
|
|
|
}
|
|
|
|
|
ui->comboBox_playURL1->setCurrentText(m_playURL1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// //流类型
|
|
|
|
|
// void GDDCSet::on_comboBox_streamType_currentIndexChanged(int index)
|
|
|
|
|
// {
|
|
|
|
|
// switch(index)
|
|
|
|
|
// {
|
|
|
|
|
// case 0:
|
|
|
|
|
// m_FlowType = "TCP";
|
|
|
|
|
// break;
|
|
|
|
|
// case 1:
|
|
|
|
|
// m_FlowType = "UDP";
|
|
|
|
|
// break;
|
|
|
|
|
// default:
|
|
|
|
|
// break;
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
QString GDDCSet::streamTypeToflowType(QString type) {
|
|
|
|
|
if (type == "RTSP") {
|
|
|
|
|
return "UDP";
|
|
|
|
|
} else if (type == "RTMP") {
|
|
|
|
|
return "TCP";
|
|
|
|
|
} else
|
|
|
|
|
return "TCP";
|
|
|
|
|
}
|
|
|
|
|
QString GDDCSet::flowTypeTostreamType(QString type) {
|
|
|
|
|
if (type == "TCP") {
|
|
|
|
|
return "RTMP";
|
|
|
|
|
} else if (type == "UDP") {
|
|
|
|
|
return "RTSP";
|
|
|
|
|
} else
|
|
|
|
|
return "RTSP";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GDDCSet::setConnectURL1Text(QString param) {
|
|
|
|
|
ui->pushButton_ConnectURL1->setText(param);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GDDCSet::setConnectURL2Text(QString param) {
|
|
|
|
|
ui->pushButton_ConnectURL1->setText(param);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GDDCSet::setNetCtrlText(QString param) {
|
|
|
|
|
ui->pushButton_NetCtrlConnect->setText(param);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void GDDCSet::setPushStreamText(QString param) {
|
|
|
|
|
ui->pushButton_pushURL->setText(param);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// uavID值改变事件
|
|
|
|
|
void GDDCSet::on_uavIDSpinBox_valueChanged(int arg1) {
|
|
|
|
|
QString streamSource = ui->comboBox_streamSource->currentText();
|
|
|
|
|
int uavID = arg1;
|
|
|
|
|
auto iter = g_mapAppName.find(uavID);
|
|
|
|
|
if (iter != g_mapAppName.end()) {
|
|
|
|
|
if ("地面端" == streamSource) {
|
|
|
|
|
QString pushURL =
|
|
|
|
|
generatePushURL(uavID, QString::fromStdString(iter->second));
|
|
|
|
|
ui->lineEdit_pushURL->setText(pushURL);
|
|
|
|
|
} else {
|
|
|
|
|
QString pullURL =
|
|
|
|
|
generatePullURL(uavID, QString::fromStdString(iter->second));
|
|
|
|
|
ui->comboBox_playURL1->setItemText(0, pullURL);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 切换拉流来源
|
|
|
|
|
void GDDCSet::on_comboBox_streamSource_currentIndexChanged(int index) {
|
|
|
|
|
if (0 == index) {
|
|
|
|
|
ui->pushButton_pushURL->setEnabled(true);
|
|
|
|
|
ui->comboBox_playURL1->setItemText(0, m_playURL1);
|
|
|
|
|
} else if (1 == index) {
|
|
|
|
|
ui->pushButton_pushURL->setEnabled(false);
|
|
|
|
|
int uavID = ui->uavIDSpinBox->value();
|
|
|
|
|
auto iter = g_mapAppName.find(uavID);
|
|
|
|
|
if (iter != g_mapAppName.end()) {
|
|
|
|
|
QString pullURL =
|
|
|
|
|
generatePullURL(uavID, QString::fromStdString(iter->second));
|
|
|
|
|
ui->comboBox_playURL1->setItemText(0, pullURL);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|