📄 main.cpp
字号:
// #include <qapplication.h>#include "baseclass/publicclass.h"#include "dataprocess.h"#include "baseclass/signalprocess.h"#include "baseclass/ysexception.h"#include "baseclass/moduleinit.h"#include "baseclass/threadclass.h"#include "baseclass/yspubfunction.h"CPublicClass g_PublicClass;/////////////////////////////////////////////////////////////////////////当主模块调用时,带参数:模块名称 -r(可以重启) -d(注册模块) -p//当独立启动时,带参数 :-r(可以重启) -d(注册模块)//-o(调试信息显示在控制台) -p(调试信息发送回操作模块)//-trace=(设备号,11111)是否监视报文///////////////////////////////////////////////////////////////////////int main( int argc, char ** argv ){// QApplication a( argc, argv ); //分析参数 g_PublicClass.AnylizeParam("",argc,argv); if(_CheckParam(argc,argv,"-v")) //显示版本信息 { printf("版本:5.0.0.2\n"); printf("最后一次修改日期:2005-12-30\n"); printf("制造商:南京银山电子有限公司\n");// printf("开发工具:Qt%s\n",qVersion()); abort(); } if(_CheckParam(argc,argv,"-help")) //显示帮助信息 { _DisplayHelp(); } g_PublicClass.m_SelfPid=getpid(); //安装信号发生处理机制 g_PublicClass.m_Signal.InstallSignalProcess2(); //处理正常退出 g_PublicClass.m_Signal.InstallSignalProcess3(); //处理内存错误退出 g_PublicClass.m_Signal.InstallSignalProcess4(); //处理浮点错误退出 g_PublicClass.m_Signal.InstallSignalProcess5(); //处理断开的管道 g_PublicClass.m_Signal.InstallSignal_NoticQueue(); //安装队列数据通知信号 //读配置文件 g_PublicClass.GetConfigFileInfo("subconfig.xml"); /* printf("m_SendFlag:%d\n",g_PublicClass.m_MonitorData.m_SendFlag); printf("m_RecvFlag:%d\n",g_PublicClass.m_MonitorData.m_RecvFlag); for(int k=0;k<5;k++) printf("m_MachineNo:%d\n",g_PublicClass.m_MonitorData.m_MachineNo[k]); printf("m_isDebug:%d\n",g_PublicClass.m_isDebug); printf("m_OutToConsole:%d\n",g_PublicClass.m_OutToConsole); printf("m_DebugFile:%s\n",g_PublicClass.m_DebugFile.data()); _printf_error(ERROR,"%d,%s\n",g_PublicClass.m_MonitorData.m_SendFlag,g_PublicClass.m_DebugFile.data()); abort();*/ //数据库检测 CDataProcess dp; while(!dp.CheckDatabase()) { _printf_error(ERROR,"数据库连接失败!\n");sleep(1); } //得到发送,接收队列号,如果没有产生,则在函数中产生 long hdbc=-1; while(!dp.GetPublicInfo(hdbc)) { printf("进程号没有创建,请先启动后台服务......\n"); sleep(1); } //安装信号发生处理机制 g_PublicClass.m_Signal.InstallSignalProcess1(); //参数 int retry=0; if(_CheckParam(argc,argv,"-r")) {retry=1;} hdbc=-1; /*if(_CheckParam(argc,argv,"-d")) */{dp.InsertToModuleInfo(hdbc,"00",retry);} QString szfile = ""; szfile.sprintf("%s/devini/%s.ini", g_PublicClass.GetWorkPath().data(), g_PublicClass.m_ModuleName.data()); if (!g_PublicClass.m_Ini.ReadIniFile(szfile)) printf("--@@MOUDLE devini file open error! filename=%s @@--\n", szfile.data()); //启动下级设备 CModuleInit si; si.StartDevices(NULL); pthread_t t; int ret=0; ret=pthread_create(&t,NULL,RecvMsgQueueThread,NULL); ret=pthread_create(&t,NULL,SendMsgQueueThread,NULL); //ret=pthread_create(&t,NULL,ProcessRecvMsgThread,NULL); //ret=pthread_create(&t,NULL,DispDataThread,NULL); //ret=pthread_create(&t,NULL,ChangeModuleInfoThread,NULL); _printf_error(OTHER,"%s-启动",g_PublicClass.m_ModuleName.data());// return a.exec(); while(1)usleep(200*1000*1000);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -