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

📄 deviceclient.cpp

📁 RFID温度签的源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
			break;
		}

		if( u8Result != RESULT_SUCCESS )
		{
			u32Ret = ERROR_SET_TIME_RESULT;
		}

	} while(0);
	//m_pCriticalObject->LeaveCritical();

	return u32Ret;
}

U32 CDeviceClient::SetCheckTimeInterval( IN U32 CardID, IN U16 Minute )
{
	U32 u32Ret = RETURN_NO_ERROR;
	BOOL bRet = FALSE;

	//m_pCriticalObject->EnterCritical();
	do 
	{
		if( m_pDeviceCtrl == NULL )	
		{
			u32Ret = ERROR_NO_INITIAL;
			break;
		}

		bRet = m_pDeviceCtrl->CMDSetCheckTimeInterval( CardID, 'W', Minute );
		if( bRet == FALSE )
		{
			u32Ret = ERROR_CMD_SET_INTERVAL;
			break;
		}

		Sleepms( 1000 );
		U8 u8Result;
		bRet = m_pDeviceCtrl->GetSetCheckTimeIntervalResult( &u8Result );
		if( bRet == FALSE )
		{
			u32Ret = ERROR_COMMAND_SET_INTERVAL;
			break;
		}

		if( u8Result != RESULT_SUCCESS )
		{
			u32Ret = ERROR_SET_INTERVAL_RESULT;
		}

	} while(0);
	//m_pCriticalObject->LeaveCritical();

	return u32Ret;
}

U32 CDeviceClient::GetCheckTimeInterval( IN U32 CardID, OUT U16* pMinute )
{
	U32 u32Ret = RETURN_NO_ERROR;
	BOOL bRet = FALSE;

	//m_pCriticalObject->EnterCritical();
	do 
	{
		if( m_pDeviceCtrl == NULL )	
		{
			u32Ret = ERROR_NO_INITIAL;
			break;
		}

		U16 u16Temp = 0;
		bRet = m_pDeviceCtrl->CMDSetCheckTimeInterval( CardID, 'R', u16Temp );
		if( bRet == FALSE )
		{
			u32Ret = ERROR_CMD_GET_INTERVAL;
			break;
		}

		Sleepms( 700 );
		U16 u16Result;
		bRet = m_pDeviceCtrl->GetCheckTimeInterval( &u16Result );
		if( bRet == FALSE )
		{
			u32Ret = ERROR_COMMAND_SET_INTERVAL;
			break;
		}

		*pMinute = u16Result;

	} while(0);
	//m_pCriticalObject->LeaveCritical();

	return u32Ret;
}

U32 CDeviceClient::GetTemperature( IN U32 CardID, OUT U16* pCount, 
						OUT CARD_TIME *pStartTime, 
						OUT U16* pInterval, OUT U16* pStartTemerature, OUT U8* pArray )
{
	U32 u32Ret = RETURN_NO_ERROR;
	BOOL bRet = FALSE;

	//m_pCriticalObject->EnterCritical();
	do 
	{
		if( m_pDeviceCtrl == NULL )	
		{
			u32Ret = ERROR_NO_INITIAL;
			break;
		}

		U16 u16Temp = 0;
		bRet = m_pDeviceCtrl->CMDGetTemperature( CardID );
		if( bRet == FALSE )
		{
			u32Ret = ERROR_CMD_GET_TEMPERATURE;
			break;
		}

		Sleepms( 800 );
		bRet = m_pDeviceCtrl->GetTemperature( pCount, pStartTime, 
			pInterval, pStartTemerature, pArray );
		if( bRet == FALSE )
		{
			u32Ret = ERROR_GET_TEMPERATURE;
			break;
		}

	} while(0);
	//m_pCriticalObject->LeaveCritical();

	return u32Ret;
}

