384 lines
14 KiB
C++
384 lines
14 KiB
C++
#include "FileServerConfig.h"
|
|
#include "ui_FileServerConfig.h"
|
|
#include "NetMgr.h"
|
|
|
|
CFileServerConfig::CFileServerConfig(QWidget *parent) :
|
|
QWidget(parent),
|
|
ui(new Ui::CFileServerConfig)
|
|
{
|
|
ui->setupUi(this);
|
|
ui->lineEdit_hostIP->setText(IP);
|
|
ui->label_MAC->setText(MAC);
|
|
ui->widget_3->setProperty("flag", "Title");
|
|
ui->widget->setProperty("flag", "normal");
|
|
Init();
|
|
|
|
|
|
|
|
QString exp = "\\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.)"
|
|
"{3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\b";
|
|
QRegExp rege(exp);
|
|
QValidator *Validator = new QRegExpValidator(rege);
|
|
ui->lineEdit_IP_PS->setValidator(Validator);
|
|
ui->lineEdit_GateWay_PS->setValidator(Validator);
|
|
ui->lineEdit_DNS_PS->setValidator(Validator);
|
|
ui->lineEdit_Mask_PS->setValidator(Validator);
|
|
ui->lineEdit_hostIP->setValidator(Validator);
|
|
ui->lineEdit_IP_PL->setValidator(Validator);
|
|
ui->lineEdit_GateWay_PL->setValidator(Validator);
|
|
ui->lineEdit_DNS_PL->setValidator(Validator);
|
|
ui->lineEdit_Mask_PL->setValidator(Validator);
|
|
ui->lineEdit_ServerIP->setValidator(Validator);
|
|
ui->lineEdit_TCP_IP->setValidator(Validator);
|
|
ui->lineEdit_TCP_IP_2->setValidator(Validator);
|
|
ui->lineEdit_TCP_IP_3->setValidator(Validator);
|
|
|
|
}
|
|
|
|
CFileServerConfig::~CFileServerConfig()
|
|
{
|
|
delete ui;
|
|
}
|
|
|
|
void CFileServerConfig::Init()
|
|
{
|
|
|
|
ui->comboBox_NetStatus_PS->addItem("STATIC");
|
|
ui->comboBox_NetStatus_PS->addItem("DHCP");
|
|
ui->comboBox_NetStatus_PL->addItem("STATIC");
|
|
ui->comboBox_NetStatus_PL->addItem("DHCP");
|
|
#ifdef Q_OS_WIN32
|
|
QString fileName = QCoreApplication::applicationDirPath() + "\\config\\NetWorkConfig.json";
|
|
#endif
|
|
#ifdef Q_OS_LINUX
|
|
QString fileName = QCoreApplication::applicationDirPath() + "/config/NetWorkConfig.json";
|
|
#endif
|
|
|
|
if(!fileName.isEmpty())
|
|
{
|
|
qDebug() << "打开" << fileName ;
|
|
QFile file(fileName);
|
|
file.open(QIODevice::ReadOnly | QIODevice::Text);
|
|
QString value = file.readAll();
|
|
file.close();
|
|
|
|
QJsonParseError parseJsonErr;
|
|
QJsonDocument document = QJsonDocument::fromJson(value.toUtf8(), &parseJsonErr);
|
|
if (!(parseJsonErr.error == QJsonParseError::NoError)) {
|
|
QMessageBox::about(NULL, "提示", "读取文件错误!");
|
|
return;
|
|
}
|
|
|
|
QJsonObject jsonObject = document.object();
|
|
if(jsonObject.contains(QStringLiteral("PS"))) {
|
|
QJsonObject plObject = jsonObject.value(QStringLiteral("PS")).toObject();
|
|
QJsonObject OptionObject = plObject["option"].toObject();
|
|
ui->lineEdit_IP_PS->setText(OptionObject["ipAddress"].toString());
|
|
ui->lineEdit_HostName_PS->setText(OptionObject["hostName"].toString());
|
|
ui->lineEdit_GateWay_PS->setText(OptionObject["gateway"].toString());
|
|
ui->lineEdit_DNS_PS->setText(OptionObject["dnsName"].toString());
|
|
ui->lineEdit_Mask_PS->setText(OptionObject["subnetMask"].toString());
|
|
ui->comboBox_NetStatus_PS->setCurrentText(OptionObject["networkPortStatus"].toString());
|
|
}
|
|
if(jsonObject.contains(QStringLiteral("PL"))) {
|
|
QJsonObject plObject = jsonObject.value(QStringLiteral("PL")).toObject();
|
|
QJsonObject OptionObject = plObject["option"].toObject();
|
|
ui->lineEdit_IP_PL->setText(OptionObject["ipAddress"].toString());
|
|
ui->lineEdit_HostName_PL->setText(OptionObject["hostName"].toString());
|
|
ui->lineEdit_GateWay_PL->setText(OptionObject["gateway"].toString());
|
|
ui->lineEdit_DNS_PL->setText(OptionObject["dnsName"].toString());
|
|
ui->lineEdit_Mask_PL->setText(OptionObject["subnetMask"].toString());
|
|
ui->comboBox_NetStatus_PL->setCurrentText(OptionObject["networkPortStatus"].toString());
|
|
}
|
|
|
|
}
|
|
#ifdef Q_OS_WIN32
|
|
fileName = QCoreApplication::applicationDirPath() + "\\config\\ServerConfig.json";
|
|
#endif
|
|
#ifdef Q_OS_LINUX
|
|
fileName = QCoreApplication::applicationDirPath() + "/config/ServerConfig.json";
|
|
#endif
|
|
|
|
if(!fileName.isEmpty())
|
|
{
|
|
qDebug() << "打开" << fileName ;
|
|
QFile file(fileName);
|
|
file.open(QIODevice::ReadOnly | QIODevice::Text);
|
|
QString value = file.readAll();
|
|
file.close();
|
|
|
|
QJsonParseError parseJsonErr;
|
|
QJsonDocument document = QJsonDocument::fromJson(value.toUtf8(), &parseJsonErr);
|
|
if (!(parseJsonErr.error == QJsonParseError::NoError)) {
|
|
QMessageBox::about(NULL, "提示", "读取文件错误!");
|
|
return;
|
|
}
|
|
m_ServerObject = document.object();
|
|
if(m_ServerObject.contains(QStringLiteral("Server"))){
|
|
QJsonObject tempObject = m_ServerObject.value(QStringLiteral("Server")).toObject();
|
|
QJsonObject OptionObject = tempObject["option"].toObject();
|
|
ui->lineEdit_ServerIP->setText(OptionObject["localServerIpAddress"].toString());
|
|
ui->lineEdit_ServerPort->setText(OptionObject["localServerPort"].toString());
|
|
ui->lineEdit_writingPeriod->setText(OptionObject["writingPeriodLocalServer"].toString());
|
|
}
|
|
}
|
|
#ifdef Q_OS_WIN32
|
|
fileName = QCoreApplication::applicationDirPath() + "\\config\\TcpConfig.json";
|
|
#endif
|
|
#ifdef Q_OS_LINUX
|
|
fileName = QCoreApplication::applicationDirPath() + "/config/TcpConfig.json";
|
|
#endif
|
|
|
|
if(!fileName.isEmpty())
|
|
{
|
|
QFile file(fileName);
|
|
file.open(QIODevice::ReadOnly | QIODevice::Text);
|
|
QString value = file.readAll();
|
|
file.close();
|
|
|
|
QJsonParseError parseJsonErr;
|
|
QJsonDocument document = QJsonDocument::fromJson(value.toUtf8(), &parseJsonErr);
|
|
if (!(parseJsonErr.error == QJsonParseError::NoError)) {
|
|
QMessageBox::about(NULL, "提示", "读取文件错误!");
|
|
return;
|
|
}
|
|
QJsonObject jsonObject = document.object();
|
|
QJsonArray arrayIP = jsonObject["ip"].toArray();
|
|
ui->lineEdit_TCP_IP->setText(arrayIP[0].toString());
|
|
ui->lineEdit_TCP_IP_2->setText(arrayIP[1].toString());
|
|
ui->lineEdit_TCP_IP_3->setText(arrayIP[2].toString());
|
|
QString strPort = QString("%1").arg(jsonObject["port"].toInt());
|
|
ui->lineEdit_TCP_PORT->setText(strPort);
|
|
}
|
|
#ifdef Q_OS_WIN32
|
|
fileName = QCoreApplication::applicationDirPath() + "\\config\\ModbusConfig.json";
|
|
#endif
|
|
#ifdef Q_OS_LINUX
|
|
fileName = QCoreApplication::applicationDirPath() + "/config/ModbusConfig.json";
|
|
#endif
|
|
|
|
if(!fileName.isEmpty())
|
|
{
|
|
QFile file(fileName);
|
|
file.open(QIODevice::ReadOnly | QIODevice::Text);
|
|
QString value = file.readAll();
|
|
file.close();
|
|
|
|
QJsonParseError parseJsonErr;
|
|
QJsonDocument document = QJsonDocument::fromJson(value.toUtf8(), &parseJsonErr);
|
|
if (!(parseJsonErr.error == QJsonParseError::NoError)) {
|
|
QMessageBox::about(NULL, "提示", "读取文件错误!");
|
|
|
|
}
|
|
QJsonObject jsonObject = document.object();
|
|
ui->comboBox_485->addItem("PL");
|
|
ui->comboBox_485->addItem("PS");
|
|
ui->comboBox_485->setCurrentText(jsonObject["rs485_port"].toString());
|
|
QStringList strbaudrate;
|
|
strbaudrate << "9600" << "38400" << "115200" ;
|
|
ui->comboBox_baudrate->addItems(strbaudrate);
|
|
QString str = QString("%1").arg(jsonObject["baudrate"].toInt());
|
|
ui->comboBox_baudrate->setCurrentText(str);
|
|
QString strServerID = QString("%1").arg(jsonObject["serverid"].toInt());
|
|
ui->lineEdit_serverID->setText(strServerID);
|
|
}
|
|
|
|
|
|
}
|
|
|
|
void CFileServerConfig::on_pushButtonPush_clicked()
|
|
{
|
|
QJsonObject netWorkObj,plObj,psObj;
|
|
psObj["ipAddress"] = ui->lineEdit_IP_PS->text();
|
|
psObj["hostName"] = ui->lineEdit_HostName_PS->text();
|
|
psObj["gateway"] = ui->lineEdit_GateWay_PS->text();
|
|
psObj["dnsName"] = ui->lineEdit_DNS_PS->text();
|
|
psObj["subnetMask"] = ui->lineEdit_Mask_PS->text();
|
|
psObj["networkPortStatus"] = ui->comboBox_NetStatus_PS->currentText();
|
|
QJsonObject optionPSObj;
|
|
optionPSObj["option"] = psObj;
|
|
|
|
plObj["ipAddress"] = ui->lineEdit_IP_PL->text();
|
|
plObj["hostName"] = ui->lineEdit_HostName_PL->text();
|
|
plObj["gateway"] = ui->lineEdit_GateWay_PL->text();
|
|
plObj["dnsName"] = ui->lineEdit_DNS_PL->text();
|
|
plObj["subnetMask"] = ui->lineEdit_Mask_PL->text();
|
|
plObj["networkPortStatus"] = ui->comboBox_NetStatus_PL->currentText();
|
|
QJsonObject optionPLObj;
|
|
optionPLObj["option"] = plObj;
|
|
netWorkObj.insert("PS",optionPSObj);
|
|
netWorkObj.insert("PL",optionPLObj);
|
|
|
|
QJsonDocument jsonDoc;
|
|
jsonDoc.setObject(netWorkObj);
|
|
#ifdef Q_OS_WIN32
|
|
QString fileName = QCoreApplication::applicationDirPath() + "\\config\\NetWorkConfig.json";
|
|
#endif
|
|
#ifdef Q_OS_LINUX
|
|
QString fileName = QCoreApplication::applicationDirPath() + "/config/NetWorkConfig.json";
|
|
#endif
|
|
|
|
|
|
QFile file(fileName);
|
|
file.open(QIODevice::WriteOnly);
|
|
file.write(jsonDoc.toJson());
|
|
file.close();
|
|
|
|
QString str2 = QString("ftp://%1/CIDW/qtconfig/%2").arg(IP).arg("NetWorkConfig.json");
|
|
g_FtpClient->SetServerInfo(str2);
|
|
g_FtpClient->SetUserInfo("root","@#cidw!@123456");
|
|
g_FtpClient->UpLoadFile(fileName,"NetWorkConfig.json");
|
|
|
|
QJsonObject tempObj,OptionObj;
|
|
OptionObj["localServerIpAddress"] = ui->lineEdit_ServerIP->text();
|
|
OptionObj["localServerPort"] = ui->lineEdit_ServerPort->text();
|
|
OptionObj["writingPeriodLocalServer"] = ui->lineEdit_ServerPort->text();
|
|
OptionObj["username"] = ui->lineEdit_UserName->text();
|
|
OptionObj["passwd"] = ui->lineEdit_Passwd->text();
|
|
|
|
tempObj["option"] = OptionObj;
|
|
m_ServerObject["Server"] = tempObj;
|
|
|
|
QJsonDocument jsonDoc2;
|
|
jsonDoc2.setObject(m_ServerObject);
|
|
#ifdef Q_OS_WIN32
|
|
fileName = QCoreApplication::applicationDirPath() + "\\config\\ServerConfig.json";
|
|
#endif
|
|
#ifdef Q_OS_LINUX
|
|
fileName = QCoreApplication::applicationDirPath() + "/config/ServerConfig.json";
|
|
#endif
|
|
|
|
|
|
QFile file2(fileName);
|
|
file2.open(QIODevice::WriteOnly);
|
|
file2.write(jsonDoc.toJson());
|
|
file2.close();
|
|
|
|
QString str3 = QString("ftp://%1/CIDW/qtconfig/%2").arg(IP).arg("ServerConfig.json");
|
|
g_FtpClient->SetServerInfo(str3);
|
|
g_FtpClient->SetUserInfo("root","@#cidw!@123456");
|
|
g_FtpClient->UpLoadFile(fileName,"ServerConfig.json");
|
|
}
|
|
|
|
void CFileServerConfig::slotNetMgr(QString sAddr, const QVariant &msg)
|
|
{
|
|
QJsonObject objec = msg.value<QJsonObject>();
|
|
bool Status = objec.take("success").toBool();
|
|
QString strMessage = objec.take("message").toString();
|
|
if(Status){
|
|
//QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("获取成功!"));
|
|
}else{
|
|
QMessageBox::information(this, QStringLiteral("提示"), strMessage);
|
|
return;
|
|
}
|
|
|
|
if(objec.contains("cmd"))
|
|
{
|
|
QJsonValue arrays_value = objec.take("cmd");
|
|
qDebug()<<"cmd ="<<arrays_value.toString();
|
|
|
|
if(arrays_value.toString() == "20"){
|
|
QMessageBox::information(this, QStringLiteral("提示"), QStringLiteral("获取成功!"));
|
|
QJsonObject contentObj = objec["content"].toObject();
|
|
QJsonObject sysObj = contentObj["SystemInfo"].toObject();
|
|
ui->label_MAC->setText(sysObj["dataWatchNo"].toString());
|
|
|
|
QString strTableName = " t_DeviceInfo ";
|
|
MAC = sysObj["dataWatchNo"].toString();
|
|
QString strUpdateCol = QString(" MAC = '%1' ").arg(sysObj["dataWatchNo"].toString());
|
|
QString strWhereSql = QString(" IP = '%1' ;").arg(ui->lineEdit_hostIP->text());
|
|
g_SqliteDB->UpdataDataCol(strTableName,strUpdateCol,strWhereSql);
|
|
}
|
|
}
|
|
disconnect(g_NetMgr,SIGNAL(sigNetMgr(QString, const QVariant&)), this, SLOT(slotNetMgr(QString,const QVariant&)));
|
|
}
|
|
|
|
|
|
|
|
void CFileServerConfig::on_pushButton_get_clicked()
|
|
{
|
|
QString strTableName = "t_DeviceInfo";
|
|
QString strUpdateSql = QString(" set IP = '%1' ;").arg(ui->lineEdit_hostIP->text());
|
|
g_SqliteDB->UpdateDataSql(strTableName,strUpdateSql);
|
|
|
|
QString col = "IP";
|
|
QString str = g_SqliteDB->GetSingelLine(strTableName,col);
|
|
QStringList strList = str.split(",");
|
|
IP = strList[0];
|
|
qDebug() << "IP" << IP << endl;
|
|
|
|
QJsonObject allObj,cmdBody;
|
|
QNetworkRequest req;
|
|
QString sUrl = QString("http://%1/cgi-bin/General.cgi/").arg(IP);
|
|
allObj.insert("cmd", "20");
|
|
cmdBody.insert("type","GET");
|
|
allObj["cmdBody"] = cmdBody;
|
|
req.setUrl(sUrl);
|
|
|
|
//绑定HTTP消息响应
|
|
connect(g_NetMgr,SIGNAL(sigNetMgr(QString, const QVariant&)), this, SLOT(slotNetMgr(QString,const QVariant&)));
|
|
g_NetMgr->PostJson(req,allObj);
|
|
|
|
}
|
|
|
|
|
|
void CFileServerConfig::on_pushButtonConfirm_clicked()
|
|
{
|
|
|
|
QJsonObject TcpConfigObj;
|
|
QJsonArray arrayIP;
|
|
arrayIP.append(ui->lineEdit_TCP_IP->text());
|
|
arrayIP.append(ui->lineEdit_TCP_IP_2->text());
|
|
arrayIP.append(ui->lineEdit_TCP_IP_3->text());
|
|
TcpConfigObj["ip"] = arrayIP;
|
|
TcpConfigObj["port"] = ui->lineEdit_TCP_PORT->text().toInt();
|
|
|
|
QJsonDocument jsonDoc;
|
|
jsonDoc.setObject(TcpConfigObj);
|
|
|
|
#ifdef Q_OS_WIN32
|
|
QString fileName = QCoreApplication::applicationDirPath() + "\\config\\TcpConfig.json";
|
|
#endif
|
|
#ifdef Q_OS_LINUX
|
|
QString fileName = QCoreApplication::applicationDirPath() + "/config/TcpConfig.json";
|
|
#endif
|
|
QFile file(fileName);
|
|
file.open(QIODevice::WriteOnly);
|
|
file.write(jsonDoc.toJson());
|
|
file.close();
|
|
|
|
QString str = QString("ftp://%1/CIDW/qtconfig/%2").arg(IP).arg("TcpConfig.json");
|
|
g_FtpClient->SetServerInfo(str);
|
|
g_FtpClient->SetUserInfo("root","@#cidw!@123456");
|
|
g_FtpClient->UpLoadFile(fileName,"TcpConfig.json");
|
|
}
|
|
|
|
|
|
void CFileServerConfig::on_pushButtonConfirm2_clicked()
|
|
{
|
|
QJsonObject RTUConfigObj;
|
|
RTUConfigObj["rs485_port"] = ui->comboBox_485->currentText();
|
|
RTUConfigObj["baudrate"] = ui->comboBox_baudrate->currentText().toInt();
|
|
RTUConfigObj["serverid"] = ui->lineEdit_serverID->text().toInt();
|
|
|
|
QJsonDocument jsonDoc;
|
|
jsonDoc.setObject(RTUConfigObj);
|
|
|
|
#ifdef Q_OS_WIN32
|
|
QString fileName = QCoreApplication::applicationDirPath() + "\\config\\ModbusConfig.json";
|
|
#endif
|
|
#ifdef Q_OS_LINUX
|
|
QString fileName = QCoreApplication::applicationDirPath() + "/config/ModbusConfig.json";
|
|
#endif
|
|
QFile file(fileName);
|
|
file.open(QIODevice::WriteOnly);
|
|
file.write(jsonDoc.toJson());
|
|
file.close();
|
|
|
|
QString str = QString("ftp://%1/CIDW/qtconfig/%2").arg(IP).arg("ModbusConfig.json");
|
|
g_FtpClient->SetServerInfo(str);
|
|
g_FtpClient->SetUserInfo("root","@#cidw!@123456");
|
|
g_FtpClient->UpLoadFile(fileName,"ModbusConfig.json");
|
|
}
|
|
|