fedora25+java1.8+idea下使用短信猫发送短信

一、背景
    因项目需要,需实现在linux+java环境下实现短信的自动发送,自然而然的就想到了短信猫。从淘宝170元购买某不知名品牌的GSM短信猫(开发包挺全的,就是没有jar包,有dll)。首先在windows下通过串口调试助手,实现了短信的发送,确定产品可用。
二、想法
    因原项目在Centos下部署,所以在本人笔记本下先做测试开发(fedora25,64bit),经百度,发现有现成的jar包可以供调用->smslib(感谢无私的开源者)。smslib主要实现AT指令发送功能。此时,还需要一个串口通信的jar包,有2个选择:1是rxtx,2是javacomm。据说rxtx更为简单,所以选用了rxtx。架构是:应用程序调用smslib,然后smslib调用rxtx实现全部功能。
三、准备
    1、首先将短信猫连接到我的linux系统,linux中类似与windows的超级终端工具是minicom,所以yum install 之。
    2、查询连接的设备,我使用的是USB转串口线,所以设备名称肯定是/dev/ttyUSB*,如果电脑有串口,那么应该是/dev/ttyS* ,为了测试到底是ttyUSB几,我使用minicom逐个测试(其实我的/dev也只有一个ttyUSB0,可以肯定是它)。 minicom 进去,设置频率等等即进入到命令界面,输入AT命令:AT+CPOWD=1 可以看到设备关机重启,证明设备完好,且已经连接到系统。
    3、接下来就比较坑了,安装rxtx与smslib。首先rxtx的maven依赖是:

<dependency>
    <groupId>org.bidib.jbidib.org.qbang.rxtx</groupId>
    <artifactId>rxtxcomm</artifactId>
    <version>2.2</version>
</dependency>

可以直接下载到,但是smslib非常坑,使用以下依赖居然直接下载不到:

<dependency>
   <groupId>org.smslib</groupId>
   <artifactId>smslib</artifactId>
   <version>3.5.2</version>
</dependency>

没办法,只好直接下载smslib的jar包,然后手动添加到maven的本地仓库:

mvn install:install-file -Dfile=smslib.jar -DgroupId=org.smslib -DartifactId=smslib -Dversion=3.5.2 -Dpackaging=jar

引用后发现intellij idea中该包总是用红色下划线标红,csdn给出的方法是:先在pom中删除maven依赖,然后再后退一步恢复,然后reimport maven,这个方法居然奏效了,也是醉了。
4、copy文件:

将librxtxSerial.so放到  /usr/java/jdk1.8.0_121/jre/lib/amd64/下(因我的是64bit系统)
将RXTXcomm.jar复制到 /usr/java/jdk1.8.0_121/jre/lib/ext/下

4、激动跑了一下测试案例:当然失败了,报错无法创建lockfile,官方给出的解决方法是:将当前用户(例如我的是syb)添加到lock用户组和uucp用户组中,但是发现我的计算机中没有uucp用户组,而只有lock用户组,所以添加了进去。可以通过 vi /etc/group 查看到 ,如果有一条是:

lock:x:54:syb

就证明添加成功了,重启电脑。发现顶个卵用,还是报错。所以直接更改了/run/lock的权限,o+r,o+w。发现不报uucp×××lockfileXXXplease read INSTALLxxx的错误了。
5、跑了一下测试案例,依然报错,大概看了一下,错误是关于librxtxSerial.so的,所以想到大概是我的librxtxSerial.so出错了。坑啊,网上给出的案例里,只有一个librxtxSerial.so文件,但是不知从哪里(大概是csdn里)我居然又下载到了一个librxtxSerial64.so。把这个文件改名为librxtxSerial.so(否则会报找不到错误),copy到原位置,案例居然跑通了。。。。。librxtxSerial.so看来也是区分32bit和64bit的,一定要下载对。

猜你喜欢

转载自blog.csdn.net/shiyibodec/article/details/73650009
今日推荐