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

📄 datafetch.cpp

📁 RTMS设备通讯协议
💻 CPP
字号:
// DataFetch.cpp: implementation of the CDataFetch class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "RTMS.h"
#include "rtmsdlg.h"
#include "DataFetch.h"
#include "DataProcJob.h"

#include "CIniFile.h"

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

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


UINT CDataFetchJob::DoWork()
{	
	int m_hComNum;
	int m_hBaud;
	int m_nDataBits;
	int m_nParity;
	int m_nStopbits;
	DWORD dwResult;
	DWORD dwReadRet;


CDataProcJob mDataProcJob;
	mDataProcJob.Begin ();
 Sleep(2000);

 m_hBaud=0;
	GetComPara(m_hComNum,m_hBaud,m_nDataBits,m_nParity,m_nStopbits);
 while (m_hBaud==0)
 {
  GetComPara(m_hComNum,m_hBaud,m_nDataBits,m_nParity,m_nStopbits);
 }
	m_hCom.InitCOM (m_hComNum,m_hBaud,m_nDataBits,m_nParity,m_nStopbits);

	while(!m_bAbort)
	{

		dwReadRet=0;
		dwReadRet=m_hCom.GetCOMData (pchBuffer);
		if(dwReadRet>0)
		{
			mDataProcJob.ProcData ((unsigned char*)pchBuffer,dwReadRet);
   //m_mainwnd->ProcData ((unsigned char*)pchBuffer,dwReadRet);
		}
		dwResult=WaitForSingleObject(hExitEvent,100);
		if( WAIT_OBJECT_0 == dwResult ) m_bAbort=TRUE;

	}
	m_hCom.CloseCOM ();
 mDataProcJob.Abort ();
	while (!mDataProcJob.IsNormalQuit ()) Sleep(100);

	return 1;
}



BOOL CDataFetchJob::GetComPara(int &m_hCom, int &m_hBaud, int &m_nDataBits, int &m_nParity, int &m_nStopBits)
{

	CIniFile mfile;
	mfile.Create ("RTMS.ini");

	mfile.GetVarInt("OPTION","COM",m_hCom);
	mfile.GetVarInt("OPTION","Baud",m_hBaud);
	mfile.GetVarInt("OPTION","Bit",m_nDataBits);
	mfile.GetVarInt("OPTION","Parity",m_nParity);
	mfile.GetVarInt("OPTION","StopBit",m_nStopBits);

	mfile.CloseIniFile();

	return true;
}

//Data Poll
BOOL CDataFetchJob::SendDataRequest(BYTE SensorID)
{
	mDataFrame.mHead .FrameStatus =0xFF;
	mDataFrame.mHead .TransCode =0x8F;
	mDataFrame.mHead .DataLen =1;
	mDataFrame.pBuf [0]=SensorID;
	BYTE mChkSum;
	mChkSum=SensorID;
	mDataFrame.pBuf [1]=mChkSum;

	if(m_hCom.SendCOMCode ((unsigned char*)&mDataFrame,5))
		return true;
	else
		return false;
	

}
//Clears the RTMS buffer
BOOL CDataFetchJob::SendBufferFlush(BYTE SensorID)
{
	mDataFrame.mHead .FrameStatus =0xFF;
	mDataFrame.mHead .TransCode =0x1F;
	mDataFrame.mHead .DataLen =1;
	mDataFrame.pBuf [0]=SensorID;
	BYTE mChkSum;
	mChkSum=SensorID;
	mDataFrame.pBuf [1]=mChkSum;

	if(m_hCom.SendCOMCode ((unsigned char*)&mDataFrame,5))
		return true;
	else
		return false;
}

//Self-Test request in Normal mode
BOOL CDataFetchJob::SendBitRequest()
{
	mDataFrame.mHead .FrameStatus =0xFF;
	mDataFrame.mHead .TransCode =0x88;
	mDataFrame.mHead .DataLen =0;


	if(m_hCom.SendCOMCode ((unsigned char*)&mDataFrame,3))
		return true;
	else
		return false;

}
////self-Test request in Polled Mode.
BOOL CDataFetchJob::SendPolledBitRequest(BYTE SensorID)
{
	mDataFrame.mHead .FrameStatus =0xFF;
	mDataFrame.mHead .TransCode =0x90;
	mDataFrame.mHead .DataLen =1;
	mDataFrame.pBuf [0]=SensorID;
	BYTE mChkSum;
	mChkSum=SensorID;
	mDataFrame.pBuf [1]=mChkSum;

	if(m_hCom.SendCOMCode ((unsigned char*)&mDataFrame,5))
		return true;
	else
		return false;
}
//Request current setup of power management
BOOL CDataFetchJob::SendPMVRequest(BYTE SensorID)
{
	mDataFrame.mHead .FrameStatus =0xFF;
	mDataFrame.mHead .TransCode =0x96;
	mDataFrame.mHead .DataLen =1;
	mDataFrame.pBuf [0]=SensorID;
	BYTE mChkSum;
	mChkSum=SensorID;
	mDataFrame.pBuf [1]=mChkSum;

	if(m_hCom.SendCOMCode ((unsigned char*)&mDataFrame,5))
		return true;
	else
		return false;
}
//Generated during setup to send the selected speed to the sensor to set its serial port
//BaudID 1=2400,2=4800,3=9600,4=14400,
//5=19200,6=38400,7=57600,8=115200
BOOL CDataFetchJob::SendSetBaudRate(BYTE SensorID, BYTE BaudID)
{
	mDataFrame.mHead .FrameStatus =0xFF;
	mDataFrame.mHead .TransCode =0xAC;
	mDataFrame.mHead .DataLen =2;
	mDataFrame.pBuf [0]=SensorID;
	mDataFrame.pBuf [1]=BaudID;
	BYTE mChkSum;
	mChkSum=SensorID+BaudID;
	mDataFrame.pBuf [2]=mChkSum;

	if(m_hCom.SendCOMCode ((unsigned char*)&mDataFrame,6))
		return true;
	else
		return false;
}

⌨️ 快捷键说明

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