U32 CDeviceClient::GetTemperatureData(OUT U8* pArray, U32 BufferSize, U32* ReadSize )
{
	U32 u32Ret = RETURN_NO_ERROR;
	BOOL bRet = FALSE;

	//m_pCriticalObject->EnterCritical();
	do 
	{
		if( m_pDeviceCtrl == NULL )	
		{
			u32Ret = ERROR_NO_INITIAL;
			break;
		}

		bRet = m_pDeviceCtrl->GetTemperatureData( pArray, BufferSize, ReadSize );
		if( bRet == FALSE )
		{
			u32Ret = ERROR_GET_TEMPERATURE;
			break;
		}

	} while(0);

	//m_pCriticalObject->LeaveCritical();

	return u32Ret;
}

U32 CDeviceClient::SetWarningData( IN U32 CardID, IN U8 WaringTemperature, 
								  IN U8 IntervalTime )
{
	U32 u32Ret = RETURN_NO_ERROR;
	BOOL bRet = FALSE;

	//m_pCriticalObject->EnterCritical();
	do 
	{
		if( m_pDeviceCtrl == NULL )
		{
			u32Ret = ERROR_NO_INITIAL;
			break;
		}

		bRet = m_pDeviceCtrl->CMDSetWarning( CardID, 'W', WaringTemperature, 
			IntervalTime );
		if( bRet == FALSE )
		{
			u32Ret = ERROR_CMD_SET_WARNINGDATA;
			break;
		}

		Sleepms( 700 );
		U8 u8Result = 0;
		bRet = m_pDeviceCtrl->GetSetWarningResult( &u8Result );
		if( bRet == FALSE )
		{
			u32Ret = ERROR_COMMAND_SET_WARNING;
			break;
		}

		if( u8Result != RESULT_SUCCESS )
		{
			u32Ret = ERROR_SET_WARNINGDATA;
		}
		
	} while(0);
	//m_pCriticalObject->LeaveCritical();

	return u32Ret;
}

U32 CDeviceClient::GetWarningData( IN U32 CardID, OUT U8* pWaringTemperature, OUT U8* pIntervalTime )
{
	U32 u32Ret = RETURN_NO_ERROR;
	BOOL bRet = FALSE;

	//m_pCriticalObject->EnterCritical();
	do 
	{
		if( m_pDeviceCtrl == NULL )
		{
			u32Ret = ERROR_NO_INITIAL;
			break;
		}

		U8 WarningTemperature = 0;
		U8 IntervalTime = 0;
		bRet = m_pDeviceCtrl->CMDSetWarning( CardID, 'R', WarningTemperature, 
			IntervalTime );
		if( bRet == FALSE )
		{
			u32Ret = ERROR_CMD_GET_WARNINGDATA;
			break;
		}

		Sleepms( 700 );
		bRet = m_pDeviceCtrl->GetWarningData( &WarningTemperature, &IntervalTime );
		if( bRet == FALSE )
		{
			u32Ret = ERROR_COMMAND_SET_WARNING;
			break;
		}

		*pWaringTemperature = WarningTemperature;
		*pIntervalTime		= IntervalTime;

	}while(0);
	//m_pCriticalObject->LeaveCritical();

	return u32Ret;
}

U32 CDeviceClient::StopDevice( IN U32 CardID )
{ 
	U32 u32Ret = RETURN_NO_ERROR;
	BOOL bRet = FALSE;

	//m_pCriticalObject->EnterCritical();
	do 
	{
		if( m_pDeviceCtrl == NULL )
		{
			u32Ret = ERROR_NO_INITIAL;
			break;
		}

		bRet = m_pDeviceCtrl->CMDStop( CardID );
		if( bRet == FALSE )
		{
			u32Ret = ERROR_CMD_STOP;
			break;
		}

		Sleepms( 700 );

		U8 u8Result = 0;
		bRet = m_pDeviceCtrl->GetStopResult( &u8Result );
		if( bRet == FALSE )
		{
			u32Ret = ERROR_COMMAND_STOP_RESULT;
			break;
		}

		if( u8Result != RESULT_SUCCESS )
		{
			u32Ret = ERROR_STOP_RESULT;
		}

	} while(0);
	//m_pCriticalObject->LeaveCritical();

	return u32Ret;
}


