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

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

?? dataprocjob.cpp

?? RTMS設備通訊協議
?? CPP
字號:
// DataProcJob.cpp: implementation of the CDataProcJob class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "RTMS.h"
#include "DataProcJob.h"
#include "CIniFile.h"
#include "RTMSDlg.h"

//#define LOCALCONNSTR   "Provider=SQLOLEDB.1;Presist Security Info=TRUE;User ID=%s;Password=%s;Initial Catalog=RTMS;Data Source=%s;"
#define LOCALCONNSTR  "Provider=MSDASQL;Driver={Microsoft Access Driver (*.mdb)};Dbq=%s\\RTMS.mdb;Uid=Admin;Pwd=;"

#define mErrLog "DataError.log"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif


CRTMSDlg* m_mainwnd;

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////


UINT CDataProcJob::DoWork()
{	
	
	m_mainwnd=(CRTMSDlg*) AfxGetMainWnd();
	GetDBPara(strUser,strPass,strDBIP);
	
	while (strUser.IsEmpty ())
	{
		GetDBPara(strUser,strPass,strDBIP);
	}
	bDataError=true;
	CString strConn;
	//strConn.Format (LOCALCONNSTR,strUser,strPass,strDBIP);
	char PathName[255];
	strcpy((char*) PathName,GetAppPath());
	strConn.Format(LOCALCONNSTR,PathName);
	
	CoInitialize(NULL);	
	DWORD dwResult;
	while( !m_bAbort )
	{
		if(bDataError) //數據服務器需要連接
		{
			bDataError = !OpenConnection(m_pDataConn,strConn.GetBuffer (strConn.GetLength ()));
			if(bDataError)
			{
				m_mainwnd->Log ("數據庫連接失敗");
			}
		}
		
		
		dwResult=WaitForSingleObject(hExitEvent,10000);
		if( WAIT_OBJECT_0 == dwResult ) m_bAbort=TRUE;
	}

	::CoUninitialize();
	
	return 1;
}

BOOL CDataProcJob::GetDBPara(CString &strUser, CString &strPass, CString &strDB)
{
	CIniFile mfile;
	mfile.Create ("RTMS.ini");
	
	mfile.GetVarStr("OPTION","User",strUser);
	mfile.GetVarStr("OPTION","Pass",strPass);
	mfile.GetVarStr("OPTION","DBIP",strDB);
	
	int Sen;
	mfile.GetVarInt ("OPTION","SensorID",Sen);
	SensorID=Sen;
	
	mfile.CloseIniFile();
	return true;
}

BOOL CDataProcJob::OpenConnection(_ConnectionPtr& pConn,const char* strConn)
{
	HRESULT hr;
	try	{
		if( pConn )
		{
			if( pConn->State == adStateOpen ) pConn->Close();
			pConn.Release();
		}
	}
	catch(...){};
	hr = pConn.CreateInstance(__uuidof(Connection));
	if( FAILED(hr) ) return FALSE;
	try
	{
		pConn->ConnectionTimeout = 10;
		hr = pConn->Open(strConn,"","",-1);	
	}catch(...){hr=-1;}
	if(FAILED(hr)) 
	{
		pConn.Release();
		return FALSE;
	}
	return TRUE;
}


