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

📄 devicectrl.cpp

📁 RFID温度签的源码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		pTime->u8Month	= Buf[3];
		pTime->u8Day	= Buf[4];
		pTime->u8Hour	= Buf[5];
		pTime->u8Minute	= Buf[6];

		bRet = TRUE;
	} while(0);

	return bRet;
}

BOOL CDeviceCtrl::CMDSetCheckTimeInterval( IN U32 CardID, IN U8 ReadWriteSign, IN U16 Minute )
{
	BOOL bRet = FALSE;
	U32  u32Length = 0;
	U8	 CMD[9];

	CMD[0]	= 0x02;
	CMD[1]	= 0x09;
	CMD[2]	= 0x09;
	CMD[3]	= GET_CARD_ID2( CardID );
	CMD[4]	= GET_CARD_ID3( CardID );
	CMD[5]	= ReadWriteSign;
	CMD[6]	= GET_U16_HIGH( Minute );
	CMD[7]	= GET_U16_LOW( Minute );
	CMD[8]	= GetXorVal( CMD, 9 );

	bRet = WriteData( CMD, sizeof( CMD ), &u32Length );
	if( bRet )
	{
		if( u32Length != sizeof( CMD ) ) bRet = FALSE;
	}

	return bRet;
}

BOOL CDeviceCtrl::GetSetCheckTimeIntervalResult( OUT U8* pResult )
{
	return GetCommonResult( pResult );
}

BOOL CDeviceCtrl::GetCheckTimeInterval( OUT U16 *pVal )
{
	BOOL bRet = FALSE;
	U32	 u32Length = 0;
	U8	 Buf[5];

	bRet = ReadData( Buf, sizeof(Buf), &u32Length );
	do 
	{
		if( bRet == FALSE )	break;
		bRet = FALSE;
		if( Buf[0] != 0x02 || Buf[1] != 0x05 )	break;
		//if( Buf[2] != 0x00 )	break;
		*pVal = GET_U16( Buf[2], Buf[3] );
		bRet = TRUE;
	} while(0);

	return bRet;
}

#ifdef _TEST__
#define TEMP_COUNT__	16
#define TEMP_TEST_UNIT	16
U8 TemperatureData[TEMP_COUNT__];
U32	g_CurrentTempIndex;

BOOL CDeviceCtrl::CMDGetTemperature( IN U32 CardID )
{
	for( int i=0; i<TEMP_COUNT__/TEMP_TEST_UNIT; i++ )
	{
		TemperatureData[0+i*TEMP_TEST_UNIT] = 1;
		TemperatureData[1+i*TEMP_TEST_UNIT] = 2;
		TemperatureData[2+i*TEMP_TEST_UNIT] = 3;
		TemperatureData[3+i*TEMP_TEST_UNIT] = 6;
		TemperatureData[4+i*TEMP_TEST_UNIT] = 8;
		TemperatureData[5+i*TEMP_TEST_UNIT] = -6;
		TemperatureData[6+i*TEMP_TEST_UNIT] = -2;
		TemperatureData[7+i*TEMP_TEST_UNIT] = 4;
		TemperatureData[8+i*TEMP_TEST_UNIT] = 5;
		TemperatureData[9+i*TEMP_TEST_UNIT] = 2;
		TemperatureData[10+i*TEMP_TEST_UNIT] = -1;
		TemperatureData[11+i*TEMP_TEST_UNIT] = -3;
		TemperatureData[12+i*TEMP_TEST_UNIT] = -8;
		TemperatureData[13+i*TEMP_TEST_UNIT] = -2;
		TemperatureData[14+i*TEMP_TEST_UNIT] = -4;
		TemperatureData[15+i*TEMP_TEST_UNIT] = -5;
	}

	g_CurrentTempIndex = 0;
	return TRUE;
}

BOOL CDeviceCtrl::GetTemperature( OUT U16* pCount, OUT CARD_TIME *pStartTime, 
								 OUT U16* pInterval, OUT U16* pStartTemerature, OUT U8* pArray )
{
	*pCount = 17;
	*pStartTemerature = 0;

	pStartTime->u8Year	= 0x01;
	pStartTime->u8Month	= 0x01;
	pStartTime->u8Day	= 0x01;
	pStartTime->u8Hour	= 0x01;
	pStartTime->u8Minute= 0x03;

	*pInterval = GET_U16( 0x5d, 0x01 );
	*pStartTemerature = GET_U16( 0x01, 0x01 );

	pArray[0] = 0x3f;
	pArray[0] = 0x04;
	pArray[0] = 0x01;
	pArray[0] = 0x07;
	pArray[0] = 0x02;
	return TRUE;
}

BOOL CDeviceCtrl::GetTemperatureData( OUT U8* pArray, U32 BufferSize, U32* ReadSize )
{
	if( TEMP_COUNT__ - g_CurrentTempIndex - 5 > BufferSize )
	{
		memcpy( pArray, &TemperatureData[g_CurrentTempIndex], BufferSize );
		g_CurrentTempIndex += BufferSize;
		*ReadSize = BufferSize;
	}
	else
	{
		memcpy( pArray, &TemperatureData[g_CurrentTempIndex], TEMP_COUNT__ - g_CurrentTempIndex );
		*ReadSize = TEMP_COUNT__ - g_CurrentTempIndex;
	}
	
	return TRUE;
}
#endif // _TEST__

#ifndef _TEST__
BOOL CDeviceCtrl::CMDGetTemperature( IN U32 CardID )
{
	BOOL bRet = FALSE;
	U32  u32Length = 0;
	U8	 CMD[6];

	CMD[0]	= 0x02;
	CMD[1]	= 0x0A;
	CMD[2]	= 0x06;
	CMD[3]	= GET_CARD_ID2( CardID );
	CMD[4]	= GET_CARD_ID3( CardID );
	CMD[5]	= GetXorVal( CMD, 5 );

	bRet = WriteData( CMD, sizeof(CMD), &u32Length );
	if( bRet )
	{
		if( u32Length != sizeof(CMD) )	bRet = FALSE;
	}

	return bRet;
}

BOOL CDeviceCtrl::GetTemperature( OUT U16* pCount, OUT CARD_TIME *pStartTime, 
						OUT U16* pInterval, OUT U16* pStartTemerature, OUT U8* pArray )
{
	BOOL bRet = FALSE;
	U32	 u32Length = 0;
	U8	 Buf[21];	// this buffer maybe too little
	memset( Buf, 0, 21 );
	U16	 TemperatureCount = 0;		
//	bRet = ReadData( Buf, 21, &u32Length );

	bRet = ReadData(Buf,4,&u32Length );
	if ( bRet == FALSE) return bRet;
	if ( Buf[1] == 0x04 ) return FALSE;
	
	bRet = ReadData(Buf+4,17,&u32Length);

	do 
	{
		if( bRet ==  FALSE )	break;
		bRet = FALSE;
		if( Buf[0] != 0x02 )	break;	
		if( Buf[1] == 0x04 && Buf[2] == 0x01 ) break;

		TemperatureCount = GET_U16( Buf[4], Buf[5] );

		pStartTime->u8Year	= Buf[6];
		pStartTime->u8Month	= Buf[7];
		pStartTime->u8Day	= Buf[8];
		pStartTime->u8Hour	= Buf[9];
		pStartTime->u8Minute= Buf[10];

		*pCount = TemperatureCount;
		*pInterval = GET_U16( Buf[11], Buf[12] );
		*pStartTemerature = GET_U16( Buf[13], Buf[14] );

		// five temperature
		pArray[0] = Buf[15];
		pArray[1] = Buf[16];
		pArray[2] = Buf[17];
		pArray[3] = Buf[18];
		pArray[4] = Buf[19];


		bRet = TRUE;
	} while(0);

	return bRet;
}