int CDeviceClient::Char2Hex(unsigned char nCh)
{
	toupper(nCh);
	if((nCh >= '0') && (nCh <= '9'))	
		return (nCh - '0');	
	else if	((nCh >= 'A') && (nCh <= 'F'))
		return (nCh - 'A' + 10);
	else
		return -1;
}


float QueryTemperature(float pRt/*参照电阻*/)
{	
	float a,b,c,a0,b0,c0;
	float T = 0.0,Rt;
	float fDeltV = 0.0;
	const float fBase = 1/1.7578125;
	bool bValidTemp = false;

#ifdef _WINDOWS
	a0=3.90802*pow((float)10,-3);
	b0=5.80195*pow((float)10,-7);
	c0=4.27351*pow((float)10,-12);
#else
	a0=3.90802*pow(10,-3);
	b0=5.80195*pow(10,-7);
	c0=4.27351*pow(10,-12);
#endif

	for(T = -40;T <= 80;T += 0.1)
	{
		if(T < 0)
		{
			a=a0;
			b=b0;
			c=c0;
		}         
		else
		{
			a=a0;
			b=b0;
			c=0;			
		}		
		Rt = 1000*(1+a*T-b*pow(T,2)-c*pow(T,3)*(T-100));
		//fDeltV = fBase*Rt *1800/(1490 + Rt);
		
		if ((fabs(Rt - pRt) >= 0.0) && (fabs(Rt - pRt) <= 0.3))
		{
			bValidTemp = true;
			//AfxTrace("fDeltV = %.2f\t PreV = %.2f\r\n",fDeltV,PreV);
			break;
		}
	}
	if (!bValidTemp)
		T = 0.0;	
	return T;
}

float CDeviceClient::GetActualTemperature( U8 u8AD, U8 data1, U8 data2 )
{
		float Sample_Data,VSample;
		float Rt;
		float fTemperature = 0.0;
		Sample_Data = (((U16)(data1) << 8)&0xff00 ) | (data2 & 0x00FF);
		float fMul = 0.0;
		fMul = u8AD & 0x00000080 ? ( 9.1838 - (float)(u8AD - 128)/10000 ) : ( 9.1838 + (float)u8AD / 10000 );
		VSample = (Sample_Data/(fMul*1024))*1.8;
		Rt = (11000*VSample)/(1.8 - VSample);
		fTemperature = QueryTemperature(Rt);			//查表获取温度数据
		return fTemperature;
}

float CDeviceClient::GetActualTemperature2( U8 u8AD, U16 val )
{
		float Sample_Data,VSample;
		float Rt;
		float fTemperature = 0.0;
		Sample_Data = val;
		float fMul = 0.0;
		fMul = u8AD & 0x00000080 ? ( 9.1838 - (float)(u8AD - 128)/10000 ) : ( 9.1838 + (float)u8AD / 10000 );
		VSample = (Sample_Data/(fMul*1024))*1.8;
		Rt = (11000*VSample)/(1.8 - VSample);
		fTemperature = QueryTemperature(Rt);			//查表获取温度数据
		return fTemperature;
}

U32 CDeviceClient::ConvertCharIDToU32( U8 data1, U8 data2, U8 data3, U8 data4, U8 data5, U8 data6 )
{
	char str[8];
	sprintf( str, "%c%c%c%c%c%c\0", data1, data2, data3, data4, data5, data6 );

	U32 val = -1;
	sscanf( str, "%x", &val );

	return val;
}


U32 CDeviceClient::ClearBuffer()
{
	U32 u32Ret = -1;
	BOOL bRet = FALSE;
	
	do
	{
		if( m_pDeviceCtrl == NULL )
		{
			break;
		}

		bRet = m_pDeviceCtrl->ClearBuffer();

		u32Ret = bRet ? 0 : -1;
	}while(0);
	
	return u32Ret;

}

void CDeviceClient::Sleepms( int ms )
{
	unsigned int start = GetTickCount();
	while( 1 )
	{
		if( GetTickCount() - start > ms )
		{
			break;
		}

		Sleep( 10 );
	}
}

