基于java实现的手机收发短消息系统

基于java实现的手机收发短消息系统

ID:34457670

大小:36.93 KB

页数:5页

时间:2019-03-06

基于java实现的手机收发短消息系统_第1页
基于java实现的手机收发短消息系统_第2页
基于java实现的手机收发短消息系统_第3页
基于java实现的手机收发短消息系统_第4页
基于java实现的手机收发短消息系统_第5页
资源描述:

《基于java实现的手机收发短消息系统》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、基于JAVA实现的手机收发短消息系统摘要:介绍一种采用JAVA语言实现的手机收发短消息的系统。该系统通过PC机向手机发送AT命令来实现短消息的收发功能。本文先介绍JAVA语言的串口数据读写的实现,然后介绍利用AT命令实现短消息的收发。关键词: 串口通信;短消息;AT命令;PDU模式0 引言   目前基于GSM网络的短消息应用越来越多。由于采用短消息进行数据传输可以直接利用现有的GSM网络的资源,不需要组建专用的通信网络。另外,采用短消息进行数据通信具有费用低等特点,因此基于GSM短消息功能可以做成传输各种检测、监控数据信号和控制命令的数据通信系统,这些系统能广泛用于远程监控、定位导航、个人通信

2、终端等。目前,利用JAVA语言实现的手机短消息收发系统基本没有。针对目前这种情况,本文介绍一种采用JAVA语言实现的手机短消息收发系统,该系统能够正确的收发短消息,并能长时间的稳定运行,因此该系统在办公系统、物流系统中有广阔的应用前景。另外,由于JAVA语言能够实现跨平台运行,因此该系统不仅可以在Windows平台下运行,而且还可以在Unix平台下运行,从而进一步扩展了系统的应用空间。1实现的原理   一般PC机都有串口,手机也有数据口,利用手机的数据线将PC机的串口与手机的数据口连接起来,为PC机与手机间提供了数据通信的物理链路。PC机通过向手机发送AT命令来控制手机,在此基础上实现短消息的

3、收发操作。手机收发短消息的AT命令主要有:AT+CMGS和AT+CMGR,具体的AT命令参考GSM07.05规范。该系统软件在设计时采用分层实现的思想,这样可以将任务分层处理,使软件具有模块性和伸缩性,也为软件升级和功能扩展提供良好的接口。图1为软件的分层模型。    串口通信层主要是完成数据通信的任务,这一层包括通信帧格式、通信速度等的处理,该层为它的上一层提供数据通信的通道,进行数据的收发处理。AT命令分析层主要完成各个AT命令的分析,即按照AT命令进行数据封装,将封装后的数据交给下一层进行数据发送;接收来自下层的数据,并对接收到的数据进行解包,将接收到的数据交给上层处理。用户应用处理层主

4、要是完成所有用户有关的操作,该层可以根据不同的应用实现不同的处理,该层还可以根据用户新的需要进行相应的扩充,使软件具有很大的处理灵活性。2串口通信层的实现   采用JAVA实现的串口通信与其它语言实现的串口通信概念上一致,都需要打开串口,然后操作串口,处理串口事件,从而实现数据的收发。采用JAVA语言实现的串口通信需要引入适当的jar文件,因此在import部分需要加入“importjavax.comm.*”和“importcom.sun.comm.*”两个语句,从而能使用低层的资源。串口通信是全双工的通信,在软件设计的时候采用异步通信的方式,即收发不同步。在接收数据的时候是根据串口的事件来进

5、行数据获取。为了避免在接收数据的时候出现“脏读”和“脏写”的情况发生,在此使用“生产者-消费者”模型,并结合JAVA语言的同步机制实现串口通信层与AT命令分析层的数据交互。串口通信层的实现框图如图2所示。 图2 串口通信层实现框图   通过图2可以看出,串口通信层主要包括串口的初始化,获得串口的实例,并设置好通信的格式。在串口初始化后,需要打开串口事件的监听,并启动发送数据的线程,以实现分别对接收和发送的检测。当有数据到达或者有数据需要发送时,则进行相应的接收或者发送处理,如果没有数据到达或者没有数据需要发送,则继续监听和检测处理。在数据接收或者数据发送的时候,需要与AT命令层进行数据交互,为

6、了保证数据的有效性,数据交互采用“生产者-消费者”模型处理。下面具体分析采用JAVA语言实现串口通信的程序片段。以下代码基本上都需要进行相应的异常处理,这里限于篇幅不进行详细的介绍。   下面给出串口初始化的代码片段。在打开串口之前需要加载驱动程序,使用以下语句实现串口的打开://驱动加载Win32DriverwDriver=newWin32Driver();          wDriver.initialize();portId=CommPortIdentifier.getPortIdentifier(strName);//打开串口m_Port=(SerialPort)portId.ope

7、n("SMSAPP",2000);//获得数据输入流m_InStream=m_Port.getInputStream();             //获得数据输出流m_OutStream=m_Port.getOutputStream();          以上的语句主要用于打开串口,获得串口的实例。其中“Win32DriverwDriver=newWin32Driver();wDriver.i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。