BOOL CDataProcJob::ProcData(const unsigned char *pBuf,DWORD retLen)
{
	int iLen=(int)strlen((char*)pBuf);
	for(int i=0;i<=(int)retLen;i++)
	{
		if(pBuf[i]==0xFF)
		{
			switch(pBuf[i+1])
			{
			case 0x1B: 
				memcpy((char*)ConBuf,pBuf+i,pBuf[i+2]+4);
				ConBuf[pBuf[i+2]+4]='\0';
				ProcVolLongModel();
				i+=pBuf[i+2]+3;
				m_mainwnd->Log ("Proc Volume Long Model");
				break;
			case 0x10:
				memcpy((char*)ConBuf,pBuf+i,pBuf[i+2]+4);
				ConBuf[pBuf[i+2]+4]='\0';
				ProcVolumeModel();
				i+=pBuf[i+2]+3;
				m_mainwnd->Log ("Proc Volume Model");
				break;
			case 0x11:
				memcpy((char*)ConBuf,pBuf+i,pBuf[i+2]+4);
				ConBuf[pBuf[i+2]+4]='\0';
				ProcOccupancey();
				i+=pBuf[i+2]+3;
				m_mainwnd->Log ("Proc Occupancy Model");
				break;
			case 0x12:
				memcpy((char*)ConBuf,pBuf+i,pBuf[i+2]+4);
				ConBuf[pBuf[i+2]+4]='\0';
				ProcSpeedModel();
				i+=pBuf[i+2]+3;
				m_mainwnd->Log ("Proc Speed Model");
				break;
			case 0x18:
				memcpy((char*)ConBuf,pBuf+i,pBuf[i+2]+4);
				ConBuf[pBuf[i+2]+4]='\0';
				i+=pBuf[i+2]+3;
				break;
			case 0x19:
				memcpy((char*)ConBuf,pBuf+i,pBuf[i+2]+4);
				ConBuf[pBuf[i+2]+4]='\0';
				i+=pBuf[i+2]+3;
				m_mainwnd->Log ("Proc 0x19");
				break;
			case 0x2D:
				memcpy((char*)ConBuf,pBuf+i,pBuf[i+2]+4);
				ConBuf[pBuf[i+2]+4]='\0';
				i+=pBuf[i+2]+3;
				m_mainwnd->Log ("Proc 0x2D");
				break;
			case 0x08:
				memcpy((char*)ConBuf,pBuf+i,pBuf[i+2]+4);
				ConBuf[pBuf[i+2]+4]='\0';
				i+=pBuf[i+2]+3;
				m_mainwnd->Log ("Proc 0x08");
				break;
			case 0x1D:
				memcpy((char*)ConBuf,pBuf+i,pBuf[i+2]+4);
				ConBuf[pBuf[i+2]+4]='\0';
				i+=pBuf[i+2]+3;
				m_mainwnd->Log ("Proc 0x1D");
				break;
			case 0xAA:
				memcpy((char*)ConBuf,pBuf+i,pBuf[i+2]+4);
				ConBuf[pBuf[i+2]+4]='\0';
				i+=pBuf[i+2]+3;
				m_mainwnd->Log ("Proc 0xAA");
				break;
			default:
				break;
			}
		}
	}
	
	return true;
}

BOOL CDataProcJob::ProcVolLongModel()
{
	BYTE mChkSum;
	mChkSum=0x00;
	for(int i=3;i<ConBuf[2]+3;i++)
	{
		mChkSum+=ConBuf[i];
	}
	if(mChkSum!=ConBuf[ConBuf[2]+3]) //校驗錯
		return false;
	CString strSQL;
	strSQL.Format("insert into VolLong (SensorID,VolLong1,VolLong2,VolLong3,VolLong4,VolLong5,VolLong6,VolLong7,VolLong8,PowerVoltage,SynDate) values(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,'%s')",SensorID,ConBuf[3],ConBuf[4],ConBuf[5],ConBuf[6],ConBuf[7],ConBuf[8],ConBuf[9],ConBuf[10],ConBuf[11],CTime::GetCurrentTime ().Format ("%Y-%m-%d %H:%M:%S"));
	AppendDB(strSQL);
	return true;
	
	
	
}

BOOL CDataProcJob::ProcVolumeModel()
{
	BYTE mChkSum;
	mChkSum=0x00;
	for(int i=3;i<ConBuf[2]+3;i++)
	{
		mChkSum+=ConBuf[i];
	}
	if(mChkSum!=ConBuf[ConBuf[2]+3]) //校驗錯
		return false;
	
	CString strSQL;
	strSQL.Format("insert into Volume (SensorID,Volume1,Volume2,Volume3,Volume4,Volume5,Volume6,Volume7,Volume8,MsgNum,SynDate) values(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,'%s')",SensorID,ConBuf[3],ConBuf[4],ConBuf[5],ConBuf[6],ConBuf[7],ConBuf[8],ConBuf[9],ConBuf[10],ConBuf[11],CTime::GetCurrentTime ().Format ("%Y-%m-%d %H:%M:%S"));
	AppendDB(strSQL);
	return true;
	
}

