cb_code_t str_to_proto(const uint8_t *src, int slen, uint8_t *dst) { uint8_t stmp[128] ={0}; uint8_t low = 0; uint8_t high = 0; int i = 0; int supply = 0; if( NULL == dst || NULL == src || slen > 126) { return CB_NULL_POINT; } memcpy(stmp, src, slen); if( slen % 2 ) { stmp[slen] = 'f'; } supply = strlen((char *)stmp); supply = supply >> 1; for( i = 0; i < supply ; i++ ) { low = asc_to_hex(stmp[2*i]); high = asc_to_hex(stmp[2*i+1]); *(dst+i) = (high << 4) + low; } return CB_OK; }
/******************************************************************************* * 描 述 : 判断操作类型(发送卡号、读卡、写卡、修改密码 ) * 输 入 : 无 * 输 出 : 无 * 返 回 : 无 *******************************************************************************/ void rfid_ctrl(u8* p_data) { u8 ii; for( ii = 0 ; ii < 30 ; ii++ ) RevBuffer[ii] = (asc_to_hex(p_data[ii*2+0])<<4) + asc_to_hex(p_data[ii*2+1]); DebugPrintf(OTHER_DBG,"found rfid input: "); debug_printf(OTHER_DBG,RevBuffer,30); switch(RevBuffer[1]) { case 0xa0: //发送卡号 oprationcard=SENDID; break; case 0xa1://读数据 oprationcard=READCARD; for(ii=0;ii<6;ii++) PassWd[ii] = RevBuffer[ii+2]; KuaiN=RevBuffer[8]; break; case 0xa2://写数据 oprationcard=WRITECARD; for(ii=0;ii<6;ii++) PassWd[ii]=RevBuffer[ii+2]; KuaiN=RevBuffer[8]; for(ii=0;ii<16;ii++) WriteData[ii]=RevBuffer[ii+9]; break; case 0xa3: //修改密码 oprationcard=KEYCARD; for(ii=0;ii<6;ii++) PassWd[ii]=RevBuffer[ii+2]; KuaiN=RevBuffer[8]; for(ii=0;ii<6;ii++) { NewKey[ii]=RevBuffer[ii+9]; NewKey[ii+10]=RevBuffer[ii+9]; } break; default: break; } }