当前位置: 首页 > 工具软件 > jSMSEngine > 使用案例 >

使用jsmsengine开发短信息发送软件

马亮
2023-12-01

前些日子,做了一个短信事务平台的软件,现在把在开发心得写出来,与大家共享。jSMSEngine开源包可以利用GSM Modem或带有红外线、蓝牙、数据线的手机与电脑连通,收发短信。有了此功能,我们就可以做很多手机做不了的事情。比如保存重要的短信、短信群发、共享收发短信等。

话不多说,先到http://jsmsengine.sourceforge.net/下载开源包,笔者试过几个版本,感觉1_2_6-B1版本比较稳定。包括commjSMSEngine。将jsmsengine_1_2_6-B1解压,可以看到相关的jar包、源码、文档、例子以及一个简单的SMS服务器程序。

先来配置开发环境环境。

1.    复制comm.jarjSMSEngine.jar(JDKDIR)\lib\ext文件夹下,或把开发包添加到开发环境中。

2.    复制javax.comm.properties(JDKDIR)\jre\lib目录下。

3.    复制win32com.dll(JDKDIR)\jre\bin目录下。(以上红色这里很重要)

examples文件夹下,有个SendMessage.java的原文件,这是他自带发短信的例子,我们就从这里出发。

int status;//记录连接状态

CService srv = new CService("com1", 9600);//创建jSMSEngine服务,第一个参数是连接端口,第二个参数是连接速率

srv.initialize();//初始化jSMSEngine服务

srv.setCacheDir(".\\");//设备jSMSEngine服务的缓存

status = srv.connect();//连接设备 这设备可以是GSM Modem、带有红外线、蓝牙、数据线的手机

if (status == CService.ERR_OK){//如果连通状态OK

srv.setOperationMode(CService.MODE_PDU);//设置模式

srv.setSmscNumber("");

//System.out.println()方法是输入连接状态信息

COutgoingMessage msg = new COutgoingMessage("13500000000", "test");//创建发短信实例,第一个参数是接收的手机号码,第二个参数是短信内容。

if(srv.sendMessage(msg) == CService.ERR_OK)

System.out.println("Message Sent!");//如果发送成功,就输入Message Sent!

else

System.out.println("Message Failed!");//否则输入Message Failed!

srv.disconnect();//断开连接

}

else{

System.out.println("Connection to mobile failed, error: " + status);//如果连接状态失败,则输入Connection to mobile failed, error:和失败的参数,这就是常见的-11,或-22等信息

}

JCreator编译该文件,如果程序出现如下错误:

Error loading win32com: java.lang.UnsatisfiedLinkError: no win32com in java.library.path

Connection to mobile failed, error: -11

根据错误提示,引用的一个javawindowns下访问串口的必备动态链接库——win32com.dll,找到这个东东后把它拷贝到JDK安装目录下的bin文件夹下。

以上是发短信,examples文件夹下,还有个ReadMessages.java文件,是用来收短信的。与发短信相对比,只是以下语句不同,其它都是一样的。

if (srv.readMessages(msgList, CIncomingMessage.CLASS_ALL) ==CService. ERR_OK){//如连接OK,读取设置内的短信信息也OK

for (int i = 0; i < msgList.size(); i ++){

CIncomingMessage msg = (CIncomingMessage) msgList.get(i);//读取短信,并保存在msg对象里

System.out.println(msg);

}

}

msg对象里,还有几个方法,getOriginator()获取电话号码,getDate()获取发短信时间, getText()获取短信内容。

我们主要用的的就是发短信,收短信。只是这开发包是集成了超级终端的AT指令,只支持收发文本,不支持彩信。只要把这两个搞定啦,利用短信做什么,就由我们定啦,比如在程序里,解释短信内容启动或关闭某一程序,收取系统监控信息等。我们小组就利用这个开发包,开发了短信事务平台,功能简介:一台服务器连上GSM ModemN个客户端用TCP协议连上服务器,客户可以单/群收发短信,添加事务到数据库,按事务设定时间,自动发短信到客户手机,提示事务,还可以通过手机远程管理事务。

jSMSEngine1.2.6开发包,笔者在Nokia、三星、GSM ModemJDK 1.5JDK 1.5.0 ,在Eclipse5、测试通过。

 类似资料: