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

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

?? iec104.cpp

?? 此程序適用于電力系統中的網關程序
?? CPP
?? 第 1 頁 / 共 3 頁
字號:

		m_bSendBuf[index++] = DataInfo.ApduHead.bStartCode;
		m_bSendBuf[index++] = DataInfo.ApduHead.bApduLength;	
		m_bSendBuf[index++] = DataInfo.ApduHead.bControlCode1;
		m_bSendBuf[index++] = DataInfo.ApduHead.bControlCode2;
		m_bSendBuf[index++] = DataInfo.ApduHead.bControlCode3;
		m_bSendBuf[index++] = DataInfo.ApduHead.bControlCode4;

		m_bSendBuf[index++] = DataInfo.AsduHead.bAsduType;
		m_bSendBuf[index++] = DataInfo.AsduHead.bAsduVsq;
		m_bSendBuf[index++] = DataInfo.AsduHead.nAsduCot % 0x100;
		m_bSendBuf[index++] = DataInfo.AsduHead.nAsduCot / 0x100;
		m_bSendBuf[index++] = DataInfo.AsduHead.nAsduComAddr % 0x100;//單元公共地址 
		m_bSendBuf[index++] = DataInfo.AsduHead.nAsduComAddr / 0x100;//單元公共地址 
		m_bSendBuf[index++] = DataInfo.AsduHead.bAsduInf;//inf 

		bLength = DataInfo.bDataVec.size();
		for (i=0; i<bLength; ++i)
		{
			m_bSendBuf[index++] = DataInfo.bDataVec[i];
		}
		m_wSendLen = index;
	}

	return;

}

/*====================================================================================
*                                                                                    
* Subroutine  : GeneralInquire()
*                                                                                    
* Parameters  :
*               
*                                                                                    
* Called from : RuleLoop()
* 
* Description : 總召喚響應
* 
* Return	  : 
*               
*                                             
* Modification: 
*				 2004-07-29: 
*                                                                                     
*====================================================================================*/
void CIEC104::GeneralInquire(void)
{
	int			i = 0;		//常用變量
	int			nResult;		//常用變量,返回值
	int			nNumber;		//遙信數量
	unsigned char	bSector = 0;;	//扇區
	unsigned char	bNode = 0;		//節點號
	SYSTEMTIME		systime;		//時間結構體
	DATA_STR		DataInfo;		//數據信息格式
	DATAGROUP		DataGroup;		//存儲數據結構體

	memset(&DataGroup, 0x00, sizeof(DATAGROUP));
	memset(&DataInfo, 0x00, sizeof(DATA_STR));

	bSector = m_bFrameBuf[10];//m_bFrameBuf[4];
	bNode = m_bFrameBuf[11];//m_bFrameBuf[5];

	nResult = CheckNode();


	if ((nResult != 0) && (bSector == 0))
	{
		DataInfo.ApduHead.bStartCode =  0x68;
		DataInfo.ApduHead.bApduLength = 0x12;
		DataInfo.ApduHead.bControlCode3 = m_wRevCount % 0x100;
		DataInfo.ApduHead.bControlCode4 = m_wRevCount / 0x100;

		DataInfo.AsduHead.bAsduType =  0x64;
		DataInfo.AsduHead.bAsduVsq = 0x01;
		DataInfo.AsduHead.nAsduCot = 0x0007;
		DataInfo.AsduHead.nAsduComAddr = bNode*0x100 + bSector;
		DataInfo.AsduHead.bAsduInf = 0x00;
		if (!DataInfo.bDataVec.empty())
		{
			DataInfo.bDataVec.clear();
		}
		DataInfo.bDataVec.push_back(20);

		m_SendList.push_back(DataInfo);
		DataInfo.bDataVec.clear();
		m_wSendCount += 2;		//最低位未使用

		DataInfo.AsduHead.bAsduType =  0x03;
		DataInfo.AsduHead.bAsduVsq = 0x01;
		DataInfo.AsduHead.nAsduCot = 0x0020;
		GetLocalTime(&systime);

		nNumber = g_devdata.CountDevData(m_nPortNo, DATA_YX);
		for (i=0; i<nNumber; ++i)
		{
			DataInfo.ApduHead.bControlCode1 = m_wSendCount % 0x100;
			DataInfo.ApduHead.bControlCode2 = m_wSendCount / 0x100;

			g_devdata.GetFixDevData(m_nPortNo, i, DATA_YX, DataGroup);
			DataInfo.AsduHead.bAsduInf = DataGroup.nSerial;//??
			DataInfo.bDataVec.push_back(DataGroup.nValue & 0xff);

			m_SendList.push_back(DataInfo);
			DataInfo.bDataVec.clear();
			m_wSendCount += 2;		//最低位未使用
		}
	}

	//總召喚結束
	DataInfo.ApduHead.bStartCode =  0x68;
	DataInfo.ApduHead.bApduLength = 0x0c;
	DataInfo.ApduHead.bControlCode1 = m_wSendCount % 0x100;
	DataInfo.ApduHead.bControlCode2 = m_wSendCount / 0x100;

	DataInfo.AsduHead.bAsduType = 0x64;
	DataInfo.AsduHead.bAsduVsq = 0x01;
	DataInfo.AsduHead.nAsduCot = 0x000a;
	DataInfo.AsduHead.nAsduComAddr = bNode*0x100 + bSector;
	DataInfo.AsduHead.bAsduInf = 0x00;
	DataInfo.bDataVec.push_back(20);
	m_SendList.push_back(DataInfo);
	DataInfo.bDataVec.clear();
	m_wSendCount += 2;		//最低位未使用
}

