⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kj4sensorjob.cpp

📁 数据安全方面的程序 应用很广泛的 欢迎大家
💻 CPP
字号:
// KJ4SensorJob.cpp: implementation of the KJ4SensorJob class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "KJ4SensorJob.h"
#include "KJ4Service.h"
#pragma warning(disable : 4146)
#import "C:\Program Files\Common Files\System\ado\msado15.dll" rename_namespace("ADO") rename("EOF", "ADOEOF")
using namespace ADO;
#include "../KylinSystem/KLog.h"
#include "../KylinSystem/KPath.h"
#include "../KylinSystem/KMessageManager.h"
#include "../KylinSystem/KStringExtractor.h"
#include "../KylinSystem/KMessageBinder.h"

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

KJ4SensorJob::KJ4SensorJob()
	: mLastChange(1971, 1, 1, 0, 0, 0)
{
	mMessage = (KSensorMessage*)KMessageManager::Instance()->CreateMessage(KSensorMessage::TypeID());
	mMessage->AddRef();
}

KJ4SensorJob::~KJ4SensorJob()
{
	mMessage->Release();
}

const CString KJ4SensorJob::GetTypeName()
{
	return _T("KJ4SensorJob");
}

const KGuid KJ4SensorJob::GetTypeID()
{
	return KGuid::NullGuid();
}

bool KJ4SensorJob::Execute()
{
	CFileStatus mFileStatus;
	if(!CFile::GetStatus(mFileName, mFileStatus))
		return false;

	if(mLastChange >= mFileStatus.m_mtime)
		return false;

	mLastChange = mFileStatus.m_mtime;

	KJ4Service* host = (KJ4Service*)mHostService;
	try
	{
		_ConnectionPtr cn;
		cn.CreateInstance(__uuidof(Connection));
		cn->Open((LPCTSTR)mConnString,_T(""),_T(""),adOpenUnspecified);
		_RecordsetPtr rs;
		rs.CreateInstance(__uuidof(Recordset));
		_bstr_t strSql(_T("select * from sensor_define A, zd_sensor B Where A.Sensor_code = B.Code"));
		rs->Open(strSql,_variant_t((LPDISPATCH)cn,true),adOpenForwardOnly,adLockReadOnly,adCmdText);
		
		SensorItem mSensorDefineItem;

		mMessage->SetChange(SSDeleted);
		
		_variant_t describe, unit, type, fds_no, range_high, range_low, hav, lav, hcv, lcv, code;
		_bstr_t bstrVal;
		while(!rs->ADOEOF)
		{
			mSensorDefineItem.Num = rs->Fields->Item[_T("Serial_No")]->Value.iVal;

			bstrVal = rs->Fields->Item[_T("describe")]->Value.bstrVal;
			mSensorDefineItem.Name[sizeof(mSensorDefineItem.Name) - 1] = 0;
			strncpy(mSensorDefineItem.Name, (LPSTR)bstrVal, sizeof(mSensorDefineItem.Name) - 1);

			unit = rs->Fields->Item[_T("unit")]->Value;
			if(unit.vt != VT_NULL)
			{
				bstrVal = unit.bstrVal;
				mSensorDefineItem.Unit[sizeof(mSensorDefineItem.Unit) - 1] = 0;
				strncpy(mSensorDefineItem.Unit, (LPSTR)bstrVal, sizeof(mSensorDefineItem.Unit) - 1);
			}

			fds_no = rs->Fields->Item[_T("fds_no")]->Value;
			range_high = rs->Fields->Item[_T("range_high")]->Value;
			range_low = rs->Fields->Item[_T("range_low")]->Value;
			hav = rs->Fields->Item[_T("hav")]->Value;
			lav = rs->Fields->Item[_T("lav")]->Value;
			hcv = rs->Fields->Item[_T("hcv")]->Value;
			lcv = rs->Fields->Item[_T("lcv")]->Value;
			code = rs->Fields->Item[_T("code")]->Value;
			
			if(V_VT(&fds_no) != VT_NULL) fds_no.ChangeType(VT_I4);
			else fds_no = 0L;
			if(V_VT(&range_high) != VT_NULL) range_high.ChangeType(VT_R8);
			else range_high = 0.0;
			if(V_VT(&range_low) != VT_NULL) range_low.ChangeType(VT_R8);
			else range_low = 0.0;
			if(V_VT(&hav) != VT_NULL) hav.ChangeType(VT_R8);
			else hav = 0.0;
			if(V_VT(&lav) != VT_NULL) lav.ChangeType(VT_R8);
			else lav = 0.0;
			if(V_VT(&hcv) != VT_NULL) hcv.ChangeType(VT_R8);
			else hcv = 0.0;
			if(V_VT(&lcv) != VT_NULL) lcv.ChangeType(VT_R8);
			else lcv = 0.0;
			if(V_VT(&code) != VT_NULL) code.ChangeType(VT_I4);
			else code = 0L;

			mSensorDefineItem.FDS_No = fds_no;
			mSensorDefineItem.HRG = range_high;
			mSensorDefineItem.LRG = range_low;
			mSensorDefineItem.HCV = hcv;
			mSensorDefineItem.LCV = lcv;
			mSensorDefineItem.HAV = hav;
			mSensorDefineItem.LAV = lav;

			host->GetSensorType(mSensorDefineItem, (LPCTSTR)(_bstr_t)code.bstrVal);

			mMessage->SetSensor(mSensorDefineItem);
			rs->MoveNext();
		}
		rs->Close();
		cn->Close();
		rs.Release();
		cn.Release();

		mMessage->Commit();
		if(mMessage->IsDirty())
		{
			KMessageBinder::Instance()->ProcessMessage(mMessage);
		}
	}
	catch(_com_error e)
	{
		LOGEVENT(llError, _T("%s %s %s"), (LPCTSTR)e.Source(), (LPCTSTR)e.Description(), e.ErrorMessage());
	}
	return true;
}

bool KJ4SensorJob::Init()
{
	KJ4Service* host = (KJ4Service*)mHostService;
 	mFileName = host->mPath;
 	mMessage->SetMineID(host->mMineID);
	mConnString = _T("Provider=microsoft.jet.oledb.4.0;user id=admin;data source=");
	mConnString += mFileName;
	return true;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -