📄 devicectrl.cpp
字号:
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 + -