注册名:

密码:

个人注册

企业注册

商务申请

商务管理平台

企业管理平台

个人管理平台

我的工控博客

中国工控网www.chinakong.com

首页 | 新闻中心 | 工控论坛 | 经验视点 | 工控商务 | 电气手册 | 工控博客 | 招聘求职 | 网上调查 | 企业中心 | 供求信息 | 资料中心 | 工控书店

所在位置:工控论坛 -- 工业自动化网络论坛 -- 工业自动化网络论坛(非专题) -- 协议标准

中国工控网搜索:

 登陆:密码:  注册  密码

搜索:

工业自动化网络论坛(非专题)分类  

全部论题

协议标准

硬件配置

发表人:emtronix 发表时间:2010/12/24 20:04:00  

 

 本栏论题: 用eVC在ARM9主板上实现短信收发  [2464]

    利用公共的GSM短信信道(SMS)和GPRS数据信道(TCP/IP),实现设备的远程通讯,是英创嵌入式主板的主要应用领域之一。在英创的x86嵌入式模块产品线中,通过与西门子公司的MC39i无线模块构成基本硬件环境,已提供了完善的GSM短信收发(包括中文短信)方案和基于GPRS的TCP/IP数据通讯方案。在英创ARM9工控主板产品中,通过利用WinCE提供的RAS功能,已实现了基于GPRS、3G信道的TCP/IP通讯,相关方案的介绍请参考《WinCE下的GPRS应用》、《WinCE主板接入3G网络的方法》等文章。本文则主要侧重介绍英创ARM9主板与MC39i模块结合,通过eVC标准C/C++代码操作AT指令,实现中英短信收发功能的方法。
    收发短消息可分三种模式:BLOCK 模式、TEXT 模式和PDU 模式。BLOCK 模式现在用的很少了;TEXT 模式则只能发送ASCII 码,它不能发送中文的UNICODE码;而PDU 模式编码较为复杂,它需要编写专门的函数来将文本转换为PDU格式,但PDU模式被所有手机支持,可以使用任何字符集,它也是手机默认的编码方式。英创公司提供的解决方案中,正是选用的PDU 模式。
    用PDU模式收发短消息可以使用三种编码: 7-bit 编码、8-bit 编码和UCS2 编码。7-bit 编码用于发送普通的ASCII字符;8-bit 编码通常用于发送数据消息,如图片或铃声等;UCS2 编码用于发送Unicode字符,当然也可以发送ASCII字符。由于英创的解决方案要实现中文短消息或者ASCII字符的发送,所以选择用UCS2 编码,即中文Unicode码,这可以适应发中文和ASCII字符的需要。PDU 串除了包含所发送的消息本身外,还包含很多其它参数信息,如服务中心号码、目标号码和编码方式等。
    PDU编码与解码比较复杂,本文不做介绍。使用英创公司给出的SMS类,可以在不了解PDU编码格式的情况下,轻松完成短信收发编程。下面详细介绍SMS类的主要成员函数和使用方法。
    为了方便程序开发,定义SM_PARAM结构体如下:
    typedef struct {
    char SCA[16]; // 短消息服务中心号码(SMSC地址)
    char TPA[16]; // 目标号码或回复号码(TP-DA或TP-RA)
    char TP_PID; // 用户信息协议标识(TP-PID)
    char TP_DCS; // 用户信息编码方式(TP-DCS)
    char TP_SCTS[16]; // 服务时间戳字符串(TP_SCTS), 接收时用到
    char TP_UD[160]; // 接收到的短信内容
    TCHAR TP_UDS[160]; // 要发送的短信内容
    } SM_PARAM;
    变量SCA为短消息服务中心号码(SMSC地址),例如成都移动的短消息服务中心号码为:8613800280500,注意,短消息服务中心号码应该包括86。
    变量TPA为要发送的号码和收到短信时对方的手机号码,例如:8613880851364。
    变量PID为协议标识,00表示普通GSM 类型,点到点方式。
    变量DCS为用户信息编码方式:00表示7-bit编码;08表示UCS2 编码;04:表示8-bit 编码。
    变量SCTS为收到的短信的时间戳字符串。
    变量UDS为要发送短信的内容,最大容量是140字节,所以在UCS2 编码方式下,可发送短消息的最大字符数是70 个变量UD为接收到的短信内容。
    在发短信之前,只需要填充SM_PARAM结构体,然后调用SMS_SendPDUMessage函数就可以发短信了。调用SMS_ReadShortMessage,就可以把短信信息读到SM_PARAM结构体中。SMS类的主要函数如下:
    // 函数名称: SMS_Init
    // 描 述: SMS 模块初始化函数
    // 输入参数: LPCTSTR Port : 串口号, 如 'COM1:'
    // int BaudRate : 串口波特率, 如 115200
    // DWORD UserParam: 用户传递到该类中的参数
    // 输出参数: 无
    // 返 回: TRUE: 成功 FALSE: 失败
    BOOL CSMS:: SMS_Init(LPCTSTR Port, int BaudRate, DWORD UserParam)
   
    // 发送PDU编码短消息
    // 输入: pSrc - 源PDU参数指针
    // 返回: TRUE: 成功 FALSE: 失败
    BOOL CSMS::SMS_SendPDUMessage(SM_PARAM* pSrc)
   
    // 函数名称: SMS_ReadShortMessage
    // 描 述: 读取短信内容
    // 输入参数: DWORD num : 短信序号
    // 输出参数: SM_PARAM * SmGetMsg : 短信信息
    // 返 回: TRUE: 成功 FALSE: 失败
    BOOL CSMS::SMS_ReadShortMessage(DWORD num, SM_PARAM * SmGetMsg)
   
    // 函数名称: SMS_DeleteShortMsg
    // 描 述: 删除短信
    // 输入参数: 无
    // 输出参数: DWORD num : 短信序号
    // 返 回: TRUE: 成功 FALSE: 失败
    BOOL CSMS::SMS_DeleteShortMsg(DWORD num)
   
    注意,在使用英创评估底板上的MC39i时,要先对先对MC39I上电,然后在调用初始化函数。下面以向13880851364号码发送“英创hello!”为例,说明SMS_SendPDUMessage函数的使用方法。
    1、对MC39I上电,并初始化:
    SM_PARAM SmsInfo;
    CSMS m_SMS;
    GPRS_PowerOn( ); //MC39I上电
    Sleep( 3000 ); //等3秒钟
    m_SMS.SMS_Init(_T('COM3:'), 115200, (DWORD)this);
    //MC39I接EM9000的com3口
    2、填充pdu结构体:
    SmsInfo.SCA='8613800280500'
    SmsInfo .TPA='8613880851364'
    SmsInfo.TP_PID=0; //00 协议标识(TP-PID) 是普通GSM类型,点到点方式
    SmsInfo.TP_DCS=GSM_UCS2; //使用UCS2编码方式
    SmsInfo .TP_UDS=_T('英创hello!');
    3、调用SMS_SendPDUMessage函数,发短信息:
    m_SMS.SMS_SendPDUMessage(&SmsInfo);
    在读取短信时可以设置一个定时器,在响应TIMER事件的函数中调用SMS_ReadShortMessage函数,就可以及时得到含有短信信息的结构体。
    CString strTelCode, strMsg;
    Bool ret = m_SMS.SMS_ReadShortMessage(1, &ReadMsg);//读取第 1 条短信
    if (ret == TRUE)
    {
    strTelCode=ReadMsg.TPA; //得到对方手机号码
    strMsg=ReadMsg.TP_UD; //得到短信内容
    m_SMS.SMS_DeleteShortMsg(1); //删除短信
    }
    以上给出来使用英创提供的SMS类发短信与读短信的方法,英创客户可以在开发光盘中找到源码,也可以和我们联系得到源码。
   
   
   
   