/*====================================================================================
*                                                                                    
* Subroutine  : CheckNode()
*                                                                                    
* Parameters  : 
*               
*                                                                                    
* Called from : UnpackData()
* 
* Description : 節點檢測
* 
* Return	  : (!=0) 節點通信正常
*               0 通信不正常
*                                             
* Modification: 
*				 2004-06-29: 
*                                                                                     
*====================================================================================*/
int CIEC104::CheckNode(void)
{
	int	nResult = 0;	//返回值變量
	enum GateDevStatus eStatus = GATE_UNKNOW;

	g_glonet.GetDevStatus(eStatus);
	if (eStatus != 0)
	{
		nResult = 1;
	}
	return nResult;
}

/*====================================================================================
*                                                                                    
* Subroutine  : CalibrateTime()
*                                                                                    
* Parameters  : 
*               
*                                                                                    
* Called from : UnpackData()
* 
* Description : 校時函數,校正時間
* 
* Return	  : 
*               
*                                             
* Modification: 
*				 2004-07-29: 
*                                                                                     
*====================================================================================*/
void CIEC104::CalibrateTime(void)
{
	SYSTEMTIME		systime;		//時間結構
	unsigned char	bNode = 0;		//節點號
	int			nResult;		//常用變量,返回值
	CTRL_VALUE		CtrlValue;		//下發命令結構體
	DATA_STR		DataInfo;		//數據信息格式

	memset(&DataInfo, 0x00, sizeof(DATA_STR));
	memset(&CtrlValue, 0x00, sizeof(CTRL_VALUE));

	bNode = m_bFrameBuf[11];
	nResult = CheckNode();

	systime.wMilliseconds = (m_bFrameBuf[13] + m_bFrameBuf[14]*0x100)%1000;
	systime.wSecond = (m_bFrameBuf[13] + m_bFrameBuf[14]*0x100)/1000;
	systime.wMinute = m_bFrameBuf[15] & 0x3f;
	systime.wHour = m_bFrameBuf[16] & 0x1f;
	systime.wDay = m_bFrameBuf[17] & 0x1f;
	systime.wMonth = m_bFrameBuf[18] &0x0f;
	systime.wYear = (m_bFrameBuf[19])%100 + 2000;
	SetLocalTime(&systime);//校對本機時間

	if (nResult != 0)
	{
		CtrlValue.eCmdType = COMMAND_CALI_TIME;
		CtrlValue.bAddress = m_bFrameBuf[11];
		g_soedata.InsCtrlData(CtrlValue);
	}
	
	DataInfo.ApduHead.bStartCode =  0x68;
	DataInfo.ApduHead.bApduLength = 0x12;
	DataInfo.ApduHead.bControlCode1 = m_wSendCount % 0x100;
	DataInfo.ApduHead.bControlCode2 = m_wSendCount / 0x100;
	DataInfo.ApduHead.bControlCode3 = m_wRevCount % 0x100;
	DataInfo.ApduHead.bControlCode4 = m_wRevCount / 0x100;

	DataInfo.AsduHead.bAsduType =  0x67;
	DataInfo.AsduHead.bAsduVsq = 0x01;
	DataInfo.AsduHead.nAsduCot = 0x0007;
	DataInfo.AsduHead.nAsduComAddr = m_bFrameBuf[11]*0x100 + m_bFrameBuf[10];
	DataInfo.AsduHead.bAsduInf = 0x00;
	if (!DataInfo.bDataVec.empty())
	{
		DataInfo.bDataVec.clear();
	}
	DataInfo.bDataVec.push_back(m_bFrameBuf[13]);
	DataInfo.bDataVec.push_back(m_bFrameBuf[14]);
	DataInfo.bDataVec.push_back(m_bFrameBuf[15]);
	DataInfo.bDataVec.push_back(m_bFrameBuf[16]);
	DataInfo.bDataVec.push_back(m_bFrameBuf[17]);
	DataInfo.bDataVec.push_back(m_bFrameBuf[18]);
	DataInfo.bDataVec.push_back(m_bFrameBuf[19]);

	m_SendList.push_back(DataInfo);
	DataInfo.bDataVec.clear();

	return;
}

