|
|
|
@ -310,124 +310,138 @@ int ExportDataThread::insertXMLNode(const char* xmlPath, _XMLExportDataInfo& dat
|
|
|
|
|
|
|
|
|
|
void ExportDataThread::run()
|
|
|
|
|
{
|
|
|
|
|
while (!b_quit || (b_quit && (!export_XMLData_Info_queue->isEmpty() || readyToSendZip || !tmpListToZip.isEmpty()))) {
|
|
|
|
|
_XMLExportDataInfo element;
|
|
|
|
|
if (!export_XMLData_Info_queue->isEmpty()) {
|
|
|
|
|
export_XMLData_Info_queue->take(element);
|
|
|
|
|
|
|
|
|
|
if (element.cameraId != -1 && flag) {
|
|
|
|
|
char buf[256];
|
|
|
|
|
memset(buf, 0, 256);
|
|
|
|
|
QString xmlPath = QString(EXPORTDATA_FILE).arg(element.cameraId);
|
|
|
|
|
QString filePath = g_conf_path.config_path + "/" + xmlPath;
|
|
|
|
|
sprintf(buf, filePath.toLocal8Bit().constData(), element.cameraId);
|
|
|
|
|
insertXMLNode(buf, element);
|
|
|
|
|
QString remotePath = "/tmp/" + xmlPath;
|
|
|
|
|
ConnectServer(filePath, remotePath);
|
|
|
|
|
try {
|
|
|
|
|
while (!b_quit || (b_quit && (!export_XMLData_Info_queue->isEmpty() || readyToSendZip || !tmpListToZip.isEmpty()))) {
|
|
|
|
|
_XMLExportDataInfo element;
|
|
|
|
|
if (!export_XMLData_Info_queue->isEmpty()) {
|
|
|
|
|
export_XMLData_Info_queue->take(element);
|
|
|
|
|
|
|
|
|
|
if (element.cameraId != -1 && flag) {
|
|
|
|
|
char buf[256];
|
|
|
|
|
memset(buf, 0, 256);
|
|
|
|
|
QString xmlPath = QString(EXPORTDATA_FILE).arg(element.cameraId);
|
|
|
|
|
QString filePath = g_conf_path.config_path + "/" + xmlPath;
|
|
|
|
|
sprintf(buf, filePath.toLocal8Bit().constData(), element.cameraId);
|
|
|
|
|
insertXMLNode(buf, element);
|
|
|
|
|
QString remotePath = "/tmp/" + xmlPath;
|
|
|
|
|
ConnectServer(filePath, remotePath);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ((b_quit || (!timer->isActive() && !readyToSendZip)) && (!tmpListToZip.isEmpty())) {
|
|
|
|
|
listToZip.unite(tmpListToZip);
|
|
|
|
|
tmpListToZip.clear();
|
|
|
|
|
zipTimeStamp.append(lastTimeStamp[0]);
|
|
|
|
|
lastTimeStamp.clear();
|
|
|
|
|
readyToSendZip = true;
|
|
|
|
|
}
|
|
|
|
|
if ((b_quit || (!timer->isActive() && !readyToSendZip)) && (!tmpListToZip.isEmpty())) {
|
|
|
|
|
listToZip.unite(tmpListToZip);
|
|
|
|
|
tmpListToZip.clear();
|
|
|
|
|
zipTimeStamp.append(lastTimeStamp[0]);
|
|
|
|
|
lastTimeStamp.clear();
|
|
|
|
|
readyToSendZip = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (readyToSendZip && !listToZip.isEmpty()) {
|
|
|
|
|
QString remotePath;
|
|
|
|
|
QStringList zipFilePaths;
|
|
|
|
|
QStringList fileList;
|
|
|
|
|
QString okStr = "1";
|
|
|
|
|
QProcess process(0);
|
|
|
|
|
//QDateTime now_ts = QDateTime::currentDateTime();
|
|
|
|
|
QStringList argsNg;
|
|
|
|
|
QStringList argsOk;
|
|
|
|
|
|
|
|
|
|
//条盒TJ 小盒BJ
|
|
|
|
|
/*zipFilePaths.append(g_conf_path.save_pics_path + "/" + "416_BJ_" + zipTimeStamp[0] + "-00_" + zipTimeStamp[0] + "-59_0.zip");
|
|
|
|
|
zipFilePaths.append(g_conf_path.save_pics_path + "/" + "416_BJ_" + zipTimeStamp[0] + "-00_" + zipTimeStamp[0] + "-59_1.zip");
|
|
|
|
|
fileList.append(g_conf_path.save_pics_path + "/" + zipTimeStamp[0] + "ng.txt");
|
|
|
|
|
fileList.append(g_conf_path.save_pics_path + "/" + zipTimeStamp[0] + "ok.txt");*/
|
|
|
|
|
zipFilePaths.append("416_TJ_" + zipTimeStamp[0] + "-00_" + zipTimeStamp[0] + "-59_0.zip");
|
|
|
|
|
zipFilePaths.append("416_TJ_" + zipTimeStamp[0] + "-00_" + zipTimeStamp[0] + "-59_1.zip");
|
|
|
|
|
fileList.append(zipTimeStamp[0] + "ng.txt");
|
|
|
|
|
fileList.append(zipTimeStamp[0] + "ok.txt");
|
|
|
|
|
|
|
|
|
|
zipTimeStamp.clear();
|
|
|
|
|
|
|
|
|
|
QFile* file[2] = { NULL };
|
|
|
|
|
|
|
|
|
|
QFile fileNg(fileList[0]);
|
|
|
|
|
QFile fileOk(fileList[1]);
|
|
|
|
|
|
|
|
|
|
fileNg.open(QIODevice::WriteOnly);
|
|
|
|
|
fileOk.open(QIODevice::WriteOnly);
|
|
|
|
|
|
|
|
|
|
QTextStream ngStream(fileNg);
|
|
|
|
|
QTextStream okStream(fileOk);
|
|
|
|
|
|
|
|
|
|
argsNg.append("a");
|
|
|
|
|
argsNg.append(zipFilePaths[0]);
|
|
|
|
|
|
|
|
|
|
argsOk.append("a");
|
|
|
|
|
argsOk.append(zipFilePaths[1]);
|
|
|
|
|
|
|
|
|
|
// create zip file
|
|
|
|
|
QMapIterator<QString, bool> iterator(listToZip);
|
|
|
|
|
while (iterator.hasNext()) {
|
|
|
|
|
iterator.next();
|
|
|
|
|
if (iterator.value()) {
|
|
|
|
|
ngStream << iterator.key() << endl;
|
|
|
|
|
if (readyToSendZip && !listToZip.isEmpty()) {
|
|
|
|
|
QString remotePath;
|
|
|
|
|
QStringList zipFilePaths;
|
|
|
|
|
QStringList fileList;
|
|
|
|
|
QString okStr = "1";
|
|
|
|
|
QProcess process(0);
|
|
|
|
|
//QDateTime now_ts = QDateTime::currentDateTime();
|
|
|
|
|
QStringList argsNg;
|
|
|
|
|
QStringList argsOk;
|
|
|
|
|
|
|
|
|
|
//条盒TJ 小盒BJ
|
|
|
|
|
/*zipFilePaths.append(g_conf_path.save_pics_path + "/" + "416_BJ_" + zipTimeStamp[0] + "-00_" + zipTimeStamp[0] + "-59_0.zip");
|
|
|
|
|
zipFilePaths.append(g_conf_path.save_pics_path + "/" + "416_BJ_" + zipTimeStamp[0] + "-00_" + zipTimeStamp[0] + "-59_1.zip");
|
|
|
|
|
fileList.append(g_conf_path.save_pics_path + "/" + zipTimeStamp[0] + "ng.txt");
|
|
|
|
|
fileList.append(g_conf_path.save_pics_path + "/" + zipTimeStamp[0] + "ok.txt");*/
|
|
|
|
|
zipFilePaths.append("416_TJ_" + zipTimeStamp[0] + "-00_" + zipTimeStamp[0] + "-59_0.zip");
|
|
|
|
|
zipFilePaths.append("416_TJ_" + zipTimeStamp[0] + "-00_" + zipTimeStamp[0] + "-59_1.zip");
|
|
|
|
|
fileList.append(zipTimeStamp[0] + "ng.txt");
|
|
|
|
|
fileList.append(zipTimeStamp[0] + "ok.txt");
|
|
|
|
|
|
|
|
|
|
zipTimeStamp.clear();
|
|
|
|
|
|
|
|
|
|
QFile* file[2] = { NULL };
|
|
|
|
|
|
|
|
|
|
file[0] = new QFile(fileList[0]);
|
|
|
|
|
file[1] = new QFile(fileList[1]);
|
|
|
|
|
|
|
|
|
|
// QFile fileNg(fileList[0]);
|
|
|
|
|
// QFile fileOk(fileList[1]);
|
|
|
|
|
|
|
|
|
|
file[0]->open(QIODevice::WriteOnly);
|
|
|
|
|
file[1]->open(QIODevice::WriteOnly);
|
|
|
|
|
|
|
|
|
|
QTextStream ngStream(file[0]);
|
|
|
|
|
QTextStream okStream(file[1]);
|
|
|
|
|
|
|
|
|
|
argsNg.append("a");
|
|
|
|
|
argsNg.append(zipFilePaths[0]);
|
|
|
|
|
|
|
|
|
|
argsOk.append("a");
|
|
|
|
|
argsOk.append(zipFilePaths[1]);
|
|
|
|
|
|
|
|
|
|
// create zip file
|
|
|
|
|
QMapIterator<QString, bool> iterator(listToZip);
|
|
|
|
|
while (iterator.hasNext()) {
|
|
|
|
|
iterator.next();
|
|
|
|
|
if (iterator.value()) {
|
|
|
|
|
ngStream << iterator.key() << endl;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
okStream << iterator.key() << endl;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
okStream << iterator.key() << endl;
|
|
|
|
|
argsNg.append("-i@" + fileList[0]);
|
|
|
|
|
argsNg.append("-mx=3");
|
|
|
|
|
|
|
|
|
|
argsOk.append("-i@" + fileList[1]);
|
|
|
|
|
argsOk.append("-mx=3");
|
|
|
|
|
|
|
|
|
|
file[0]->close();
|
|
|
|
|
file[1]->close();
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < zipFilePaths.size(); i++) {
|
|
|
|
|
if (file[i]->size() == 0) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
process.start(QApplication::applicationDirPath() + "/7z.exe", i == 0 ? argsNg : argsOk);
|
|
|
|
|
process.waitForStarted();
|
|
|
|
|
process.waitForFinished();
|
|
|
|
|
//QString out = QString::fromLocal8Bit(process.readAllStandardOutput());
|
|
|
|
|
//qDebug() << out;
|
|
|
|
|
remotePath = zipFilePaths[i].mid(zipFilePaths[i].indexOf("image") - 1);
|
|
|
|
|
qDebug() << remotePath;
|
|
|
|
|
ConnectServer(zipFilePaths[i], remotePath);
|
|
|
|
|
QFile file(zipFilePaths[i]);
|
|
|
|
|
file.remove();
|
|
|
|
|
}
|
|
|
|
|
file[0]->remove();
|
|
|
|
|
file[1]->remove();
|
|
|
|
|
listToZip.clear();
|
|
|
|
|
readyToSendZip = false;
|
|
|
|
|
}
|
|
|
|
|
argsNg.append("-i@" + fileList[0]);
|
|
|
|
|
argsNg.append("-mx=3");
|
|
|
|
|
|
|
|
|
|
argsOk.append("-i@" + fileList[1]);
|
|
|
|
|
argsOk.append("-mx=3");
|
|
|
|
|
|
|
|
|
|
fileNg.close();
|
|
|
|
|
fileOk.close();
|
|
|
|
|
}
|
|
|
|
|
flag = false;
|
|
|
|
|
|
|
|
|
|
for (int i = 0; i < zipFilePaths.size(); i++) {
|
|
|
|
|
if (file[i]->size() == 0) {
|
|
|
|
|
continue;
|
|
|
|
|
}
|
|
|
|
|
process.start(QApplication::applicationDirPath() + "/7z.exe", i == 0 ? argsNg : argsOk);
|
|
|
|
|
process.waitForStarted();
|
|
|
|
|
process.waitForFinished();
|
|
|
|
|
//QString out = QString::fromLocal8Bit(process.readAllStandardOutput());
|
|
|
|
|
//qDebug() << out;
|
|
|
|
|
remotePath = zipFilePaths[i].mid(zipFilePaths[i].indexOf("image") - 1);
|
|
|
|
|
qDebug() << remotePath;
|
|
|
|
|
ConnectServer(zipFilePaths[i], remotePath);
|
|
|
|
|
QFile file(zipFilePaths[i]);
|
|
|
|
|
file.remove();
|
|
|
|
|
}
|
|
|
|
|
fileNg.remove();
|
|
|
|
|
fileOk.remove();
|
|
|
|
|
listToZip.clear();
|
|
|
|
|
readyToSendZip = false;
|
|
|
|
|
for (int index = 0; index < NumberOfSupportedCameras; index++) {
|
|
|
|
|
pDocument[index]->~XMLDocument();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
flag = false;
|
|
|
|
|
|
|
|
|
|
for (int index = 0; index < NumberOfSupportedCameras; index++) {
|
|
|
|
|
pDocument[index]->~XMLDocument();
|
|
|
|
|
if (hftp != NULL) {
|
|
|
|
|
InternetCloseHandle(hftp);
|
|
|
|
|
hftp = NULL;
|
|
|
|
|
}
|
|
|
|
|
if (hftp != NULL) {
|
|
|
|
|
InternetCloseHandle(hint);
|
|
|
|
|
hint = NULL;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (hftp != NULL) {
|
|
|
|
|
InternetCloseHandle(hftp);
|
|
|
|
|
hftp = NULL;
|
|
|
|
|
catch (const std::exception& e) {
|
|
|
|
|
// 注意:std::exception通常不捕获由运行时错误引发的异常
|
|
|
|
|
// 但这里是为了演示catch块的结构
|
|
|
|
|
std::cerr << __FUNCTION__<<"捕获到异常: " << e.what() << std::endl;
|
|
|
|
|
}
|
|
|
|
|
if (hftp != NULL) {
|
|
|
|
|
InternetCloseHandle(hint);
|
|
|
|
|
hint = NULL;
|
|
|
|
|
catch (...) {
|
|
|
|
|
// 使用省略号(...)可以捕获所有类型的异常,这是一种通用的捕获方式
|
|
|
|
|
std::cerr << "捕获到未知类型的异常" << std::endl;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|