示例#1
0
/*
 *	@sn int ReceiveData(char * data,int * data_len)
 *	@brief receive data and peel off the ransmition protocol
 *	@param data : store the received data 
 *	@param data_len : store the length of the data
 *	@return @li FAIL
 *		 @li SUCC
 *	@sa 
 */
int ReceiveData(char * data, int * data_len)
{
	int dataLen = 0, received_len = 0;
	char buffer[PACK_BUF_LEN];
	
	memset(buffer, 0, sizeof(buffer));
	//read STX
	if(portread(AUX1, 1, buffer, TLVP_TIMEOUT) != 1)
	{
		return FAIL;
	}	
	if(buffer[0] != TLVP_STX)
	{
		return FAIL;
	}
	received_len += 1;
	//read DATA_LEN
	if((portread(AUX1, 2, &buffer[received_len], TLVP_TIMEOUT) != 2))
	{
		return FAIL;
	}
	dataLen = 100*BcdToByte(buffer[1]) + BcdToByte(buffer[2]);
	if((dataLen < 0) || (dataLen > (PACK_BUF_LEN - 5)))
	{
		return FAIL;
	}
	received_len += 2;
	//read DATA
	if(portread(AUX1, dataLen, &buffer[received_len], TLVP_TIMEOUT) != dataLen)
	{
		return FAIL; 
	}
	received_len += dataLen;
	//read ETX
	if(portread(AUX1, 1, &buffer[received_len], TLVP_TIMEOUT) != 1)
	{
		return FAIL;
	}
	if(buffer[received_len] != TLVP_ETX)
	{
		return FAIL;
	}
	received_len += 1;
	//read LRC
	if(portread(AUX1, 1, &buffer[received_len], TLVP_TIMEOUT) != 1)
	{
		return FAIL;
	}
	if(buffer[received_len] != LRC(buffer, received_len))//check LRC
	{
		return FAIL;
	}
	received_len += 1;
	
	memcpy(data,  &buffer[3], dataLen);
	*data_len = dataLen;
	
	return SUCC;
}
示例#2
0
文件: util.c 项目: yqhou/upkg
/** 
0x12 0x34 ==> "31323334"
***/
int BcdToAsciiHex(char *cpSrc, int iInLen, char *cpDest, int *ipOutLen)
{
    int iLen = 0;
    char *cpBuf = (char*)malloc(iInLen*3);
    memset( cpBuf, 0, iInLen*3);
    BcdToByte( cpSrc, iInLen, cpBuf, &iLen);
    ByteToAsciiHex( cpBuf, iLen, cpDest, ipOutLen );
    free( cpBuf );
    return 0;
}