89 lines
2.4 KiB
C++
89 lines
2.4 KiB
C++
#include <QApplication>
|
|
#include <QtConcurrent>
|
|
|
|
#define _IN_MAIN_CPP
|
|
#include "main.h"
|
|
#include "mainwindow.h"
|
|
|
|
int main(int argc,char *argv[])
|
|
{
|
|
QApplication app(argc, argv);
|
|
|
|
//支持中文编码
|
|
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
|
|
|
|
//下位机通讯
|
|
//上次所连接机器的IP
|
|
QDir apppath(qApp->applicationDirPath());
|
|
QString configfile;
|
|
configfile = apppath.path() + apppath.separator() + "config.ini";
|
|
QSettings settings(configfile, QSettings::IniFormat);
|
|
|
|
QString localIp = "192.168.16.41";
|
|
quint16 localPort = 5001;
|
|
|
|
QFile iniFile(configfile);
|
|
if(!iniFile.exists())//配置文件不存在
|
|
{
|
|
settings.setValue("Local/ip","192.168.16.41");
|
|
settings.setValue("Local/port",5001);
|
|
}
|
|
else
|
|
{
|
|
//本地IP和端口
|
|
localIp = settings.value("Local/ip").toString();
|
|
localPort = settings.value("Local/port").toInt();
|
|
}
|
|
|
|
g_machineList.clear();
|
|
|
|
int num = 0;
|
|
for(int i = 1; i <= MACHINE_NUM; i++)
|
|
{
|
|
QString str = "MachineNo" + QString::number(i);
|
|
QString strKey = str + "/name";
|
|
bool bl = settings.contains(strKey);
|
|
if(bl == true)
|
|
{
|
|
num++;
|
|
//建立连接
|
|
QString mcIp = settings.value(str+"/ip").toString();
|
|
quint16 mcPort = settings.value(str+"/port").toInt();
|
|
QString mcName = settings.value(str+"/name").toString();
|
|
|
|
Machine *pMachine = new Machine(); //建立连接
|
|
pMachine->setIpAndPort(mcName,mcIp,mcPort,localIp,localPort);//设置IP和端口
|
|
pMachine->startCommunication();
|
|
McPrintInfo mcf;
|
|
mcf.m_mcNum = num;
|
|
mcf.m_mcName = mcName;
|
|
mcf.m_ip = mcIp;
|
|
mcf.m_port = mcPort;
|
|
pMachine->m_mcPrintInfo = mcf;
|
|
g_machineList.append(pMachine);
|
|
}
|
|
}
|
|
|
|
MainWindow mainWi;
|
|
mainWi.initAllWinForm();
|
|
mainWi.show();
|
|
|
|
#if(0)
|
|
#if(1)
|
|
//有机器连接时才加载自动绘图目录
|
|
if(machineList.size() > 0)
|
|
{
|
|
mainWi.loadAutoPrintDirFiles();
|
|
}
|
|
#else
|
|
if(machineList.size() > 0)
|
|
{
|
|
QtConcurrent::run(&mainWi, &MainWindow::loadAutoPrintDirFiles);//并发线程的使用,为了避免同时加载窗体和加载文件时的窗体卡顿
|
|
}
|
|
#endif
|
|
#endif
|
|
|
|
app.exec();
|
|
return 0;
|
|
}
|