BOOL CDeviceCtrl::GetTemperatureData( OUT U8* pArray, U32 BufferSize, U32* ReadSize )
{
	BOOL bRet = FALSE;
	U32	 u32Length = 0;
	U8	 Buf[21]={0};
	U16	 TemperatureCount = 0;		
	//bRet = ReadData( Buf, 21, &u32Length );
	
	bRet = ReadData(Buf,4,&u32Length );
	if ( bRet == FALSE) return bRet;
	if ( Buf[1] == 0x04 ) return FALSE;

	bRet = ReadData(Buf+4,17,&u32Length);
	do 
	{
		if( bRet ==  FALSE )	break;
		bRet = FALSE;
		if( Buf[0] != 0x02  )	break;	
		if( Buf[1] == 4 && Buf[2] == 0x01 )	break;	

		pArray[0] = Buf[4];
		pArray[1] = Buf[5];
		pArray[2] = Buf[6];
		pArray[3] = Buf[7];
		pArray[4] = Buf[8];
		pArray[5] = Buf[9];
		pArray[6] = Buf[10];
		pArray[7] = Buf[11];
		pArray[8] = Buf[12];
		pArray[9] = Buf[13];
		pArray[10] = Buf[14];
		pArray[11] = Buf[15];
		pArray[12] = Buf[16];
		pArray[13] = Buf[17];
		pArray[14] = Buf[18];
		pArray[15] = Buf[19];

		bRet = TRUE;
	} while(0);

	return bRet;

}
#endif // _TEST__

BOOL CDeviceCtrl::CMDSetWarning( IN U32 CardID, IN U8 ReadWriteSign, 
								IN U8 WaringTemperature, IN U8 IntervalTime )
{
	BOOL bRet = FALSE;
	U32  u32Length = 0;
	U8	 CMD[10];

	CMD[0]	= 0x02;
	CMD[1]	= 0x0B;
	CMD[2]	= 0x0A;
	CMD[3]	= GET_CARD_ID1( CardID );
	CMD[4]	= GET_CARD_ID2( CardID );
	CMD[5]	= GET_CARD_ID3( CardID );
	CMD[6]	= ReadWriteSign;
	CMD[7]	= WaringTemperature;
	CMD[8]	= IntervalTime;
	CMD[9]	= GetXorVal( CMD, 9 );

	bRet = WriteData( CMD, sizeof(CMD), &u32Length );
	if( bRet )
	{
		if( u32Length != sizeof( CMD ) )	bRet = FALSE;
	}

	return bRet;
}

BOOL CDeviceCtrl::GetSetWarningResult( OUT U8 *pResult )
{
	return GetCommonResult( pResult );
}

BOOL CDeviceCtrl::GetWarningData( OUT U8* pWarningTemperature, OUT U8* pIntervalTime )
{
	BOOL bRet = FALSE;
	U32	 u32Length = 0;
	U8	 Buf[5];

	bRet = ReadData( Buf, sizeof(Buf), &u32Length );
	do 
	{
		if( bRet == FALSE )	break;
		bRet = FALSE;
		if( Buf[0] != 0x02 || Buf[1] != 0x05 )	break;
		if( Buf[4] != GetXorVal( Buf, 4) )	break;
		*pWarningTemperature = Buf[2];
		*pIntervalTime	= Buf[2];
		bRet = TRUE;
	} while(0);

	return bRet;
}

BOOL CDeviceCtrl::CMDStop( IN U32 CardID )
{
	BOOL bRet = FALSE;
	U32  u32Length = 0;
	U8	 CMD[6];

	CMD[0]	= 0x02;
	CMD[1]	= 0x0C;
	CMD[2]	= 0x06;
	CMD[3]	= GET_CARD_ID2( CardID );
	CMD[4]	= GET_CARD_ID3( CardID );
	CMD[5]  = GetXorVal( CMD, 5 );

	bRet = WriteData( CMD, sizeof( CMD ), &u32Length );
	if( bRet )
	{
		if( u32Length != sizeof(CMD) )	
			bRet = FALSE;
	}

	return bRet;
}

