📄 basedevice.cpp
字号:
//basedevice.cpp#include "BaseDevice.h"extern CPublicClass g_PublicClass;CBaseDevice::CBaseDevice(st_deviceinfo DevInfo){ memset(&m_CmdInfo, 0x00, sizeof(st_nodeinfo)); memcpy(&m_DevInfo, &DevInfo, sizeof(st_deviceinfo)); m_CmdInfo.m_MachineNo = m_DevInfo.m_MachineNo; m_pComm = NULL; m_bSendState1 = true; m_bSendState0 = true; m_bCommError = false; m_iThreadId = 0; m_iNoDataTime = 0; m_iTryTime = 0; m_szSysPath = g_PublicClass.GetWorkPath()+"/data/"+m_DevInfo.m_MachineType+"/";}CBaseDevice::~CBaseDevice(){}bool CBaseDevice::InitClass(){ return true;}void CBaseDevice::SetHdbc(long hdbc){ hdbc = 0; m_hdbc = -1;}long CBaseDevice::GetHdbc(){ return m_hdbc;}void CBaseDevice::NotifyMsg(uint dataype, QString RecordIndex, QString TableName, int iresult)//用于突发信息{ CDataNode* pNode = new CDataNode(); m_CmdInfo.m_MachineNo=m_DevInfo.m_MachineNo; //Linag 2006-11-01 memcpy(&pNode->m_nodeinfo, &m_CmdInfo, sizeof(st_nodeinfo)); pNode->m_nodeinfo.mtype = pNode->m_nodeinfo.requestid; pNode->m_nodeinfo.requestid = g_PublicClass.m_SelfPid; pNode->m_nodeinfo.transtopid = 0 ; //LiangZhen 2006-03-22 pNode->m_nodeinfo.m_iResult = iresult; pNode->m_nodeinfo.m_DataType = dataype; memset(pNode->m_nodeinfo.m_UniqueCmd , 0 , sizeof pNode->m_nodeinfo.m_UniqueCmd) ; strcpy(pNode->m_nodeinfo.m_RecordFlag, RecordIndex.data()); strcpy(pNode->m_nodeinfo.m_TableName, TableName.data()); /*int pid = m_dp.GetModulePid(m_hdbc, "98"); if (pid > 0) if (!m_dp.CheckModuleRunning(m_hdbc, pid)) pid = 0; if (pid > 0)//上送主模块 { pNode->m_nodeinfo.mtype = pid; //LiangZhen 2006-03-12 g_PublicClass.m_NodeManage.AddSendDataNode(pNode); } else*///上送操作模块 { //m_dp.PreMakeNoteList(m_hdbc,pNode->m_nodeinfo); //LiangZhen 2006-03-23 m_dp.NoticOperModule(m_hdbc, pNode->m_nodeinfo); m_dp.MakeToSendState(m_hdbc,pNode->m_nodeinfo); //LiangZhen 2006-03-12 delete pNode; }}void CBaseDevice::AnswerCommand(uint dataype, QString RecordIndex, QString TableName, int iresult)//用于回答命令{ CDataNode* pNode = new CDataNode(); memcpy(&pNode->m_nodeinfo, &m_CmdInfo, sizeof(st_nodeinfo)); pNode->m_nodeinfo.mtype = pNode->m_nodeinfo.requestid; pNode->m_nodeinfo.requestid = g_PublicClass.m_SelfPid; pNode->m_nodeinfo.m_iResult = iresult; pNode->m_nodeinfo.m_DataType = dataype; strcpy(pNode->m_nodeinfo.m_RecordFlag, RecordIndex.data()); strcpy(pNode->m_nodeinfo.m_TableName, TableName.data()); /* int pid = m_dp.GetModulePid(m_hdbc, "98"); if (pid > 0) if (!m_dp.CheckModuleRunning(m_hdbc, pid)) pid = 0; if (pid > 0)//上送主模块 { if (0 == m_CmdInfo.transtopid) { pNode->m_nodeinfo.mtype = pid; pNode->m_nodeinfo.transtopid = m_CmdInfo.requestid ; } } else { if(m_CmdInfo.transtopid > 0) { pNode->m_nodeinfo.mtype = m_CmdInfo.transtopid; pNode->m_nodeinfo.transtopid = 0; } }*/ g_PublicClass.m_NodeManage.AddSendDataNode(pNode); }void CBaseDevice::SendMsgToMain(int iResult, QString szMsg){ //int pid = m_dp.GetModulePid(m_hdbc, "99"); Liang 2006-3-20 //if (pid <= 0) return; Liang 2006-3-20 CDataNode* pNode = new CDataNode(); memcpy(&pNode->m_nodeinfo, &m_CmdInfo, sizeof(st_nodeinfo)); pNode->m_nodeinfo.mtype = m_CmdInfo.requestid; pNode->m_nodeinfo.requestid = m_CmdInfo.mtype; pNode->m_nodeinfo.m_iResult = iResult; pNode->m_nodeinfo.m_DisplayFlag = 1; if (szMsg != "") { char* pMsg = new char[szMsg.length()+1]; memset(pMsg, 0x00, szMsg.length()+1); memcpy(pMsg, szMsg.data(), szMsg.length()); pNode->m_nodeinfo.m_SegmentPid = (long)pMsg; pNode->m_nodeinfo.m_iSize = szMsg.length()+1; } /*int pid = m_dp.GetModulePid(m_hdbc, "98"); //Liang 2006-3-20 if (pid > 0) if (!m_dp.CheckModuleRunning(m_hdbc, pid)) pid = 0; //Liang 2006-3-20 if (pid > 0)//上送主模块 //Liang 2006-3-20 { //Liang 2006-3-20 if (0 == m_CmdInfo.transtopid) //Liang 2006-3-20 { //Liang 2006-3-20 pNode->m_nodeinfo.mtype = pid; //Liang 2006-3-20 pNode->m_nodeinfo.transtopid = m_CmdInfo.requestid ; //Liang 2006-3-20 } //Liang 2006-3-20 } //Liang 2006-3-20 else //Liang 2006-3-20 { //Liang 2006-3-20 if(m_CmdInfo.transtopid > 0) //Liang 2006-3-20 { //Liang 2006-3-20 pNode->m_nodeinfo.mtype = m_CmdInfo.transtopid; //Liang 2006-3-20 pNode->m_nodeinfo.transtopid = 0; //Liang 2006-3-20 } //Liang 2006-3-20 } */ //Liang 2006-3-20 g_PublicClass.m_NodeManage.AddSendDataNode(pNode);}void CBaseDevice::SendCommStateToMain(int istate){ st_event Rpt_Event; memset(&Rpt_Event, 0x00, sizeof(st_event)); st_eventact EventAct; memset(&EventAct, 0x00, sizeof(st_eventact)); Rpt_Event.m_StationNo = g_PublicClass.m_StationNo; Rpt_Event.m_MachineNo = m_DevInfo.m_MachineNo; Rpt_Event.m_CpuNo = 0; Rpt_Event.m_Entry = 255; Rpt_Event.m_FaultNum = ++m_iFaultNo; strcpy(Rpt_Event.m_MachineName, m_DevInfo.m_MachineName); QString szdt = getTimeStr(); memcpy(Rpt_Event.m_ActionTime, szdt.data(), szdt.length()); QString RecordIndex = "", szdev = ""; if (!m_dp.InsertSelfChk(m_hdbc, Rpt_Event, RecordIndex)) return; szdev.sprintf("%s", m_DevInfo.m_MachineName); g_PublicClass.m_Ini.SetKeyIntValue(szdev.data(), "FAULTNO", m_iFaultNo); EventAct.m_MachineNo = m_DevInfo.m_MachineNo; EventAct.m_CpuNo = 0; EventAct.m_FaultNum = m_iFaultNo; EventAct.m_ActNo = 0; EventAct.m_ActTime = 0; EventAct.m_Dpi = istate; QString sztmp = "与"+QString(m_DevInfo.m_MachineName); if (EventAct.m_Dpi == 0) { istate = 1 ; //Liang 2006/8/7 sztmp += "通信发生异常"; }//if else { istate = 0 ; //Liang 2006/8/7 sztmp += "通信恢复正常"; }//else ++EventAct.m_Dpi ; memcpy(EventAct.m_ActElement, sztmp.data(), sztmp.length()); EventAct.m_FunCode = 255; EventAct.m_InfCode = 255; EventAct.m_PFunCode = 255; EventAct.m_PInfCode = 255; EventAct.m_Group = 255; EventAct.m_Entry = 255; if (!m_dp.InsertSelfChkAct(m_hdbc, &EventAct,sizeof(st_eventact), RecordIndex)) return; m_dp.UpdateCOMMSTATE(m_DevInfo.m_MachineNo , istate) ; //Liang 2006/8/7 NotifyMsg(DATA_EVENT, RecordIndex, "ALERT_RPT");}bool CBaseDevice::ISendData(BYTE* pbuff, int& isize, int timeout){timeout=timeout; size_t s=isize; if (-1==m_pComm->write(pbuff, s)) { m_bCommError = true; return false; } g_PublicClass.OutDataToConsole(m_DevInfo.m_MachineNo, m_DevInfo.m_MachineName, pbuff, isize, 0); return true;} bool CBaseDevice::IRecvData(BYTE* pbuff, int& isize, int timeout){timeout=timeout; if (!m_pComm->read(pbuff, isize)) { m_bCommError = true; return false; } g_PublicClass.OutDataToConsole(m_DevInfo.m_MachineNo, m_DevInfo.m_MachineName, pbuff, isize, 1); if (m_iTryTime != 0) { if (isize > 0) m_iNoDataTime = 0; else m_iNoDataTime++; if (m_iNoDataTime >= m_iTryTime) { m_iNoDataTime = 0; m_bCommError = true; } } return true;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -