0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术嵌入式Linux中同时实现GPRS和SMS短信收发

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-01-14 11:06 次阅读

随着移动通讯技术的发展普及,GPRS无线通讯和SMS短信收发越来越多地应用到工业领域的远程数据通讯中。GPSR主要是进行的数据通讯,SMS则是AT指令的操作模式,在不少的无线通讯模块,比如西门子的MC39i、华为的GTM900,模块一旦处于GPRS数据通讯状态,则无法再进行AT指令的操作,从而难以同时实现SMS短信数据收发的功能。解决这个问题方法之一是在软件上实现多路转换协议,这种方式通过软件协议的方式将一个物理口虚拟为多个口,从而将GPRS通讯和SMS通讯分开,这种模式程序往往比较复杂,在嵌入式的应用中比较难以实现。方法之二就是直接在硬件物理口上将GPRS和SMS通讯分开,西门子提供的MC37i无线模块本身就自带有两个物理串口,可以支持分别进行GPRS和SMS通讯的操作。本文将结合英利公司提供的ARM9 Linux主板EM9160和ETA300 GPRS扩展单元(GPRS无线模块为MC37i),着重介绍如何同时实现GPSR通讯和SMS短信收发的应用。

硬件组成

英利公司的嵌入式Linux主板EM9160共有6个异步串口,在Linux环境中为“/dev/ttyS1”-“/dev/ttyS6”。ETA300是包括MC37i模块的外挂式GPRS通讯单元,可直接通过带线与英利EM9160开发评估底板相连,如下图所示。其中GPRS通讯占用EM9160的 “/dev/ttyS1” (或称COM2) 口,SMS通讯占用EM9160的“/dev/ttyS4”( 或称COM5 ) 口,连接方式如下图所示。

MC37i电源管理

通过ETA300 GPRS扩展单元可实现对MC37i的电源管理,MC37i的电源管理是通过两路GPIO:GPIO8和GPIO9来实现,分别对应GPRS _STB、GPRS_AUX管脚信号。在程序上操作GPIO8、GPIO9实现对MC37i的上电、关电操作。以下为提供的对MC37i电源管理的操作函数:

// 功能描述:该函数通过对EM9160的GPRS_STB和GPRS_AUX两个管脚信号的操作,实现对GPRS模块的电源管理。
// 输入参数 OpMode: 电源管理功能索引号,有效索引号包括:
OpMode = 1: 对GPRS模块进行上电操作,并把执行该操作后电 源状态返回;
OpMode = 2: 对GPRS模块进行强制关电,并把执行该操作后电源状态返回;
OpMode = 3: 读取GPRS模块当前的电源状态。
// 输出参数 pResult: 用于存储读取的电源状态信息
*pResult = 0: 表示GPRS模块的电源已关闭;
*pResult = 1: 表示GPRS模块的电源已加载成功;
int GPRS_PM( int fd, int OpMode, int* pResult )

嵌入式Linux中的GPRS拨号

嵌入式Linux ppp GPRS拨号程序pppd和相关的脚本文件,均已经缺省包含在EM9160板卡的根文件系统中。

嵌入式Linux主板EM9160环境下进行GPRS拨号时,首先调用函数GPRS_PM(…)使MC37i上电成功,然后再启动pppd进程进行GPRS拨号。

printf('GPRS Power On\n');
GPRS_PM(fd, 1, &GPRS_State);
// MC37i模块上电登录到移动网络等待时间
for( i1=0; i1<8; i1++ )
{
sleep( 1 );
printf( '.\n' );
}
system( 'pppd call pppd-connect-script' );

挂断直接可调用ppp-off脚本:

system( '/etc/ppp/ppp-off' );

嵌入式Linux中的SMS短信收发

SMS短信收发的核心通讯模式为串口通讯,应用程序上也是采用的C++编程方式,利用英利公司网站技术天地栏目中《嵌入式Linux串口通讯的C++设计》一文中介绍的CSerial类,在CSerial基础上派生了一个针对于SMS收发应用的class SMS,该派生类 class SMS 中重新实现了虚函数PackagePro(…) 接收数据处理函数,以满足SMS收发的应用需求。

在sms.h中定义了短信的数据结构:

struct SMS_DATA
{
unsigned char PhoneNum[16]; // 对端电话号码
struct Date d; // 日期:年月日
struct Time t; // 时间:时分秒
int DatLen; // 数据长度
unsigned char DBuf[168]; // 短信数据内容
};

对于SMS短信收发可调用的类函数包括有:

// 按照指定的参数打开短信Modem端口,并创建短信接收线程
int OpenPort( int PortNo, int baudrate, char databits, char stopbits, char parity );
// 关闭短信Modem端口并释放相关资源
int ClosePort( );
// 发送AT指令初始化短信Modem
int InitSMSModem( );
// 发送短信
int SendMessage( struct SMS_DATA* pSMS );

在该例程中短信接收的处理放在函数PackagePro(…)中实现的,用户可以根据实际情况加以调整。SMS短信收发的实现代码均在sms.cpp下,由于是CSerial的派生类,其接收的主要流程可参见英利公司网站技术天地栏目中《嵌入式Linux串口通讯的C++设计》一文中相关介绍,这里不再赘述。

在class SMS中实现了支持中文短信的发送,所以短信发送的模式均采用PDU模式。对于中文字符,在短信发送时还需要转换为unicode码,程序代码中已经实现了中文内码到unicode 码的自动转换,客户在测试该程序时,需要注意的是要将unicode 的相关转换文件表COPY到/mn/nandflash:gsm0338.bin gb2312.bin unicode.bin。

本文中所介绍的例程仅仅适用于英利EM9160嵌入式主板,均有源码提供。感兴趣的客户可以发邮件到公司技术支持邮箱 support@emlinix.com索取相关代码。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11215

    浏览量

    208754
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6084

    浏览量

    35164
收藏 人收藏

    评论

    相关推荐

    什么是嵌入式?一文读懂嵌入式主板

    在现代科技浪潮嵌入式技术已成为支撑各种智能设备和系统运行的核心力量。那么,究竟什么是嵌入式嵌入式系统,顾名思义,是将计算机的硬件和软件
    的头像 发表于 10-16 10:14 421次阅读

    嵌入式linux开发的基本步骤有哪些?

    嵌入式Linux开发是一个复杂的过程,涉及到硬件选择、操作系统移植、驱动开发、应用程序开发等多个方面。以下是嵌入式Linux开发的基本步骤,以及每个步骤的说明。 硬件选择 在开始
    的头像 发表于 09-02 09:11 357次阅读

    嵌入式linux开发板怎么操作

    嵌入式Linux开发板是一种基于Linux操作系统的嵌入式系统开发平台。它通常包括一个处理器、内存、存储器、输入/输出接口等硬件组件,以及一个基于L
    的头像 发表于 09-02 09:09 307次阅读

    嵌入式linux开发板芯片的工作原理

    嵌入式Linux开发板是一种基于Linux操作系统的嵌入式系统开发平台,它广泛应用于工业控制、智能家居、智能交通、医疗设备等领域。 嵌入式
    的头像 发表于 09-02 09:07 306次阅读

    飞凌嵌入式技术创新日(深圳站)圆满落幕

    2024年8月26日下午,飞凌嵌入式技术创新日深圳站在深圳威尼斯迪格酒店盛大举行,此次活动汇聚了近200位嵌入式技术领域的专家和企业代表,
    的头像 发表于 08-30 15:42 279次阅读
    飞凌<b class='flag-5'>嵌入式</b><b class='flag-5'>技术</b>创新日(深圳站)圆满落幕

    飞凌嵌入式技术创新日(深圳站)精彩回顾

    2024年8月26日下午,飞凌嵌入式技术创新日深圳站在深圳威尼斯迪格酒店盛大举行,此次活动汇聚了近200位嵌入式技术领域的专家和企业代表,
    发表于 08-28 09:06

    学习hypervisor嵌入式产品安全设计

    第一部分(第1~2章)介绍Hypervisor基础,涵盖虚拟化技术实现、主流的嵌入式Hypervisor产品,以及基于分离内核的嵌入式Hypervisor等内容。第二部分(第3~12
    发表于 08-25 09:11

    嵌入式机电一体化系统设计与实现》读后感

    的应用。曾教授详细讲解了如何为嵌入式系统构建Linux环境,以及在Linux中进行程序设计的方法和技巧。通过这些内容,我不仅掌握了Linux嵌入式
    发表于 08-21 08:45

    嵌入式热门领域有哪些?

    通过物联网连接各种物理设备和传感器,促使它们之间实现信息的交换和数据的共享。从智能家居到智能城市,物联网的应用不断扩展,为嵌入式系统工程师带来了广泛的就业机会和发展前景。 自动驾驶 自动驾驶
    发表于 07-16 09:23

    介绍一种嵌入式Linux的录音降噪方案

    降噪不仅只能从硬件入手,本文为您介绍一种嵌入式Linux的录音降噪方案。该方案完全依靠软件实现,最大程度上降低投入。
    的头像 发表于 05-21 11:52 513次阅读

    嵌入式人工智能的就业方向有哪些?

    网络编程开发及实战下 数据库开发 Linux应用开发综合实战 三:嵌入式Linux系统工程师,Linuxkernel工程师,嵌入式Linux
    发表于 02-26 10:17

    嵌入式学习步骤

    开发板上测试固件以及在实际设备上进行测试。 嵌入式系统的多样化发展,它将更为广泛地应用于各个领域,实现智能化、网络化、自动化的目标。同时,随着人工智能和机器学习技术的发展,
    发表于 02-02 15:24

    嵌入式Linux开发的三种方式

    嵌入式Linux开发主要有三种方式:裸机开发、SDK开发和驱动开发。
    的头像 发表于 01-22 14:22 911次阅读

    嵌入式自学好书推荐

    令、编辑器VI、编译器GCC、调试器GDB以及Make项目管理工具、Shell和Makefile脚本编写等知识,并搭建嵌入式开发环境。推荐书籍:《Linux从入门到精通》。 无论从就业市场还是技术发展的角度来看,
    发表于 01-11 15:13

    菁蓉联获得首个openEuler嵌入式操作系统技术测评证书

    近日,成都菁蓉联科技有限公司(简称:菁蓉联)携手四川鲲鹏&欧拉生态创新中心完成首个openEuler嵌入式操作系统技术测评证书。
    的头像 发表于 11-28 10:18 989次阅读
    菁蓉联<b class='flag-5'>创</b>获得首个openEuler<b class='flag-5'>嵌入式</b>操作系统<b class='flag-5'>技术</b>测评证书