资源简介
从网络上知名代码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语言实现
相关资源
- Linux下C语言2048游戏代码
- 《嵌入式Linux C语言应用程序设计》读
- 基于ZigBee技术的智能灌溉系统研究与
- 数据结构课程设计,飞机订票系统源
- 密码学快速取模指数算法C代码
- 二维FDTD正演C代码
- 基于GMM的说话人识别C代码
- IP TCP UDP校验和计算
- 超简单的ntrip客户端C语言实现.docx
- 嵌入式C语言技术实战开发一书源代码
- 图像处理 FFT快速傅里叶变换 C代码
- OK6410的dht11温度传感器驱动
- C语言编程规范个人规约
- 《嵌入式Linux上的C语言编程实践》
- 嵌入式收费课程视频申嵌
- 尚观教育李慧芹Linux下C语言前嵌入式
- C语言算法之枚举法acm例题
- C语言编写的状态机源代码,包括四种
- ATSHA204加密芯片资料含c代码
- 华为C语言规范-高清.pdf
- 嵌入式用c++实现的红绿灯系统
- libstdc++.so.6.0.28
- 反编译c语言的工具
- C代码注释删除工具 cmnt_rid_c
- SHA256 摘要算法 、HMAC_SHA256 散列/哈希
- Qt4 图形设计与嵌入式开发 源代码
- 单片机开发
- 单片机最小系统(附原理图和PCB).
- 2017年电赛瑞萨芯片RX23T原理图.SchDoc
- LCD12864显示屏使用手册和(串行方式、
评论
共有 条评论