使用smslib,可以简化短信收发程序的实现。而且为你节省很多学习和测试成本。在使用smslib发送中文短信息中做了简单的短信发送。
以下总结了部分主要smslib api的用法及在项目中使用的设想。
发送短信
smslib有两种发送短信的方式:
- 同步线程阻塞,等待发送完毕后继续;
- 异步发送短信,短信通过api存放到smslib的内部队列中。
在正式项目中,我考虑还是用第一种,同步的方式,由自己来解决线程等待的问题。
基本思路是,在同步方式基础上,再封装一层自己的异步发送api。这样调用者还是异步发送短信,当然是使用我定义的api。这个异步层,也不打算自己实现,队列使用activemq,设置为持久队列,增加可靠性。
为什么不用smslib自带的异步方式和队列:
Please note that SMSLib does not implement any kind of percistency. If you have queued up message and SMSLib breaks or terminates, the queues are gone!
日志引用
重新安装svn+apache以后,发现一个问题,比如java源代码,现在是通过浏览器下载,而不是直接在浏览器中展示了。
以前是怎么做的呢?想不起来了。文档啊文档,很重要的。现在重新想办法吧。
最简单的办法:apache强制mime类型
其实最简单的办法,是借助apache 核心模块的指令ForceType,见:
可以强制配置mime类型,比如:
<Location /svn>
…
ForceType text/plain
</Location>
这样就可以在浏览器看源代码文本了,但是也有副作用,比如二进制文件怎么办,比如html页面,应该在浏览器中展示而不是显示代码。
首先说一下邮箱。
其实从去年下半年开始,我已经开始有意识的使用qq邮箱了,确实很好用。原因是担心gmail有一天会出现问题。
最近我已将默认邮箱改为qq的。另外,也在开始尝试使用139邮箱,虽然功能比较一般,但因为是移动经营的,应该很稳定,139邮箱是我的备用邮箱。
但是我还有离不开gmail的地方,主要是nexus one在使用gmail,推送邮件,挺方便的。
再说google搜索引擎,其实这次转移到香港的主要是搜索业务,google.com.hk,目前还可以正常访问。为了防止哪天无法使用google搜索引擎,需要找个备选的。因为主要是技术方面的搜索,因此baidu被pass掉了,baidu搜索的国外技术文档还是少,相比google。而且排名也有问题。
我最近将chrome浏览器的默认搜索引擎改为bing,这样在地址栏输入关键字,将会使用bing搜索。试用一段时间再说。
今天手写一些jdbc代码,基于sqlite的。为了省事儿,试了一下使用可更新游标,结果异常。
是意料之中的事情。引发异常的代码:
Statement statement=connection.createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_UPDATABLE);
本来想自己写程序做at指令调用,实现发送中文短信,结果发现这个类库:
已经提供了发送PDU格式短信的支持了。而且提供服务器模式,可以通过http方式调用收发短信。
发送程序来自smslib的分发包。SendMessage.java,稍作改动,以适应我手中的wavecom短信猫。
Service srv;
OutboundMessage msg;
srv = new Service();
SerialModemGateway gateway = new SerialModemGateway("modem.com5",
"COM5", 115200, "WAVECOM", "–");
gateway.setInbound(true);
gateway.setOutbound(true);
gateway.setSimPin("0000");
srv.addGateway(gateway);
srv.startService();msg = new OutboundMessage("13801001000", "中文测试。");
msg.setEncoding(MessageEncodings.ENCUCS2);
srv.sendMessage(msg);
System.out.println(msg);
日志引用
见:
有时间试试。
支持windows 64位,而且在vista sp1下测试通过,估计应该可以运行在win 7 64位系统上。
官方编译的本地库不支持win7 64位系统,见rxtx分发的动态链接库不支持64位系统。
java编写串口程序,需要java的comm包,在:
当前最新版本是3.0update1。这个版本只支持linux和solaris,2.0.3版本是只支持windows。
为了能用一套api跑多个平台,选择了RxTx,一个第三方的免费API,支持各个主要平台。但是也有缺点,rxtx分发的动态链接库不支持64位系统。就先用它吧。
网站在:
这个网站不是很稳定,昨天怎么也上不去,还以为被墙了呢。
下载它的最新版本。以下是在windows xp下使用的情况。复制rxtxSerial.dll文件到jre/bin目录下。如果是安装了JDK,建议jdk的bin目录下和jre的bin目录下各放置一份,省心。因为如果用eclipse开发的话,默认不使用jdk,是使用jre的。另外一个RXTXcomm.jar包,就直接引到项目里面就可以了,建议不要按照官方的做法,复制到jre/lib或者jre/lib/ext目录下,会引起eclipse警告或者报错的。
如果使用maven,也可以:
<dependency>
<groupId>org.rxtx</groupId>
<artifactId>rxtx</artifactId>
<version>2.1.7</version>
</dependency>
在windows xp中,不需要使用使用短信猫和AT指令集提到的accessport工具,因为有自带的工具:超级终端,在附件中:
和accessport的区别就是,必须选对比特率,否则会打不出字来,或者打出的乱码。accessport可以自动扫描合适的比特率。wavecom短信猫的比特率是115200。
运行的效果类似:
rxtx的动态连接库不支持64位系统,还不知道是否在64位linux下是否也有问题,或者linux下可以自己编译本地库。
测试了win7 64位系统下:
短信猫是wavecome的,通过AT指令集的命令:
AT+CGMI
查看到短信猫的信息:
WAVECOM MODEM
查看软件版本命令:
AT+CGMR
看到的信息
640d09gg.Q2406B 1273604 091103 18:26
要执行at指令集,需要做以下几步:
- 确保短信猫已经连接到系统,我的是windows7 64位系统,以前担心不支持,是多余的,我手里的短信猫是USB接口的,通过USB模拟COM口,可以在系统的设备管理器中看到:
- 安装串口登录的工具,我这里安装的是accessport,其实putty就可以。下载accessport地址:http://dl.pconline.com.cn/html_2/1/135/id=4643&pn=0.html,安装后选择串口号就可以连接上了,比如我这里是com2,连接后输入AT,回车(必须有这个),然后按ctrl+回车(表示发送到短信猫),看到OK字样就说明连接和通信正常了。