#include "gddcSet.h" #include #include "ui_gddcSet.h" // #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://10.90.10.132: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); // 应急厅指挥平台----->push.uavideo.cn ui->comboBox_pushURL->addItem(QStringLiteral("应急厅指挥平台")); // 应急厅铁塔平台----->182.92.130.23 ui->comboBox_pushURL->addItem(QStringLiteral("应急厅铁塔平台")); ui->radioButton_NetCtrlUDP->setChecked(true); ui->radioButton_NetCtrlTCP->setChecked(false); // 读取本机网络设备 QString urlFile = QCoreApplication::applicationDirPath() + "/config_pod.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() { ui->pushButton_ConnectURL1->setEnabled(false); 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(); ui->pushButton_ConnectURL1->setEnabled(true); } // 视频连接-显示窗口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() { ui->pushButton_pushURL->setEnabled(false); saveDataToLocalIni(); if (ui->pushButton_pushURL->text() == "推送") { emit SignalStartConnect(6); // ui->pushButton_pushURL->setText("停止推送"); } else { emit SignalStopConnect(6); // ui->pushButton_pushURL->setText("推送"); } ui->pushButton_pushURL->setEnabled(true); } // 保存数据至本地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); int uavID = ui->uavIDSpinBox->value(); if (ui->radioButton->isChecked()) { m_pushURL = ui->comboBox_pushURL->currentText(); } else { if (ui->comboBox_pushURL->currentIndex() == 0) { auto iter = mapPushURL_yjzh.find(uavID); if (iter != mapPushURL_yjzh.end()) { m_pushURL = iter->second; } } else if (ui->comboBox_pushURL->currentIndex() == 1) { auto iter = mapPushURL_yjtt.find(uavID); if (iter != mapPushURL_yjtt.end()) { m_pushURL = iter->second; } } } qDebug() << "推流地址:" << m_pushURL; // m_pushURL = ui->comboBox_pushURL->currentText(); 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); } void GDDCSet::setPullBtnText(bool flag) { if (flag) { ui->pushButton_ConnectURL1->setText("断开"); } else { ui->pushButton_ConnectURL1->setText("连接"); } } // 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)); mapPushURL_yjzh[uavID] = pushURL; // 应急厅指挥平台 qDebug() << pushURL; QString pushURL2 = generatePushURL2(uavID, QString::fromStdString(iter->second)); mapPushURL_yjtt[uavID] = pushURL2; // 应急厅铁塔平台 qDebug() << pushURL2; // ui->comboBox_pushURL->setItemText(0, pushURL); // ui->comboBox_pushURL->setItemText(1, pushURL2); } else { if (!ui->radioButton->isChecked()) { if (ui->comboBox_pushURL->currentIndex() == 0) { QString pullURL = generatePullURL( uavID, QString::fromStdString(iter->second)); ui->comboBox_playURL1->setItemText(0, pullURL); } else if (ui->comboBox_pushURL->currentIndex() == 1) { QString pullURL = generatePullURL2( 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); if (!ui->radioButton->isChecked()) { if (ui->comboBox_pushURL->currentIndex() == 0) { QString pullURL = generatePullURL( uavID, QString::fromStdString(iter->second)); ui->comboBox_playURL1->setItemText(0, pullURL); } else if (ui->comboBox_pushURL->currentIndex() == 1) { QString pullURL = generatePullURL2( uavID, QString::fromStdString(iter->second)); ui->comboBox_playURL1->setItemText(0, pullURL); } } } } } void GDDCSet::on_radioButton_clicked() { if (ui->radioButton->isChecked()) { ui->comboBox_pushURL->setEditable(true); ui->uavIDSpinBox->setEnabled(false); } else { ui->comboBox_pushURL->setEditable(false); ui->uavIDSpinBox->setEnabled(true); } }