📄 kj4sensorjob.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 + -