BOOL CDeviceCtrl::GetStopResult( OUT U8* pResult )
{
	return GetCommonResult( pResult );
}

BOOL CDeviceCtrl::CMDGetCurrentTemperature( IN U32 CardID )
{
	BOOL bRet = FALSE;
	U32  u32Length = 0;
	U8	 CMD[7];

	CMD[0]	= 0x02;
	CMD[1]	= 0x0D;
	CMD[2]	= 0x07;
	CMD[3]	= GET_CARD_ID1( CardID );
	CMD[4]	= GET_CARD_ID2( CardID );
	CMD[5]	= GET_CARD_ID3( CardID );
	CMD[6]  = GetXorVal( CMD, 6 );

	bRet = WriteData( CMD, sizeof( CMD ), &u32Length );
	if( bRet )
	{
		if( u32Length != sizeof(CMD) )	
			bRet = FALSE;
	}

	return bRet;
}

BOOL CDeviceCtrl::GetCurrentTemperatureResult( OUT U8* pResult )
{
	return GetCommonResult( pResult );
}

BOOL CDeviceCtrl::GetCurrentTemperatureData( OUT CARD_TIME* pTime, OUT U16* pIndex, OUT U16* pADCount )
{
	BOOL bRet = FALSE;
	U32	 u32Length = 0;
	U8	 Buf[12];

	bRet = ReadData( Buf, sizeof(Buf), &u32Length );
	
	do
	{
		if( bRet == FALSE )	break;
		bRet = FALSE;
		if( Buf[0] != 0x02 || Buf[1] != 0x0C )	break;
		if( Buf[11] != GetXorVal(Buf, 11) )	break;

		pTime->u8Year	= Buf[2];
		pTime->u8Month	= Buf[3];
		pTime->u8Day	= Buf[4];
		pTime->u8Hour	= Buf[5];
		pTime->u8Minute	= Buf[6];
		*pIndex	= GET_U16( Buf[7], Buf[8] );
		*pADCount = GET_U16( Buf[9], Buf[10] );

		bRet = TRUE;
	}while(0);

	return bRet;
}

BOOL CDeviceCtrl::CMDGetRecordData( IN U32 CardID )
{
	BOOL bRet = FALSE;
	U32  u32Length = 0;
	U8	 CMD[8];

	CMD[0]	= 0x02;
	CMD[1]	= 0x02;
	CMD[2]	= 0x08;
	CMD[3]	= GET_CARD_ID2( CardID );
	CMD[4]	= GET_CARD_ID3( CardID );
	CMD[5]  = 0x00;
	CMD[6]	= 0x05;
	CMD[7]  = GetXorVal( CMD, 7 );

	bRet = WriteData( CMD, sizeof( CMD ), &u32Length );
	if( bRet )
	{
		if( u32Length != sizeof(CMD) )	
			bRet = FALSE;
	}

	return bRet;
}

BOOL CDeviceCtrl::CMDWriteRecordData( U32 CardID, RECORD_DATA* pData )
{
	BOOL bRet = FALSE;
	U32  u32Length = 0;
	U8	 CMD[23];

	CMD[0]	= 0x02;
	CMD[1]	= 0x05;
	CMD[2]	= 0x17;
	//CMD[3]	= GET_CARD_ID2( CardID );
	//CMD[4]	= GET_CARD_ID3( CardID );	// property
	CMD[3]	= pData->u8CardProperty[0];
	CMD[4]	= pData->u8CardProperty[1];	// property
	CMD[5]	= 10; //pData->u8Time;
	CMD[6]  = pData->u8ProductName[0];
	CMD[7]  = pData->u8ProductName[1];
	CMD[8]  = pData->u8ProductName[2];
	CMD[9]  = pData->u8ProductName[3];
	CMD[10]	= pData->u8ManufactureName[0];
	CMD[11]	= pData->u8ManufactureName[1];
	CMD[12]	= pData->u8ManufactureName[2];
	CMD[13]	= pData->u8ManufactureName[3];
	CMD[14] = pData->u8ManufactureDate[0];
	CMD[15] = pData->u8ManufactureDate[1];
	CMD[16] = pData->u8ManufactureDate[2];
	CMD[17] = pData->u8ManufactureDate[3];
	CMD[18] = pData->u8ManufactureDate[4];
	CMD[19] = pData->u8ManufactureDate[5];
	CMD[20] = pData->u8ExpirationTime[0];
	CMD[21] = pData->u8ExpirationTime[1];
	CMD[22]	= GetXorVal( CMD, 22 );


	bRet = WriteData( CMD, sizeof( CMD ), &u32Length );
	if( bRet )
	{
		if( u32Length != sizeof(CMD) )	
			bRet = FALSE;
	}

	return bRet;
}

