购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

5.2 关键技术

5.2.1 短信猫技术

本模块的核心依赖于短信猫技术来实现短信的接收和发送,所谓短信猫,其实是一种工业级GSM MODEM,通过串口与计算机连接,可以通过AT指令控制进行短信收发的设备。国内目前应用较多的短信猫,都是以SIEMENS或WAVECOM模块为核心组装而成的,与普通手机相比更为稳定高效。

基于短信猫开发短信应用,用户可以采用以下三种方式:

❑ 通过串口用AT指令驱动短信猫收发短信,这是最底层的开发模式,需要对短信模块的AT指令相当熟悉。

❑ 短信猫开发包:短信猫厂商基于串口AT指令集成的应用开发包,用户只需直接调用短信收发API即可。

❑ 短信中间件:短信猫厂商提供的短信收发后台服务软件。

在使用短信猫收发短信之前,首先要将短信猫设备与计算机进行连接,下面以金仓短信王标准商务版设备为例进行介绍。短信猫如图 5.5 所示。专用电源充电器如图 5.6 所示。

图 5.5 短信猫

图 5.6 短信猫充电器

通信线:串口数据通信线如图 5.7 所示。

短信猫天外置的天线如图 5.8 所示。

图 5.7 短信猫通信线

图 5.8 短信猫外置天线

安装SIM卡:用圆珠笔或其他工具顶SIM卡座按钮,设备会弹出SIM卡座,将SIM卡放入卡座,如图 5.9 所示,再将卡座插回设备的SIM卡插孔即可,如图 5.9~图 5.11 所示。安装天线:在设备后面有一铜螺柱,将天线拧上,如图 5.12 所示。

图 5.9 短信猫的SIM卡座

图 5.10 将SIM卡放入卡座

图 5.11 将SIM卡座插回短信猫

图 5.12 安装短信猫天线

连接串口线:将圆形插针与DG-C1A相连,另一头为 9 针DB插座与计算机相连即可,如图 5.13 和图 5.14 所示。

图 5.13 数据线与短信猫连接

图 5.14 数据线与计算机串口相连接

连接电源:将电源线的圆形插孔插入设备的电源插孔,最后将电源插座插到电源插线板上即可,如图 5.15 所示。

通过指示灯检查连接状态:正确连接指示灯为红灯间歇闪烁,如图 5.16 所示。

图 5.15 将电源线插到短信猫的电源插孔

图 5.16 通过指示灯检查连接状态

当短信猫安装完毕之后,接下来便是通过程序操作短信猫,在购买短信猫时会附带有SDK的开发包,其中提供了操作短信猫的函数(封装在BestMail.jar库中)。

5.2.2 收发短信

在本模块中使用短信猫设备实现短信的收发业务,短信猫需要经过设置、连接等初始化工作,然后才能调用发送和接收短信的方法。本节将介绍从短信猫初始化及连接到收发短信的工作流程。

1.设置短信猫

在利用短信猫发送短信时,首先需要对短信猫进行设置:包括端口号、波特率、通信许可证的序列号等注册信息和连接硬件,利用厂商提供的API,获取短信发送和接收所需要的相关信息。

这些API都封装在BestMail.jar库文件中,该文件可以由厂家短信猫驱动光盘中获得,在设置短信猫时涉及如下操作。

1)获取短信猫注册需要的信息

获取短信猫的注册信息可以通过GSMModemGetSnInfoNew()方法实现,获取的注册标识码可以从厂商获取授权码。语法格式如下:

实践真知
说明

device是String类型,表示通信端口,为null 时系统会自动检测。baudrate实知是String类型,表示通信波特率,为null 时系统会自动检测。返回值是String类型,表示短信标识码,将此号码发送给厂商即可获得正式的授权码。

在调用该方法时需要指定端口号和波特率参数,关键代码如下:

2)初始化GSM MODEM设备

在操作短信猫收发短信之前,必须调用GSMModemInitNew()方法初始化硬件设备,语法格式如下:

该方法的参数说明如表 5.1 所示。

表5.1 GSMModemInitNew方法的参数说明

续表

使用该方法初始化短信猫设备的关键代码如下:

2.利用短信猫发送短信

在设置好短信猫以后,就可以发送短信了。在短信发送时,它能够对输入或选择的电话号码发送短信,系统首先连接硬件“短信猫”,然后在模块中通过程序控制短信的发送。

在短信收发模块中主要用到的技术是厂商提供的BestMail.jar库中的GSMModemSMSsend()方法,该方法用于将输入的短信通过短信猫发送到指定的接收号码中,其中该方法的参数及说明如下:

其参数说明如表 5.2 所示。

表5.2 GSMModemSMSsend方法的参数说明

使用短信猫API发送短信的关键代码如下:

3.短信猫接收短信

使用短信猫除了可以发送短信外,还可以接收短信。在接收短信时,首先要对硬件短信猫进行连接,连接成功之后判断短信猫中的SIM卡中是否有短信,如果有短信,则从SIM卡中将短信读取出来保存在数据库中,然后通过数据控件将短信内容显示出来。

