rxtx串口通信实现smslib短信接口

短信 猫开发模块使用了rxtx smslib 这两种开源代码

 

Rxtx是用于comm端口调用

Smslib是在rxtx的基础上,调用短信_猫,使用AT指令来进行短信的发送接收等操作。

 

注意:

每次系统重启或者插拔短信_猫后,都要设置拥有者

chown dgsun /dev/ttyUSB0   (root 权限运行,dgsun是用户)

 

设置完后,使用minicom 看看该用户是否有权限使用该端口

 

1,配置RXTX

配置主要配置两个文件

一个是 Windowsdll文件<!--[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卡的时候,就无法发短信了,只有不填,调用默认驱动才可以发短信。所以该处都默认为不填。

 

需要发短信的时候只要调用 SmsMainsendSms方法

static boolean sendSms(String mobile, String content)

 

 

4 附录

Minicom使用

首先 minicom –s minicom 进行配置,相关配置可以再网上查找介绍

主要是修改 Serial port setup, 修改完后save setup as dfl进行保存。

Exit 后,如果配置短信 猫正确的话,就可以进入到 指令行了

输入AT,回车,页面打印OK

如果ATD133*******; 就可以对该电话号码进行拨号。 注意结尾的分号不可少。

 

 

 

猜你喜欢

转载自minjiechenjava.iteye.com/blog/2205771