亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? signalprocess.cpp~

?? 電力系統Linux設備通訊程序 主要是為了各大電網通訊數據代碼
?? CPP~
字號:
//signalprocess.cpp#include "signalprocess.h"#include "devmoduledlg.h"#include "Device.h"#include <qtabwidget.h> #include <qtextbrowser.h> #include "baseclass/publicclass.h"extern CPublicClass g_PublicClass;////////////////////////////////////////////設備啟動方案////////////////////////////////////////////*主模塊傳送來的是一個結構數組:st_deviceinfo[count]1.先找出ParentIndex=""的設備,這種設備是獨立的或是總線,管理機,啟動這些設備的線程,  并產生設備的接點,接點中:m_deviceinfo存放當前設備信息.2.按照設備接點在結構數組中查找:ParentIndex=當前接點的RecordIndex的設備,這些設備  是總線或管理機下的設備,這些設備的信息添加到接點中的:m_ChildDevList中,并填入線  程號3.簡單地說就是獨立設備產生一個接點,其m_ChildDevList為空,每個總線或管理機產生一  個接點,其m_ChildDevList中存放其下級設備*//////////////////////////////////////////////////////////////////////////////////////////////////////CSystemInit::CSystemInit(){}CSystemInit::~CSystemInit(){  }void CSystemInit::SendMsgTextToMain(int flag, QString sMsg){    QDateTime t = QDateTime::currentDateTime();    QString s1 = "";    s1 = "["+t.toString("yyyy-MM-dd hh:mm:ss")+"]:";    s1 = s1+_T(sMsg);    ((DevModuleDlg*)g_PublicClass.m_MainForm)->SetLogText(flag, s1);}bool CSystemInit::StartDevices(void* ppNode){    CDataNode* pNode = (CDataNode*)ppNode;    if (!pNode) return false;    int count = pNode->m_nodeinfo.m_iSize/sizeof(st_deviceinfo);    st_deviceinfo dst[count];    memcpy(&dst, (void*)pNode->m_nodeinfo.m_SegmentPid, pNode->m_nodeinfo.m_iSize);    //啟動一級保護通訊線程    for (int i=0; i<count; i++)    {  if (StartSomeTopDevice(&dst, i, count) == 0) continue;    }    return true;}//////////////////////////啟動設備列表中的獨立或頂級設備線程//////////////////////////////////int CSystemInit::StartSomeTopDevice(void* dlist, int pi, int count){ CDeviceNode* pNode = NULL; st_deviceinfo DevBuff; memcpy(&DevBuff, (char*)dlist+pi*sizeof(st_deviceinfo), sizeof(st_deviceinfo)); //判斷是否是總線或管理機 if (DevBuff.m_ParentIndex[0] != '\0') return 0; //按設備編號查找 int index = 0, ret = 0; pthread_t threadid = 0; pNode = g_PublicClass.m_NodeManage.FindDevicebyEquipNo(DevBuff.m_EquipNo, 0, index); if (!pNode) {  //產生頂級設備接點  pNode = new CDeviceNode();  pNode->m_ModuleState = 0;  pNode->m_Level = 0;  memcpy(&pNode->m_deviceinfo, &DevBuff, sizeof(st_deviceinfo));  g_PublicClass.m_NodeManage.m_DeviceNode.append(pNode);   //啟動設備通訊線程  usleep(1);  ret = pthread_create(&threadid, NULL, DeviceCommunicateMainThread, pNode);  pNode->m_deviceinfo.m_ThreadId = threadid;//線程號付給接點線程號  pNode->AddChildDevices(dlist, count, threadid);  printf("---------------@@This Thread Id:%d\n",threadid);  pNode->m_deviceinfo.m_SupportCmd = InstallDeviceMenu(pNode);  //當是點對點通信時,也考慮成總線方式,只不過該總線下只有一個設備而已  if (pNode->m_ChildDevList.count() == 0)  {   pNode->m_ChildDevList.append(pNode->m_deviceinfo);  }  pNode->m_ModuleState = 1;  //產生發送數據接點  st_deviceinfo di[1+pNode->m_ChildDevList.count()];  memcpy(&di[0], &pNode->m_deviceinfo, sizeof(st_deviceinfo));  if ((int)pNode->m_ChildDevList.count() > 0)  {   DeviceInfoListType::iterator it;   for (int i=0; i<(int)pNode->m_ChildDevList.count(); i++)   {    it = pNode->m_ChildDevList.at(i);    memcpy(&di[1+i], &(*it), sizeof(st_deviceinfo));   }  }  g_PublicClass.m_NodeManage.AddSendDataNode(   g_PublicClass.m_MainModuleNode.m_deviceinfo.mtype, 0, WM_SENDDEVTHREADID,   (void*)&di, (1+pNode->m_ChildDevList.count())*sizeof(st_deviceinfo));   //設備加入界面  ((DevModuleDlg*)g_PublicClass.m_MainForm)->AddTopLevelDevice((void*)pNode);  ((DevModuleDlg*)g_PublicClass.m_MainForm)->AddChildDevice((void*)pNode);    } else//總線設備已經啟動,現有新的設備啟動 {  CDeviceNode* pDevNode = NULL;  st_deviceinfo Dev;  for (int i=0; i<count; i++)  {   memcpy(&Dev, (char*)dlist+i*sizeof(st_deviceinfo), sizeof(st_deviceinfo));   if (Dev.m_ParentIndex[0] == '\0') continue;   if (QString(Dev.m_ParentIndex) != QString(pNode->m_deviceinfo.m_RecordIndex)) continue;   pDevNode = g_PublicClass.m_NodeManage.FindDevicebyEquipNo(Dev.m_EquipNo, 1, index);   if (!pDevNode)//在設備列表中添加該設備   {        st_nodeinfo st;    memset(&st, 0x00, sizeof(st_nodeinfo));				st.m_CurrentThread = pNode->m_deviceinfo.m_ThreadId;				st.m_MachineNo = Dev.m_EquipNo;				st.m_DataType = WM_RUN_A_DEVICE;//設備啟動命令				st_deviceinfo* pDev = new st_deviceinfo;				memcpy(pDev, &Dev, sizeof(st_deviceinfo));				st.m_SegmentPid = (long)pDev;				st.m_iSize = sizeof(st_deviceinfo);				CDataNode* pMsgNode = new CDataNode();				memcpy(&pMsgNode->m_nodeinfo, &st, sizeof(st_nodeinfo));				g_PublicClass.m_NodeManage.m_RecvNode.append(pMsgNode);			}		}	}    return 1;}//******************安裝設備操作菜單的函數**************************////*從XML文件中讀取菜單	int CSystemInit::InstallDeviceMenu(CDeviceNode* pNode){    DeviceInfoListType::iterator it;    QString xmlfile;	QDomNode node, cnode;	for (int i=0; i<(int)pNode->m_ChildDevList.count(); i++)	{		it = pNode->m_ChildDevList.at(i);		xmlfile.sprintf("%s", (*it).m_MachineType);		if (xmlfile == "" || xmlfile.isEmpty()) continue;		xmlfile = g_PublicClass.GetWorkPath()+"/devconfig/"+xmlfile+".xml";		CXMLReader xml(xmlfile);		xml.OpenDomXMLFile();		node = xml.GetDomNode("body", "CONFIG");		cnode  = xml.GetChildNode(node, "MENU", "", "");		QString sztmp = "";		xml.GetNodeAttr(cnode, "value", sztmp);		(*it).m_SupportCmd = sztmp.toInt();	}	xmlfile.sprintf("%s", pNode->m_deviceinfo.m_MachineType);	if (xmlfile == "" || xmlfile.isEmpty()) return 0;	xmlfile = g_PublicClass.GetWorkPath()+"/devconfig/"+xmlfile+".xml";	CXMLReader xml(xmlfile);	xml.OpenDomXMLFile();	node = xml.GetDomNode("body", "CONFIG");	cnode = xml.GetChildNode(node, "MENU", "", "");	QString sztmp = "";	xml.GetNodeAttr(cnode, "value", sztmp);	return sztmp.toInt();}void SignalProcessDef1x(int signum, siginfo_t* info, void* myact){    CSystemInit csi;    QString s1 = "";    if (signum == 0 || !info || !myact) return;	if (info->si_int >= 0) //主模塊送的是消息隊列號	{		s1.sprintf("收到主模塊發送隊列號:%d;接收隊列號:%d", g_PublicClass.m_SendMsgQueueID, g_PublicClass.m_ReceMsgQueueID);	}	else if (info->si_int < 0)//主模塊的測試信號	{		((DevModuleDlg*)g_PublicClass.m_MainForm)->FlashLamp();		g_PublicClass.m_MainModuleNode.m_LastTime = QDateTime::currentDateTime();		g_PublicClass.m_Signal.SendSignal(info->si_pid, SIGUSR1, 0, NULL, 0);		s1.sprintf("收到主模塊測試信號:%d", info->si_pid);    }    csi.SendMsgTextToMain(0, s1);    return;}void SignalProcessDef2x(int signum, siginfo_t* info, void* myact){    if (signum == 0 || !info || !myact) return;    return;}/////////////////////////////////////常駐接收信息線程//////////////////////////////////////void* RecvMsgQueueThread(void* lp){    lp = NULL;    CMessageQueue cm;	st_nodeinfo st;	CSegment cs;    while (!g_PublicClass.m_Stop)    {		//當沒有收到消息號時,等待		if (g_PublicClass.m_ReceMsgQueueID == 0) 		{			usleep(100);			continue;		}		if (!cm.ReadMessage(g_PublicClass.m_ReceMsgQueueID, g_PublicClass.m_SelfPid, &st))		{			usleep(100);			continue;		}		CDataNode* pNode = new CDataNode();		memcpy(&pNode->m_nodeinfo, &st, sizeof(st_nodeinfo));		g_PublicClass.m_NodeManage.m_RecvNode.append(pNode);		usleep(10);    }    return NULL;}/////////////////////////////////////常駐發送信息線程//////////////////////////////////////void* SendMsgQueueThread(void* lp){    lp = NULL;    CMessageQueue cm;	CSegment cs;    CDataNode* pNode = NULL;    while (!g_PublicClass.m_Stop)    {		//當發送隊列沒有形成時,等待		if (g_PublicClass.m_SendMsgQueueID == 0) 		{			usleep(10);			continue;		}		pNode = g_PublicClass.m_NodeManage.FindSendDataNode();		if (!pNode)		{			usleep(10);			continue;		}			if (pNode->m_nodeinfo.m_DataType == WM_STOP_A_MODULE)		{			g_PublicClass.m_Stop = true;			sleep(2);		}				cm.SendMessage(g_PublicClass.m_SendMsgQueueID, (void*)pNode);		//刪除數據接點		g_PublicClass.m_NodeManage.DeleteSendDataNode(pNode);		usleep(10);    }    return NULL;}////////////////////////////////////常駐處理接收信息線程//////////////////////////////////////void* ProcessRecvMsgThread(void* lp){    lp = NULL;    CDataNode* pNode = NULL;	CSystemInit csi;    while (!g_PublicClass.m_Stop)    {		pNode = g_PublicClass.m_NodeManage.FindRecvDataNode(0);		if (!pNode)		{			usleep(10);			continue;		}		switch (pNode->m_nodeinfo.m_DataType)		{		case WM_STARTDEVICETHREAD://啟動設備線程			csi.StartDevices((void*)pNode);		//	printf("--@@Com103 start device @@--\n");			break;		case WM_MONITORSET:			if (pNode->m_nodeinfo.m_SegmentPid > 0 && pNode->m_nodeinfo.m_iSize > 0)			{				memcpy(&g_PublicClass.m_MonitorSrc, (char*)pNode->m_nodeinfo.m_SegmentPid, sizeof(st_monitorsrc));			}			break;		}		//刪除數據接點		g_PublicClass.m_NodeManage.DeleteRecvDataNode(pNode);    }    return NULL;}void* DispDataThread(void* lp){	lp = NULL;	while (g_PublicClass.m_MainForm == NULL) usleep(100);	CDataNode* pNode = NULL;	DevModuleDlg* pDlg = (DevModuleDlg*)g_PublicClass.m_MainForm;	QTextBrowser* pBrower = NULL;	    while (!g_PublicClass.m_Stop)    {		pNode = g_PublicClass.m_NodeManage.FindDispDataNode();		if (pNode)		{			QString dispstr = "", tmpstr = "";			uchar* pData = (uchar*)pNode->m_nodeinfo.m_SegmentPid;			int iSize = pNode->m_nodeinfo.m_iSize;			QDateTime dt = QDateTime::currentDateTime();			if (pNode->m_nodeinfo.m_DataType == DATA_SENDDATA)			{				tmpstr.sprintf("[%s]-Send:%d Dev:%d", dt.toString("yyyy-MM-dd-hh:mm:ss.zzz").data(), iSize, pNode->m_nodeinfo.m_MachineNo);				pBrower = (QTextBrowser*)pDlg->GetTextBrower(2);			}			else if (pNode->m_nodeinfo.m_DataType == DATA_RECVDATA)			{				tmpstr.sprintf("[%s]-Recv:%d Dev:%d", dt.toString("yyyy-MM-dd-hh:mm:ss.zzz").data(), iSize, pNode->m_nodeinfo.m_MachineNo);				pBrower = (QTextBrowser*)pDlg->GetTextBrower(1);			}			pBrower->setColor(QColor::QColor(255,0,0));			pBrower->append(tmpstr);			for (int i=0; i<iSize; i++)			{				tmpstr.sprintf("%02X ", pData[i]);				dispstr += tmpstr;			}			pBrower->setColor(QColor::QColor(0,0,255));			pBrower->append(dispstr);			if (pBrower->lines() > 1000) pBrower->clear();			g_PublicClass.m_NodeManage.DeleteDispDataNode(pNode);			usleep(10);			continue;		}		usleep(100);    }    return NULL;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91免费视频大全| 久久精品99国产精品日本| 337p日本欧洲亚洲大胆精品| 欧美裸体bbwbbwbbw| 精品视频在线免费看| 在线观看亚洲a| 欧美日韩亚洲另类| 欧美日韩大陆一区二区| 7777精品伊人久久久大香线蕉完整版| 欧美性videosxxxxx| 欧美午夜不卡在线观看免费| 欧美午夜不卡在线观看免费| 在线播放一区二区三区| 日韩一区二区高清| 国产亚洲一区二区三区在线观看| 久久中文娱乐网| 中文av字幕一区| 亚洲最大成人综合| 青青青爽久久午夜综合久久午夜| 激情综合网最新| 成人在线视频一区二区| 在线观看一区二区精品视频| 91精品国产91久久久久久最新毛片| 日韩精品一区二区三区四区视频| 久久久影视传媒| 亚洲精品菠萝久久久久久久| 日韩影院免费视频| 大桥未久av一区二区三区中文| 色综合一区二区三区| 91精品国产高清一区二区三区| 久久久亚洲高清| 亚洲一区二区三区小说| 久久电影网站中文字幕| 成人网男人的天堂| 欧美精品xxxxbbbb| 国产精品久久免费看| 亚洲国产精品一区二区www在线| 美女一区二区视频| 在线精品亚洲一区二区不卡| 久久男人中文字幕资源站| 一区二区三区四区在线| 国模套图日韩精品一区二区| 日本高清成人免费播放| 久久毛片高清国产| 日韩av中文字幕一区二区| 91在线丨porny丨国产| 欧美大片在线观看一区二区| 亚洲男女毛片无遮挡| 国产揄拍国内精品对白| 欧美日韩一区视频| 亚洲少妇30p| 国产不卡高清在线观看视频| 欧美精品一二三| 亚洲综合精品自拍| yourporn久久国产精品| 久久久青草青青国产亚洲免观| 五月综合激情婷婷六月色窝| 色综合色狠狠综合色| 国产精品久久影院| 国产剧情在线观看一区二区| 51午夜精品国产| 亚洲成av人片一区二区| 91免费在线看| 亚洲欧美激情视频在线观看一区二区三区 | 日韩三级视频中文字幕| 洋洋成人永久网站入口| 91在线丨porny丨国产| 欧美国产日韩a欧美在线观看| 激情欧美一区二区三区在线观看| 欧美日韩一区视频| 亚洲成人动漫在线观看| 欧洲av一区二区嗯嗯嗯啊| 亚洲精品国产成人久久av盗摄| 欧美日韩在线一区二区| 亚洲欧美一区二区三区久本道91| 国产成人精品免费视频网站| 久久亚区不卡日本| 国产91在线看| 国产精品福利电影一区二区三区四区| 丁香五精品蜜臀久久久久99网站| 久久亚洲私人国产精品va媚药| 国内久久婷婷综合| 国产拍欧美日韩视频二区| 成人黄动漫网站免费app| 一区二区中文视频| 在线免费亚洲电影| 午夜电影网一区| 欧美tickling网站挠脚心| 麻豆精品视频在线观看| 337p日本欧洲亚洲大胆色噜噜| 国产乱淫av一区二区三区| 中文天堂在线一区| 欧美性三三影院| 看电视剧不卡顿的网站| 国产日韩欧美亚洲| 色综合视频在线观看| 亚州成人在线电影| 久久久综合激的五月天| a级高清视频欧美日韩| 亚洲永久精品国产| 日韩免费观看2025年上映的电影| 国产高清视频一区| 一级中文字幕一区二区| 欧美一区二区精品久久911| 国产乱人伦偷精品视频不卡 | 国产精品入口麻豆九色| 色婷婷精品久久二区二区蜜臂av| 午夜视频久久久久久| 久久青草欧美一区二区三区| 一本到不卡免费一区二区| 五月天丁香久久| 国产蜜臀av在线一区二区三区| 在线看国产日韩| 国产精品一区二区久激情瑜伽| 亚洲美女视频一区| 亚洲中国最大av网站| www国产精品av| 欧美性受极品xxxx喷水| 国产精品1区2区3区在线观看| 亚洲一区二区视频在线观看| 久久精品亚洲国产奇米99| 欧美视频日韩视频在线观看| 国产一区二区三区四区五区入口| 亚洲一区二区av在线| 国产欧美日韩在线| 日韩精品一区二区三区中文不卡 | 在线视频欧美精品| 国产成人精品亚洲午夜麻豆| 日韩精品一二三四| 一卡二卡三卡日韩欧美| 中文字幕亚洲一区二区av在线| 日韩精品一区二区三区中文精品| 91美女蜜桃在线| 不卡高清视频专区| 国内精品视频666| 日本欧美在线观看| 午夜欧美在线一二页| 亚洲免费三区一区二区| 国产欧美日韩在线观看| 久久久久久久av麻豆果冻| 日韩午夜在线播放| 欧美浪妇xxxx高跟鞋交| 色av综合在线| 91片在线免费观看| 丁香亚洲综合激情啪啪综合| 国产一区二区电影| 久久av中文字幕片| 久久国产综合精品| 久久精品久久综合| 日韩av一级电影| 免费日本视频一区| 日韩精品一卡二卡三卡四卡无卡| 亚洲电影第三页| 亚洲成人7777| 蜜臀久久99精品久久久久久9 | 国产一区二区成人久久免费影院| 奇米影视一区二区三区小说| 日本亚洲视频在线| 日本中文字幕一区二区有限公司| 亚洲高清久久久| 性久久久久久久| 日本免费在线视频不卡一不卡二| 三级影片在线观看欧美日韩一区二区| 亚洲高清在线视频| 日韩国产欧美三级| 国产在线精品一区二区三区不卡| 国产一区二区女| 成年人午夜久久久| 色综合亚洲欧洲| 欧美剧情电影在线观看完整版免费励志电影| 欧美日韩美少妇| 欧美大度的电影原声| 久久久久久久久久久电影| 国产精品美女久久久久久久久 | 99久久99久久精品免费看蜜桃| 99精品一区二区| 欧美精品乱人伦久久久久久| 日韩一区二区三区四区| 久久久久久久免费视频了| 成人免费在线播放视频| 亚洲成人精品一区| 欧美视频你懂的| 精品国产乱码久久久久久图片| 国产色一区二区| 亚洲一区二区黄色| 国产做a爰片久久毛片| 91在线播放网址| 91精品久久久久久久91蜜桃| 久久久国产午夜精品| 一个色综合网站| 国模冰冰炮一区二区| 日本韩国欧美一区二区三区| 欧美电视剧在线看免费| 亚洲精品国产一区二区精华液| 男女性色大片免费观看一区二区| 成人黄色小视频| 91精品国产91久久综合桃花 | 舔着乳尖日韩一区| 国产91精品精华液一区二区三区 | 亚洲高清中文字幕|