以下是关于《用eVC在ARM9主板上实现短信收发》论题的回复(共2篇)

回复人:lordllb 

 回复时间:2011/1/10 10:04:00

支持(316) | 反对(475)

 

    哦 学习

回复人:杭州双翌 

 回复时间:2017/6/28 14:09:00

支持(214) | 反对(322)

 

    杭州双翌自动化科技有限公司
    宋永辉 (YongHui Song) Maketing Manager
    TEL: 0571-28350143 FAX: 0571-88315242
    Add: 杭州市西湖区文三路249号联强大厦A座421室
    Web:www.shuangyi-tech.com
    Mobile: (+86) 135-8847-3224
    欢迎来电咨询

如果要回复本栏论题,请首先中国工控网www.chinakong.com

·如果你已经是中国工控网www.chinakong.com成员,请直接登录。

·如果你还不是中国工控网www.chinakong.com成员,请首先注册,注册为免费!

注册名:

密  码:

           注册中国工控网www.chinakong.com
           忘记密码

关闭该窗口

关于我们     免责声明     服务项目     广告联系     友情链接     联系方式     意见反馈     设为首页     加入收藏

 ©2023-2025 中国工控网(www.chinakong.com) 版权所有 豫ICP备17046657号

管理员信箱:chinakong98@163.com  服务热线:13525974529

洛阳博德工控自动化技术有限公司

中国    洛阳