资源简介
从网络上知名代码gsm修改而来,
(http://www.cppblog.com/Lee7/archive/2008/01/15/41186.html)
标准c实现,优化资源消耗,vc6.0验证过,可直接移植到嵌入式系统。
代码片段和文件信息
#include “stdio.h“
#include
#include “string.h“
typedef unsigned char INT8U;
typedef signed char INT8S;
typedef unsigned short int INT16U;
typedef signed short int INT16S;
typedef unsigned int INT32U;
typedef signed int INT32S;
//用户信息编码方式
#define PDU_7BIT 0
#define PDU_8BIT 4
#define PDU_USC2 8
//短消息参数结构,编码解码共用
typedef struct __sm_para__
{
INT8U u8SCA[16]; //短消息服务中心号码
INT8U u8TPA[16]; //目标号码,回复号码
INT8U u8TP_PID; //用户信息协议标识
INT8U u8TP_DCS; //用户信息编码方式
INT8U u8TP_SCTS[16]; //服务时间戳字符串
INT8U u8TP_UD[161]; //原始用户信息,编码前或解码后
}SM_PARA *PSM_PARA;
/*****************************************************************************************
功能:
字符转整数
参数:
u8Data 字符
返回值:
转换后的整数
******************************************************************************************/
INT8U myatoi( INT8U u8Data )
{
if ( u8Data >= ‘0‘ && u8Data <= ‘9‘ )
{
return ( u8Data - ‘0‘ );
}
else if ( u8Data >= ‘A‘ && u8Data <= ‘F‘ )
{
return ( u8Data - ‘A‘ + 10 );
}
else if ( u8Data >= ‘a‘ && u8Data <= ‘f‘ )
{
return ( u8Data - ‘a‘ + 10 );
}
else
{
return 0;
}
}
/***************************************************************************************************************
功能:
可打印字符串转换为字节数据
如:“C8329BFD0E01“ --> {0xC8 0x32 0x9B 0xFD 0x0E 0x01}
参数:
pSrc 源字符串指针
pDst 目标数据指针
u32SrcLen 源字符串长度
返回值:
目标数据长度
****************************************************************************************************************/
INT32U PDU_String2Bytes(INT8U* pSrc INT8U* pDst INT32U u32SrcLen)
{
INT32U u32Ret = 0;
INT32U n;
for ( n=0; n {
//输出高4位
pDst[u32Ret] = myatoi(pSrc[n]) << 4 ;
pDst[u32Ret] |= myatoi(pSrc[n+1]);
n += 2;
u32Ret++;
}
return u32Ret;
}
/***************************************************************************************************************
功能:
两两颠倒的字符串转换为正常顺序的字符串
如:“683127226152F4“ --> “8613722216254“
参数:
pSrc 源字符串指针
pDst 目标数据指针
u32SrcLen 源字符串长度
返回值:
目标数据长度
****************************************************************************************************************/
void PDU_SerializeNumbers( INT8U* pSrc INT8U* pDst INT8U u8SrcLen )
{
INT8U n;
for ( n=0; n {
pDst[n] = pSrc[n+1];
pDst[n+1] = pSrc[n];
}
if ( pDst[n-1] == ‘F‘ )
{
pDst[n-1] = 0;
}
else
{
pDst[n] = 0;
}
}
/***************************************************************************************************************
功能:
PDU UCS2解码
参数:
pSrc 源字符串指针
pDst 目标数据指针
u32SrcLen 源字符串长度
返回值:
目标数据长度
****************************************************************************************************************/
INT8U PDU_UCS2_Decode( INT8U* pSrc INT8U* pDst INT8U u8SrcLen )
{
INT8U n = 0;
INT8U u8DestLen = 0;
INT8U u8High u8Low;
if ( u8SrcLen & 0x03 )
{
- 上一篇:火车票售票系统 c语言
- 下一篇:Kruskal算法的c语言实现
相关资源
- C语言进阶——嵌入式系统高级C语言编
- stc8g1k08特性.doc
- 嵌入式C语言自我修养
- oled-超声波测距
- 嵌入式QtC++编程课件
- 嵌入式c编程语言入门与深入.pdf58199
- 基于STM32的嵌入式flash读写控制
- C语言的嵌入式汇编基本使用.docx(2页
- C语言嵌入式Modbus协议栈,支持主站和
- 颜色识别形状识别STM103嵌入式代码
- GBT 28169-2011 嵌入式软件 C语言编码规范
- 基于机器视觉可移动裂纹检测机器人
- 警察抓小偷C代码
- 嵌入式工程师必知必会 (完整高清中
- EAN13条码生成(C语言+VS2010)[包含EA
- 嵌入式Qt实战教程.
- 《测试驱动的嵌入式C语言开发》源码
- 基于stm32的交通信号灯代码
- ldpc编译码c代码
- USB识别 HID识别 MFC代码
- C语言嵌入式系统编程修炼之道
- GBT28169-2011嵌入式软件C语言编码规范
- 嵌入式软件C语言编码规范(高安全性
- 嵌入式软件c编程规范
- MFC代码大全经典+技巧
- 嵌入式linuxC语言程序设计基础教程
- 嵌入式技术基础与实践.pdf
- 基于GEC6818的电子相册和2048小游戏.z
- uml状态图的实用C/C++设计 中英文非扫
- resample函数的C语言实现
评论
共有 条评论