U32 CDeviceClient::WriteRecordData( IN U32 CardID, IN RECORD_DATA* pWriteData )
{
	U32 u32Ret = RETURN_NO_ERROR;
	BOOL bRet = FALSE;

	//m_pCriticalObject->EnterCritical();
	do 
	{
		if( pWriteData == NULL )//&& m_pCriticalObject == NULL )
		{
			u32Ret = ERROR_PARAMETER_INVALID;
			break;
		}

		if( m_pDeviceCtrl == NULL )	
		{
			u32Ret = ERROR_NO_INITIAL;
			break;
		}

		bRet = m_pDeviceCtrl->CMDWriteRecordData( CardID, pWriteData );
		if( bRet == FALSE )
		{
			u32Ret = ERROR_CMD_WRITE_DATA;
			break;
		}

		Sleepms( 700 );

		U8 u8Result;
		bRet = m_pDeviceCtrl->GetWriteDataResult( &u8Result );
		if( bRet == FALSE )
		{
			u32Ret = ERROR_COMMAND_WRITE_RES;
			break;
		}

		if( u8Result != RESULT_SUCCESS )
		{
			u32Ret = ERROR_GET_WRITE_RESULT;
		}

	} while(0);
	//m_pCriticalObject->LeaveCritical();

	return u32Ret;
}

U32 CDeviceClient::SetTagProperty(IN U32 CardID, IN U8 Property1, IN U8 Property2)
{
	U32 u32Ret = RETURN_NO_ERROR;
	BOOL bRet = FALSE;

	do 
	{
		if( m_pDeviceCtrl == NULL )
		{
			u32Ret = ERROR_NO_INITIAL;
			break;
		}

		bRet = m_pDeviceCtrl->CMDSetTagProperty( CardID, Property1, Property2 );
		if( bRet == FALSE )
		{
			u32Ret = GENERIC_ERROR;
			break;
		}

		Sleepms( 700 );
		U8 u8Result = 0;
		bRet = m_pDeviceCtrl->CMDSetTagPropertyResult( &u8Result );
		if( bRet == FALSE )
		{
			u32Ret = GENERIC_ERROR;
			break;
		}

		if( u8Result != RESULT_SUCCESS )
		{
			u32Ret = GENERIC_ERROR;
		}

	} while(0);

	return u32Ret;
}

U32 CDeviceClient::GetTagProperty(IN U32 CardID, OUT U8* pProperty1, OUT U8* pProperty2)
{
	U32 u32Ret = RETURN_NO_ERROR;
	BOOL bRet = FALSE;

	do 
	{
		if( m_pDeviceCtrl == NULL )
		{
			u32Ret = ERROR_NO_INITIAL;
			break;
		}

		U8 Property1 = 0;
		U8 Property2 = 0;
		bRet = m_pDeviceCtrl->CMDGetTagProperty( CardID );
		if( bRet == FALSE )
		{
			u32Ret = GENERIC_ERROR;
			break;
		}

		Sleepms( 700 );
		bRet = m_pDeviceCtrl->GetTagProperty( &Property1, &Property2 );
		if( bRet == FALSE )
		{
			u32Ret = GENERIC_ERROR;
			break;
		}

		*pProperty1 = Property1;
		*pProperty2		= Property2;

	}while(0);

	return u32Ret;
}

U32 CDeviceClient::GetTagPropertyCardID(OUT U32* CardID, OUT U8* IsOver )
{
	U32 u32Ret = RETURN_NO_ERROR;
	BOOL bRet = FALSE;

	do 
	{
		if( m_pDeviceCtrl == NULL )
		{
			u32Ret = ERROR_NO_INITIAL;
			break;
		}

		bRet = m_pDeviceCtrl->GetTagPropertyReturnCard( CardID, IsOver );
		if( bRet == FALSE )
		{
			u32Ret = GENERIC_ERROR;
			break;
		}

	}while(0);

	return u32Ret;
}

⌨️ 快捷键说明

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