BOOL CDataProcJob::ProcOccupancey()
{
	BYTE mChkSum;
	mChkSum=0x00;
	for(int i=3;i<ConBuf[2]+3;i++)
	{
		mChkSum+=ConBuf[i];
	}
	if(mChkSum!=ConBuf[ConBuf[2]+3]) //校驗錯
		return false; 
	if(ConBuf[2]==9)
	{
		float fOcc[8];
		int iTmp;
		for (int m=0;m<8;m++)
		{
			iTmp=ConBuf[3+m];
			fOcc[m]=(float)iTmp;
		}
		CString strSQL;
		strSQL.Format("insert into Occupancy (SensorID,Occupancy1,Occupancy2,Occupancy3,Occupancy4,Occupancy5,Occupancy6,Occupancy7,Occupancy8,SensorIDR,SynDate) values(%d,%4.2f,%4.2f,%4.2f,%4.2f,%4.2f,%4.2f,%4.2f,%4.2f,%d,'%s')",SensorID,fOcc[0],fOcc[1],fOcc[2],fOcc[3],fOcc[4],fOcc[5],fOcc[6],fOcc[7],ConBuf[11],CTime::GetCurrentTime ().Format ("%Y-%m-%d %H:%M:%S"));
		AppendDB(strSQL);
		
		/* CString strSQL;
		strSQL.Format("insert Occupancy (SensorID,Occupancy1,Occupancy2,Occupancy3,Occupancy4,Occupancy5,Occupancy6,Occupancy7,Occupancy8,SensorIDR) values(%d,%4.2f,%4.2f,%4.2f,%4.2f,%4.2f,%4.2f,%4.2f,%4.2f,%d)",SensorID,ConBuf[3],ConBuf[4],ConBuf[5],ConBuf[6],ConBuf[7],ConBuf[8],ConBuf[9],ConBuf[10],ConBuf[11]);
		AppendDB(strSQL);
		*/
	}
	else if(ConBuf[2]==11)
	{
		float fOcc[8];
		int iTmp;
		for (int m=0;m<8;m++)
		{
			iTmp=ConBuf[3+2*m]*100+ConBuf[3+2*m+1];
			fOcc[m]=(float)iTmp/100;
		}
		CString strSQL;
		strSQL.Format("insert into  Occupancy (SensorID,Occupancy1,Occupancy2,Occupancy3,Occupancy4,Occupancy5,Occupancy6,Occupancy7,Occupancy8,SensorIDR,SynDate) values(%d,%4.2f,%4.2f,%4.2f,%4.2f,%4.2f,%4.2f,%4.2f,%4.2f,%d,'%s')",SensorID,fOcc[0],fOcc[1],fOcc[2],fOcc[3],fOcc[4],fOcc[5],fOcc[6],fOcc[7],ConBuf[19],CTime::GetCurrentTime ().Format ("%Y-%m-%d %H:%M:%S"));
		AppendDB(strSQL);
		
	}
	return true;
}

BOOL CDataProcJob::ProcSpeedModel()
{
	BYTE mChkSum;
	mChkSum=0x00;
	for(int i=3;i<ConBuf[2]+3;i++)
	{
		mChkSum+=ConBuf[i];
	}
	if(mChkSum!=ConBuf[ConBuf[2]+3]) //校驗錯
		return false;
	CString strSQL;
	BYTE mSpeed[8];
	for(int j=0;j<8;j++)
	{
		if(ConBuf[3+j]==0xf0)
			mSpeed[j]=0;
		else
			mSpeed[j]=ConBuf[3+j];
		
	}
	
	strSQL.Format("insert into Speed(SensorID,Speed1,Speed2,Speed3,Speed4,Speed5,Speed6,Speed7,Speed8,Average,Direction,Health,SynDate) values(%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,'%s')",SensorID,mSpeed[0],mSpeed[1],mSpeed[2],mSpeed[3],mSpeed[4],mSpeed[5],mSpeed[6],mSpeed[7],ConBuf[11],ConBuf[12],ConBuf[13],CTime::GetCurrentTime ().Format ("%Y-%m-%d %H:%M:%S"));
	AppendDB(strSQL);
	return true;
	
}