/*====================================================================================
*                                                                                    
* Subroutine  : RtuControl()
*                                                                                    
* Parameters  : 
*               
*                                                                                    
* Called from : UnpackData()
* 
* Description : 控制命令
* 
* Return	  : 
*               
*                                             
* Modification: 
*				 2004-07-29: 
*                                                                                     
*====================================================================================*/
void CIEC104::RtuControl(void)
{
	int			nResult = 0;	//常用變量,返回值
	unsigned char	bNode = 0;		//節點號
	int			pot = 0;		//信息點號
	CTRL_VALUE		CtrlValue;		//下發命令結構體
	unsigned char	bType = 0xff;	//0xff為無用

	memset(&CtrlValue, 0x00, sizeof(CTRL_VALUE));

	bNode = m_bFrameBuf[11];

	nResult = CheckNode();
	pot = ReadYXInfCDT(m_bFrameBuf[12]);
	if ((nResult != 0)		//裝置通信正常
		&& (pot != 0))
	{
		CtrlValue.bAddress = bNode;
		CtrlValue.nPotValue = pot;
		CtrlValue.iValue = m_bFrameBuf[13] & 0x03;
		bType = m_bFrameBuf[13] >> 7;
		switch (bType)
		{
		case 0x01:	//選擇或撤消
			if (m_bFrameBuf[9] == 6)
			{
				CtrlValue.eCmdType = COMMAND_SEL_CTRL;
				g_soedata.InsCtrlData(CtrlValue);
			}
			else if (m_bFrameBuf[9] == 8)
			{
				CtrlValue.eCmdType = COMMAND_CANCEL_CTRL;
				g_soedata.InsCtrlData(CtrlValue);
			}
			break;
		case 0x00://執行
			CtrlValue.eCmdType = COMMAND_EXE_CTRL;
			g_soedata.InsCtrlData(CtrlValue);
			break;
		default:
			RtuAnswerNo();
			break;
		}
	}
	else			//裝置未通信
	{
		RtuAnswerNo();
	}

	return;
}

/*====================================================================================
*                                                                                    
* Subroutine  : RtuAnswerNo()
*                                                                                    
* Parameters  : 
*               
*                                                                                    
* Called from : RtuControl()
* 
* Description : 控制命令不成功
* 
* Return	  : 
*               
*                                             
* Modification: 
*				 2004-07-29: 
*                                                                                     
*====================================================================================*/
void CIEC104::RtuAnswerNo(void)
{
	DATA_STR		DataInfo;		//數據信息格式

	memset(&DataInfo, 0x00, sizeof(DATA_STR));

	DataInfo.ApduHead.bStartCode =  0x68;
	DataInfo.ApduHead.bApduLength = 0x0c;
	DataInfo.ApduHead.bControlCode1 = m_wSendCount % 0x100;
	DataInfo.ApduHead.bControlCode2 = m_wSendCount / 0x100;
	DataInfo.ApduHead.bControlCode3 = m_wRevCount % 0x100;
	DataInfo.ApduHead.bControlCode4 = m_wRevCount / 0x100;

	DataInfo.AsduHead.bAsduType =  m_bFrameBuf[6];
	DataInfo.AsduHead.bAsduVsq = 0x01;
	DataInfo.AsduHead.nAsduCot = 0x000a;		//失敗
	DataInfo.AsduHead.nAsduComAddr = m_bFrameBuf[11]*0x100 + m_bFrameBuf[10];
	DataInfo.AsduHead.bAsduInf = m_bFrameBuf[12];
	if (!DataInfo.bDataVec.empty())
	{
		DataInfo.bDataVec.clear();
	}
	DataInfo.bDataVec.push_back(m_bFrameBuf[13]);

	m_SendList.push_back(DataInfo);
	DataInfo.bDataVec.clear();

	return;
}