在短信接收模块中主要用到的技术是厂商提供的BestMail.jar库中的GSMModemSMSReadAll()方法,该方法用于接收短信猫中SIM卡里的短信内容,方法的语法形式如下:

其中,selectOper参数为整型,表示对读取的短信息处理,0 表示删除,1 表示不处理,其返回值为短消息,是一个字符串型数组,返回的短信内容(即数组的每个元素)格式为:

使用短信猫读取短信数据的关键代码如下:

5.2.3 选项卡的关联

主窗体中包含两个选项卡组件,它们分别位于主窗体左侧和写短信面板的下方。主窗体左侧的选项卡包括“短信管理”、“联系人管理”和“短语管理”,主要用于管理面板的切换。而写短信界面下方的选项卡包括“联系人”和“短语”,主要用于切换选择联系人和选择常用短语的切换。这两个选项卡如图 5.17 所示。

图 5.17 主窗体左侧的选项卡、写短信界面下方的选项卡效果图

这两个选项卡中左侧选项卡的“联系人管理”、“短语管理”应该是和右侧选项卡“联系人”、“短语”绑定的,即单击其中一个选项卡的任何一个选项,例如“联系人管理”,另一个选项卡应该自动选择相应的选项,例如“联系人”,反之亦然。这样在左侧的“联系人管理”或“短语管理”选择相应的联系人分类或短语分类,在写短信界面会显示相应组别的联系人和短语信息。这样会为用户发送短信提供方便。

实现原理:当用户单击主窗体左侧的管理选项卡时,判断选择的是哪一个选项,并控制另一个界面的选项卡,选择相应的选项,关键代码如下:

5.2.4 卡片布局

主窗体右侧的界面使用了Java Swing的CardLayout卡片布局,并叠加布局“SendNotePanel”发送短信面板和“NotePanel”短信面板。CardLayout布局管理器,使它们像卡片一样叠放在一起,而且为每个卡片起了不同的名字,当需要使用哪个面板时就将它置前并显示在所有卡片的最上层。使用卡片布局可以灵活运用界面空间,实现最理想的布局。卡片布局就像一个名片盒一样,将所有组件当做一个卡片处理,同一时间只能显示一张卡片(或名片),如图 5.18 所示。

图 5.18 卡片布局管理器示意图

卡片布局管理器调用show方法指定显示组件的名称,并使该组件显示在所有卡片的最顶层。

1.卡片布局管理器的构造方法

CardLayout类,也就是卡片布局管理器包含两个构造方法:

1)CardLayout()

创建一个间距大小为 0 的新卡片布局,其语法形式如下:

2)CardLayout(int hgap, int vgap)

创建一个具有指定水平间距和垂直间距的新卡片布局。水平间距置于左右边缘,垂直间距置于上下边缘。

其语法形式如下:

❑ hgap:水平间距。

❑ vgap:垂直间距。

2.CardLayout类的常用方法

1)first()方法

该方法用于翻转到容器的第一张卡片,其语法形式如下:

parent:必要的参数,由卡片布局管理器管理的父容器。

2)previous ()方法

翻转到指定容器的前一张卡片。如果当前的可见卡片是第一个,则此方法翻转到布局的最后一张卡片,其语法形式如下:

parent:必要的参数,由卡片布局管理器管理的父容器。

3)last ()方法

该方法用于翻转到容器的最后一张卡片,其语法形式如下:

parent:必要的参数,由卡片布局管理器管理的父容器。

4)addLayoutComponent()方法

将指定的组件添加到此卡片布局的内部名称表。通过调用 show 方法,应用程序可以显示具有指定名称的组件,其语法形式如下:

❑ comp:要添加的组件。

❑ constraints:标识布局中特定卡片的标记。

实践真知
说明

constraints 指定的对象必须是一个字符串。卡片布局将此字符串作为一个键实知—值对存储起来,该键—值对可用于对特定卡片的随机访问。

5)show ()方法

翻转到使用 addLayoutComponent ()方法添加到此布局的具有指定名称的组件,其语法形式如下:

❑ parent:必要的参数,由卡片布局管理器管理的父容器。

❑ name:组件在布局管理器中的名称。

例如,本模块中的“写短信”按钮的事件处理方法中,就调用了Show()方法显示发送短信面板,关键代码如下。

5.2.5 树控件的使用

在主窗体的左侧的选项卡控件中,“联系人”和“短语”选项面板中各自包含了一个树组件,Java的数组件由JTree类创建,它们可以灵活地显示联系人和短语信息,最重要的是使用数组件可以方便地显示各种信息的分类及子分类,选项卡的每个节点和子节点都是DefaultMutableTreeNode类的实例对象。该对象可以设置是否允许有子节点,从而判断选择的树节点是联系人和短语信息还是相关的分类(组别)。显示联系人信息的树组件界面如图 5.19 所示。

图 5.19 联系人管理界面的树组件

本模块通过自定义的initLxrTree()方法,从数据库中获取联系人信息,初始化了联系人管理面板的树组件,关键代码如下: wunZQgMpORieDe8A0F0ET0BvM7cvl9is0iTKHUkNajXsHc0s3QIS/r8iNUkQl1Rc

点击中间区域
呼出菜单
上一章
目录
下一章
×