短信 猫开发模块使用了rxtx 和 smslib 这两种开源代码
Rxtx是用于comm端口调用
Smslib是在rxtx的基础上,调用短信_猫,使用AT指令来进行短信的发送接收等操作。
注意:
每次系统重启或者插拔短信_猫后,都要设置拥有者
chown dgsun /dev/ttyUSB0 (root 权限运行,dgsun是用户)
设置完后,使用minicom 看看该用户是否有权限使用该端口
1,配置RXTX
配置主要配置两个文件
一个是 Windows的dll文件<!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter"/> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"/> <v:f eqn="sum @0 1 0"/> <v:f eqn="sum 0 0 @1"/> <v:f eqn="prod @2 1 2"/> <v:f eqn="prod @3 21600 pixelWidth"/> <v:f eqn="prod @3 21600 pixelHeight"/> <v:f eqn="sum @0 0 1"/> <v:f eqn="prod @6 1 2"/> <v:f eqn="prod @7 21600 pixelWidth"/> <v:f eqn="sum @8 21600 0"/> <v:f eqn="prod @7 21600 pixelHeight"/> <v:f eqn="sum @10 21600 0"/> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/> <o:lock v:ext="edit" aspectratio="t"/> </v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:79.5pt; height:36.75pt'> <v:imagedata src="file:///C:\Users\chenmj\AppData\Local\Temp\msohtmlclip1\01\clip_image001.wmz" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]--> linux下的.so <!--[if gte vml 1]><v:shape id="_x0000_i1026" type="#_x0000_t75" style='width:90.75pt;height:36.75pt'> <v:imagedata src="file:///C:\Users\chenmj\AppData\Local\Temp\msohtmlclip1\01\clip_image003.wmz" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
另一个是 <!--[if gte vml 1]><v:shape id="_x0000_i1027" type="#_x0000_t75" style='width:68.25pt;height:36.75pt'> <v:imagedata src="file:///C:\Users\chenmj\AppData\Local\Temp\msohtmlclip1\01\clip_image005.wmz" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
1.1 windows
rxtx-2.2pre2-bins\win32目录下的 rxtxSerial.dll
将rxtxSerial.dll复制到 JAVA_HOME\bin目录下
将RXTXcomm.jar复制到 JAVA_HOME\jre\lib\ext目录下
如果使用myeclipse开发则需要修改myeclipse使用的jdk。
Myeclipse自带一个jdk,要改为JAVA_HOME下的jdk
<!--[if gte vml 1]><v:shape id="_x0000_i1028" type="#_x0000_t75" style='width:234pt;height:180.75pt'> <v:imagedata src="file:///C:\Users\chenmj\AppData\Local\Temp\msohtmlclip1\01\clip_image007.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
1.2 linux
由于使用的是centos 64位系统,所以
复制rxtx-2.2pre2-bins\x86_64-unknown-linux-gnu目录下的librxtxSerial.so
将librxtxSerial.so复制到 JAVA_HOME/jre/lib/amd64中
将RXTXcomm.jar复制到 JAVA_HOME/jre/lib/ext目录下
这个目录有可能各不相同
http://blog.csdn.net/iamfafa/article/details/6340057
如果找不到librxtxSerial.so则会报错
java.lang.UnsatisfiedLinkError: no XXX in java.library.path
这个时候可以写一段代码来查看java.library.path的位置
System.out.println( System.getProperty("java.library.path"));
在打印出的位置中加入librxtxSerial.so即可
2 配置SMSLIB
将smslib目录下的jar包加入到项目中
<!--[if gte vml 1]><v:shape id="_x0000_i1029" type="#_x0000_t75" style='width:117.75pt;height:69.75pt'> <v:imagedata src="file:///C:\Users\chenmj\AppData\Local\Temp\msohtmlclip1\01\clip_image009.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
3 发送短信
接下来就是在代码中使用smslib调用短信 猫发送短信
代码可见src目录下 SmsMain.java 和 sms.properties
sms.properties配置了短信 猫的参数。 在windows下和在linux下是不同的,
我测试的时候windows下使用的是com5端口,这个可以再设备管理器中查看到;
在linux下使用的是 /dev/ttyUSB0,这个我是使用minicom一个一个在/dev/下找的
<!--[if gte vml 1]><v:shape id="_x0000_i1030" type="#_x0000_t75" style='width:189pt;height:132.75pt'> <v:imagedata src="file:///C:\Users\chenmj\AppData\Local\Temp\msohtmlclip1\01\clip_image011.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
<!--[if gte vml 1]><v:shape id="_x0000_i1031" type="#_x0000_t75" style='width:304.5pt;height:141.75pt'> <v:imagedata src="file:///C:\Users\chenmj\AppData\Local\Temp\msohtmlclip1\01\clip_image013.png" o:title=""/> </v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
很奇怪,我使用的是wavecom模块的短信 猫,在插入移动卡的时候,manufacutrer设置了wavecom ,发送短信一切正常。当我换了一张联通的gsm卡的时候,就无法发短信了,只有不填,调用默认驱动才可以发短信。所以该处都默认为不填。
需要发短信的时候只要调用 SmsMain的sendSms方法
static boolean sendSms(String mobile, String content)
4 附录
Minicom使用
首先 minicom –s 对minicom 进行配置,相关配置可以再网上查找介绍
主要是修改 Serial port setup, 修改完后save setup as dfl进行保存。
Exit 后,如果配置短信 猫正确的话,就可以进入到 指令行了
输入AT,回车,页面打印OK
如果ATD133*******; 就可以对该电话号码进行拨号。 注意结尾的分号不可少。
相关推荐
网上很多资料都是使用的smslib的jar包来发送短信,但是这种方式只支持32的jdk,而我的系统使用的是linux的64位环境,所以最后采用了用RXTX串口通讯工具直接向短信猫发送AT指令的方式实现。 1. smslib.jar收发短信 ...
WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...
WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...
5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...
WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...
5个目标文件,演示Address EJB的实现,创建一个EJB测试客户端,得到名字上下文,查询jndi名,通过强制转型得到Home接口,getInitialContext()函数返回一个经过初始化的上下文,用client的getHome()函数调用Home接口...
WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...
WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...
WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...
WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...
WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...
WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...
WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...
WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...
WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...
WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 ...