BOOL CDataProcJob::AppendDB(CString strSQL)
{
	if((m_pDataConn==NULL)||(m_pDataConn->State==adStateClosed))
	{	
		m_mainwnd->Log ("Append DataBase Error,Connection Invalidate.");
		CStdioFile file;
		CString filename;
		filename=mErrLog;
		if(!file.Open(filename, CFile::modeWrite))
			file.Open(filename, CFile::modeCreate|CFile::modeWrite);
		{
			file.SeekToEnd();		
			strSQL+="\n";
			file.WriteString(strSQL);
			file.Close();
		}
		return false;
	}
	try{
		
		m_pDataConn->Execute((LPCSTR)strSQL,NULL,adCmdText|adExecuteNoRecords);
	}
	catch(...)
	{
		m_mainwnd->Log ("Append DataBase Error ,Insert Error.");
		CStdioFile file;
		CString filename;
		filename=mErrLog;
		if(!file.Open(filename, CFile::modeWrite))
			file.Open(filename, CFile::modeCreate|CFile::modeWrite);
		{
			file.SeekToEnd();		
			strSQL+="\n";
			file.WriteString(strSQL);
			file.Close();
		}
		if( m_pDataConn )
		{
			if( m_pDataConn->State == adStateOpen ) m_pDataConn->Close();
			m_pDataConn.Release();
			bDataError=true;
		}
		return false;
	}
	return true;
	
}

CString CDataProcJob::GetAppPath()
{
	char PathName[255];
	GetModuleFileName( AfxGetInstanceHandle(), PathName,sizeof( PathName ) );
    char *a,*b;
    a = b = PathName;  
    while(b)
    {
		b=strchr(a+1,'\\');
		if(b) a=b;
    } 
    *a='\0'; 
    return PathName;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女网站视频久久| 91丨九色丨蝌蚪富婆spa| 国产精品一区二区免费不卡| 色婷婷综合激情| 91精品欧美综合在线观看最新| 久久影院午夜片一区| 洋洋成人永久网站入口| 激情综合亚洲精品| 欧美日本一区二区| 亚洲男女一区二区三区| 福利视频网站一区二区三区| 欧美tickle裸体挠脚心vk| 亚洲午夜电影网| 在线免费观看日本欧美| 国产精品的网站| 国产成人精品在线看| 日韩网站在线看片你懂的| 亚洲欧洲制服丝袜| 97aⅴ精品视频一二三区| 国产欧美一区视频| 不卡的av中国片| 国产精品成人一区二区艾草| 国产精品12区| 亚洲人成伊人成综合网小说| 91久久一区二区| 偷拍亚洲欧洲综合| 精品少妇一区二区三区在线播放 | 久久国产精品区| 日韩欧美国产wwwww| 国产老女人精品毛片久久| 18成人在线观看| 欧美伊人久久久久久久久影院| 亚洲综合一区二区三区| 91精品国产高清一区二区三区| 欧美a级一区二区| 国产欧美久久久精品影院| av激情成人网| 日韩电影在线观看电影| 久久网这里都是精品| 一本色道久久综合精品竹菊| 午夜视频久久久久久| 国产午夜精品一区二区三区四区| 国产大陆精品国产| 亚洲丶国产丶欧美一区二区三区| 欧美一区二区播放| 欧美在线综合视频| 国产精品77777| 五月婷婷综合网| 亚洲女子a中天字幕| 久久久精品tv| 日韩一卡二卡三卡四卡| 91毛片在线观看| 成人av网站在线观看| 免费成人av资源网| 午夜亚洲福利老司机| 亚洲人成精品久久久久| 国产亚洲欧洲997久久综合 | 亚洲超碰精品一区二区| 久久精品视频网| 精品国产sm最大网站免费看| 在线欧美日韩精品| 91福利资源站| 一本一本久久a久久精品综合麻豆| 国产成人丝袜美腿| 岛国精品一区二区| 国产精品99久久久久久久女警| 久久精品国产一区二区三| 免费欧美高清视频| 精油按摩中文字幕久久| 国产一区二区不卡在线| 国产一区二区按摩在线观看| 国产成+人+日韩+欧美+亚洲| 黄色精品一二区| 国产高清成人在线| 91性感美女视频| 欧美羞羞免费网站| 欧美成人艳星乳罩| 国产精品情趣视频| 中文字幕五月欧美| 亚洲第一会所有码转帖| 国内精品国产成人| 波多野结衣亚洲| 欧美在线看片a免费观看| 日韩一区二区三| 中国av一区二区三区| 亚洲高清免费观看高清完整版在线观看 | 亚洲妇熟xx妇色黄| 国产剧情一区在线| 日本久久电影网| 日韩免费看的电影| 久久精品国产在热久久| 色婷婷精品大在线视频| 精品国产一区二区亚洲人成毛片 | 成人激情文学综合网| 91麻豆精品91久久久久同性| 国产偷国产偷精品高清尤物| 欧美a一区二区| 欧美色视频在线观看| 国产欧美视频一区二区| 麻豆91精品视频| 色综合久久久久综合| 国产偷国产偷精品高清尤物| 麻豆精品在线播放| 欧美日韩一区 二区 三区 久久精品| 久久久久久免费网| 九九国产精品视频| 日韩一区二区免费视频| 亚洲一区二区三区美女| 欧美一级在线免费| 日本午夜一区二区| 7799精品视频| 免费不卡在线视频| 精品三级av在线| 日韩黄色小视频| 欧美一区二区精品在线| 日韩国产精品久久久久久亚洲| 欧美天天综合网| 天天操天天综合网| 欧美大片日本大片免费观看| 美女在线视频一区| 久久综合色天天久久综合图片| 日本不卡一区二区三区高清视频| 欧美另类高清zo欧美| 久久超碰97中文字幕| 久久久久成人黄色影片| 97久久超碰国产精品电影| 亚洲精品美国一| 欧美成人综合网站| 99久久99久久综合| 五月天欧美精品| 欧美精品一区二区三区在线| 国精品**一区二区三区在线蜜桃| 国产日韩精品久久久| 欧美色综合影院| 国产成人av电影在线播放| 亚洲综合男人的天堂| 日韩午夜av一区| 欧美亚洲精品一区| 成人福利视频网站| 久久精品国产色蜜蜜麻豆| 中文成人综合网| 日韩精品最新网址| 欧美无砖专区一中文字| 粉嫩蜜臀av国产精品网站| 亚洲午夜影视影院在线观看| 国产欧美视频一区二区| 精品国产乱子伦一区| 91超碰这里只有精品国产| 99久久久久久99| 国产精品888| 黑人精品欧美一区二区蜜桃| 亚洲高清视频在线| 亚洲国产wwwccc36天堂| 蜜臀国产一区二区三区在线播放| 综合久久综合久久| 亚洲男人天堂av网| 日韩激情一区二区| 国产一区二区不卡| 极品少妇xxxx偷拍精品少妇| 亚洲成人福利片| 五月婷婷激情综合| 天堂蜜桃一区二区三区| 亚洲.国产.中文慕字在线| 玉米视频成人免费看| 亚洲综合免费观看高清完整版 | 国产成人av一区二区三区在线| 国产一区二区三区四区五区美女| 蜜桃视频在线一区| 国产成人精品午夜视频免费| 91视频免费看| 日韩三级在线观看| 国产精品乱码一区二三区小蝌蚪| 国产色产综合产在线视频| 久久精品一区二区三区四区| 亚洲国产精品ⅴa在线观看| 最新日韩av在线| 日韩国产精品91| 成人一区二区在线观看| 欧美性感一区二区三区| 91精品国产综合久久久久| 日本一区二区三区四区| 午夜精品久久久久久久久久久| 国产福利91精品| 欧美亚洲免费在线一区| 不卡一区二区三区四区| 国产一区二区三区在线观看免费| 色综合久久久久综合体| 亚洲色欲色欲www| 成人国产视频在线观看| 国产精品美女久久久久高潮| 婷婷久久综合九色国产成人 | 欧美一区二区三区四区视频| 国产亚洲欧美在线| 日本午夜一区二区| 在线视频国内一区二区| 中文字幕日韩精品一区| 国产成人午夜精品影院观看视频| 日韩欧美www| 久久精品国产精品亚洲红杏| 欧美伊人精品成人久久综合97|