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