BOOL CDeviceCtrl::CMDSetTagProperty(IN U32 CardID, U8 Property1, U8 Property2 )
{
	BOOL bRet = FALSE;
	U32  u32Length = 0;
	U8	 CMD[9];

	CMD[0]	= 0x02;
	CMD[1]	= 0x04;
	CMD[2]	= 0x09;
	CMD[3]	= GET_CARD_ID2( CardID );
	CMD[4]	= GET_CARD_ID3( CardID );
	CMD[5]	= 'W';
	CMD[6]	= Property1;
	CMD[7]  = Property2;
	CMD[8]  = GetXorVal( CMD, 8 );

	bRet = WriteData( CMD, sizeof( CMD ), &u32Length );
	if( bRet )
	{
		if( u32Length != sizeof(CMD) )	
			bRet = FALSE;
	}

	return bRet;
}

BOOL CDeviceCtrl::CMDGetTagProperty(IN U32 CardID)
{
	BOOL bRet = FALSE;
	U32  u32Length = 0;
	U8	 CMD[9];

	CMD[0]	= 0x02;
	CMD[1]	= 0x04;
	CMD[2]	= 0x09;
	CMD[3]	= GET_CARD_ID2( CardID );
	CMD[4]	= GET_CARD_ID3( CardID );
	CMD[5]	= 'R';
	CMD[6]	= 0;
	CMD[7]  = 0;
	CMD[8]  = GetXorVal( CMD, 8 );

	bRet = WriteData( CMD, sizeof( CMD ), &u32Length );
	if( bRet )
	{
		if( u32Length != sizeof(CMD) )	
			bRet = FALSE;
	}

	return bRet;
}

BOOL CDeviceCtrl::GetTagProperty(OUT U8* pProperty1, OUT U8* pProperty2)
{
	BOOL bRet = FALSE;
	U32	 u32Length = 0;
	U8	 Buf[5];

	bRet = ReadData( Buf, sizeof(Buf), &u32Length );

	do
	{
		if( bRet == FALSE )	break;
		bRet = FALSE;
		if( Buf[0] != 0x02 || Buf[1] != 0x05 )	break;

		*pProperty1 = Buf[2];
		*pProperty2 = Buf[3];

		bRet = TRUE;
	}while(0);

	return bRet;
}

BOOL CDeviceCtrl::CMDSetTagPropertyResult( OUT U8* pResult )
{
	return GetCommonResult( pResult );
}

BOOL CDeviceCtrl::GetTagPropertyReturnCard(OUT U32* CardID, OUT U8* IsOver )
{
	BOOL bRet = FALSE;
	U32	 u32Length = 0;
	U8	 Buf[3];
	*IsOver = TRUE;

	bRet = ReadData( Buf, sizeof(Buf), &u32Length );

	do
	{
		if( bRet == FALSE )	break;
		bRet = FALSE;
		if( Buf[0] != 0x02 )	break;

		*IsOver = TRUE;
		*CardID = GET_U32_CARDID( Buf[1], Buf[2], 0 );

		bRet = TRUE;
	}while(0);

	return bRet;
}

⌨️ 快捷键说明

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