/*====================================================================================
*                                                                                    
* Subroutine  : GetYC()
*                                                                                    
* Parameters  :
*               
*                                                                                    
* Called from : RuleLoop()
* 
* Description : 遙測量響應
* 
* Return	  : 
*               
*                                             
* Modification: 
*				 2004-12-28: 
*                                                                                     
*====================================================================================*/
void CIEC104::GetYC(void)
{
	int			i = 0;		//常用變量
	int			nResult;		//常用變量,返回值
	int			nNumber;		//遙信數量
	DATA_STR		DataInfo;		//數據信息格式
	DATAGROUP		DataGroup;		//存儲數據結構體

	memset(&DataGroup, 0x00, sizeof(DATAGROUP));
	memset(&DataInfo, 0x00, sizeof(DATA_STR));

	nResult = CheckNode();

	if (nResult != 0)
	{
		nNumber = g_devdata.CountDevData(m_nPortNo, DATA_YC);

		DataInfo.ApduHead.bStartCode =  0x68;
		DataInfo.ApduHead.bApduLength = 0x12;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品福利在线播放| 亚洲一区二区美女| 亚洲午夜久久久久中文字幕久| 免费视频一区二区| 99re8在线精品视频免费播放| 3d成人动漫网站| 最新日韩av在线| 久久精工是国产品牌吗| 欧美亚洲高清一区二区三区不卡| 久久久久9999亚洲精品| 欧美aaa在线| 欧美日韩精品一区二区天天拍小说| 国产精品久久久久永久免费观看 | 日本精品免费观看高清观看| 精品第一国产综合精品aⅴ| 亚洲欧美日韩国产手机在线| 国产精品99久久久久久似苏梦涵| 欧美一级搡bbbb搡bbbb| 亚洲激情网站免费观看| 99久久精品免费精品国产| 久久久美女毛片| 久久99蜜桃精品| 欧美大胆人体bbbb| 日本视频一区二区| 欧美喷潮久久久xxxxx| 亚洲三级在线看| 91精品国产综合久久香蕉麻豆| 亚洲欧洲av在线| 成人深夜福利app| 国产午夜亚洲精品理论片色戒 | 欧美亚洲日本一区| 亚洲人123区| 色婷婷综合久久久久中文| 亚洲视频一区二区在线观看| 99re66热这里只有精品3直播 | 午夜精品久久久久久久久| 一本大道久久精品懂色aⅴ| 中文字幕在线不卡| 一本到高清视频免费精品| 亚洲欧美日韩国产手机在线| 一本色道久久综合亚洲aⅴ蜜桃| 成人欧美一区二区三区小说| 色综合久久中文字幕综合网| 亚洲一区免费在线观看| 欧美日韩1区2区| 久久精品久久精品| www国产成人免费观看视频 深夜成人网| 久久精品国产成人一区二区三区| 精品裸体舞一区二区三区| 国产精品一区二区三区网站| 日本一区二区电影| 色偷偷成人一区二区三区91| 亚洲v精品v日韩v欧美v专区| 日韩美一区二区三区| 国产在线国偷精品产拍免费yy| 日本一区二区三区四区| 色婷婷av久久久久久久| 日产国产欧美视频一区精品| 久久九九久精品国产免费直播| av中文字幕不卡| 亚洲成人动漫精品| 久久一二三国产| 一本到高清视频免费精品| 日本视频免费一区| 欧美国产综合一区二区| 欧美在线短视频| 国产精品原创巨作av| 亚洲尤物在线视频观看| 精品国产麻豆免费人成网站| 99热这里都是精品| 日本不卡一二三区黄网| 欧美激情一区二区在线| 欧美日韩国产中文| 欧美日韩在线不卡| 精品综合免费视频观看| 亚洲黄色录像片| 久久综合狠狠综合久久综合88| 色婷婷久久久亚洲一区二区三区| 久久精品国内一区二区三区| 亚洲精品综合在线| 国产亚洲美州欧州综合国| 在线成人午夜影院| 成人午夜激情片| 久久精工是国产品牌吗| 亚洲综合丝袜美腿| 国产欧美一区二区精品忘忧草| 337p亚洲精品色噜噜狠狠| 99精品一区二区三区| 精品一区二区日韩| 亚洲成av人片在线| 成人免费在线视频| 久久夜色精品国产噜噜av| 欧美日韩精品电影| 色哟哟亚洲精品| 豆国产96在线|亚洲| 久久99精品久久久| 日韩国产欧美三级| 亚洲午夜在线电影| 中文字幕亚洲欧美在线不卡| 精品成a人在线观看| 欧美一区二区三区在线| 欧美在线观看你懂的| 9人人澡人人爽人人精品| 韩国成人精品a∨在线观看| 日韩国产精品久久久久久亚洲| 亚洲国产另类精品专区| 亚洲日本电影在线| 国产精品三级电影| 国产色一区二区| 久久久久久久久久久久电影| 亚洲成人在线免费| 亚洲久草在线视频| 亚洲精品成人a在线观看| **欧美大码日韩| 一区二区三区影院| 亚洲欧美激情插| 亚洲欧洲综合另类| 一区二区三区日韩欧美| 亚洲一区二区三区在线看| 亚洲视频精选在线| 一区二区三区高清在线| 亚洲一区二区三区四区五区黄| 亚洲小说春色综合另类电影| 亚洲一本大道在线| 日本不卡1234视频| 狠狠v欧美v日韩v亚洲ⅴ| 国产一区二区三区精品视频| 国产福利视频一区二区三区| 成人午夜电影网站| 色综合色综合色综合色综合色综合| 91在线观看免费视频| 欧美日韩一区二区三区免费看 | 亚洲黄色免费电影| 亚洲成人黄色影院| 久久激五月天综合精品| 国产成人av电影在线| 不卡一区在线观看| 欧美羞羞免费网站| 欧美成人r级一区二区三区| 久久久久久久免费视频了| 国产精品入口麻豆九色| 亚洲国产精品影院| 久久99国产精品麻豆| 不卡电影免费在线播放一区| 91成人免费电影| 日韩免费看的电影| 国产精品麻豆久久久| 国产精品888| 91视频国产资源| 91精品国产综合久久婷婷香蕉| 久久免费视频色| 一区二区三区免费网站| 日本aⅴ免费视频一区二区三区| 国产精品影视在线| 欧美肥妇毛茸茸| 国产女人水真多18毛片18精品视频| 一区二区久久久久| 国产一区在线看| 欧美日韩在线观看一区二区| 国产亚洲欧美一级| 亚洲不卡一区二区三区| 成人一区在线看| 制服丝袜在线91| 亚洲精品一卡二卡| 国产福利不卡视频| 欧美一区二区久久| 亚洲免费观看在线观看| 国内精品写真在线观看| 欧美日韩日本视频| 国产精品久99| 国产一区二区三区蝌蚪| 欧美性大战久久久久久久蜜臀| 中文字幕av一区二区三区免费看 | 国产精品资源站在线| 欧美日韩精品系列| 亚洲欧美日韩在线不卡| 国产精品一级黄| 日韩精品一区二区三区老鸭窝| 亚洲激情av在线| 成人丝袜视频网| 久久精品夜夜夜夜久久| 日本vs亚洲vs韩国一区三区| 欧美影院一区二区三区| 亚洲欧美日韩中文字幕一区二区三区 | www.亚洲色图.com| 欧美tickle裸体挠脚心vk| 亚洲国产一区二区在线播放| 色综合久久久久综合| 中文字幕一区二区不卡| 国产精品一区免费视频| 精品日产卡一卡二卡麻豆| 奇米四色…亚洲| 欧美一区二区在线不卡| 偷拍亚洲欧洲综合| 欧美日韩视频专区在线播放| 亚洲一区欧美一区| 欧美日韩二区三区| 亚洲成人7777| 91麻豆精品国产91久久久久| 日产精品久久久久久久性色|