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

📄 transform.c

📁 基于ARM7的ucos-ii移动收发通信编程ADS开发源码
💻 C
📖 第 1 页 / 共 2 页
字号:
#define   TRANSFORMMODULE

#include  "config.h"
#include "transform.h"

/*******************************************************************************************************
** 函数名称: INT16S hexTo2Ascii(INT8U *data, char *buffer, INT16S len)
** 功能描述: 码值转化函数
** 输   入: 无
** 输   出: 无          
** 全局变量: 无
** 调用模块: 
** 作   者: 崔敬军 
** 日   期: 2007年05月20日
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日   期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
//数据类型转化,比如0x12 0x34转化为"1234\0"
//data		源数据区指针
//buffer	目的数据区指针
//len		源数据自己个数
//返回		目的数据区长度
INT16S hexTo2Ascii(INT8U *data, char *buffer, INT16S len)
{
	const char ascTable[17] = {"0123456789ABCDEF"};
	
	char *tmp_p = buffer;
	
	INT16S i = 0;
	INT16S pot = 0;
	
	for( i = 0; i < len; i++ )
	{
	    tmp_p[pot++] = ascTable[data[i] >> 4]; 
	    tmp_p[pot++] = ascTable[data[i] & 0x0F]; 
	}
	tmp_p[pot] = '\0';
	return pot;
}
/*******************************************************************************************************
** 函数名称: INT8U asch(INT8U i)
** 功能描述: ASCII------ HEX
** 输   入: i---------- 待转化的数据
** 输   出: HEX          
** 全局变量: 无
** 调用模块: 
** 作   者: 崔敬军 
** 日   期: 2007年05月20日
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日   期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
//数据格式转换,比如'a'转换为0x0a
//i		源数据
//返回:转换后的数据
INT8U asch(INT8U i)
{
	if(i >= 0x30 && i <= 0x39)
 	{
 		i -= 0x30;
 	}
 	else if(i >= 0x41 && i <= 0x46)
 	{
 		i -= 0x37;
 	}
 	return i;
}
/*******************************************************************************************************
** 函数名称: INT8U BCD2HEX(INT8U bcd_data)
** 功能描述: BCD-------- HEX
** 输   入: bcd_data--- 待转化的数据
** 输   出: HEX          
** 全局变量: 无
** 调用模块: 
** 作   者: 崔敬军 
** 日   期: 2007年05月20日
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日   期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
//数据格式转化,比如0x12转换为12
//
INT8U BCD2HEX(INT8U bcd_data)
{
	INT8U temp;
 
	temp = (((( bcd_data >> 4) * 10 ) + ( bcd_data % 16 )));
 
	return temp;
}
/*******************************************************************************************************
** 函数名称: INT16U BCDToHex(INT16U bcd_data)
** 功能描述: BCD-------- HEX
** 输   入: bcd_data--- 待转化的数据
** 输   出: HEX          
** 全局变量: 无
** 调用模块: 
** 作   者: 崔敬军 
** 日   期: 2007年05月20日
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日   期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
INT16U BCDToHex(INT16U bcd_data)   
{  
	INT16U temp;
	
	temp = (bcd_data >> 12)*1000 + ((bcd_data >> 8)&0x0f)*100 + ((bcd_data >> 4)&0x0f)*10 + (bcd_data&0x0f);
	 
    return   temp;   
} 
/*******************************************************************************************************
** 函数名称: INT8U HEX2BCD(INT8U hex_data)
** 功能描述: HEX--------BCD
** 输   入: hex_data--- 待转化的数据
** 输   出: BCD         
** 全局变量: 无
** 调用模块: 
** 作   者: 崔敬军 
** 日   期: 2007年05月20日
**-------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日   期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
INT8U HEX2BCD(INT8U hex_data)
{
	INT8U temp;
 
 	temp = (((hex_data /10) << 4 )|(hex_data%10));
 
 	return temp;
}
/*******************************************************************************************************
** 函数名称: INT16U Recive_T_M( INT8U * c , INT16U ReLeng )
** 功能描述: 接收转义处理
** 输   入: c--------待转义数组的首地址
			 ReLeng---带转义数据的数据长度
** 输   出: t--------转义的字节个数 c-----转义后的数据存储区
** 全局变量: 无
** 调用模块: 
** 作   者: 崔敬军 
** 日   期: 2007年05月20日
**------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日   期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
//接受转义处理,遇到0x5E 0x5D转换为0x5E, 遇到0x5E 0x7D转换为0x7E
//c			待转义数据区,转移后仍放在这个地址
//ReLeng	待转义数据区长度
//返回		转义的自己个数
INT32U Recive_T_M( INT8U * c , INT32U ReLeng )
{
    INT32U t = 0;
    INT32U i = 0;

    for( i = 0; i < ReLeng ; i++ )
    {
    	if(( c[i+t] == 0x5E ) && ( c[i+t+1] == 0x5D ))
    	{
   	 		c[i] = 0x5E;
    		t += 1;
    	}
   	 	else if(( c[i+t] == 0x5E ) && ( c[i+t+1] == 0x7D ))
    	{
    		c[i] = 0x7E;
    		t += 1;
    	}
    	else 
    	{
    		c[i] = c[i+t];
    	}
    }
    return t;
}
/*******************************************************************************************************
** 函数名称: INT32U SplitData( INT8U * c , INT8U * string, INT8U ReLeng )
** 功能描述: 拆分处理(针对网管)
** 输   入: c--------待拆分数组的首地址
			 string---拆分后数组的首地址
			 ReLeng---拆分数据包的数据长度
** 输   出: t--------拆分后的字节个数
** 全局变量: 无
** 调用模块: 
** 作   者: 崔敬军 
** 日   期: 2007年05月20日
**------------------------------------------------------------------------------------------------------
** 修 改 人:
** 日   期:
**------------------------------------------------------------------------------------------------------
********************************************************************************************************/
INT32U SplitData( INT8U * c , INT8U * string, INT32U ReLeng )
{
	INT32U  st = 0;
    INT8U   i = 0;
    INT8U   Hdata;
    INT8U   Ldata;
	
	for( i = 0; i < ReLeng; i++ )
	{
	    Hdata = (*c) / 16;
	    
        Ldata = (*c++) % 16;

        if(Hdata <= 0x09) Hdata = Hdata + 0x30;
        if(Ldata <= 0x09) Ldata = Ldata + 0x30;
        if(Hdata >= 0x0A && Hdata<=0x0F) Hdata = Hdata + 0x37;
        if(Ldata >= 0x0A && Ldata <= 0x0F) Ldata = Ldata + 0x37;

        *string++ = Hdata;
        *string++ = Ldata;	
	}
	
	st = ReLeng * 2;
	
	return st;
}
/*******************************************************************************************************
** 函数名称: INT32U Compages( INT8U * c , INT8U * string, INT8U ReLeng )
** 功能描述: 组合处理(针对网管)
** 输   入: c--------待组合数组的首地址
			 string---组合后数组的首地址
			 ReLeng---组合数据包的数据长度
** 输   出: t--------组合后的字节个数
** 全局变量: 无
** 调用模块: 
** 作   者: 崔敬军 
** 日   期: 2007年05月20日

⌨️ 快捷键说明

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