短信猫
短信猫用于批量收/发短信或其它SIM卡服务。
短信猫与PC通过GSM无线网络交互。
交互过程可以分为三个层次:
1.物理层,即无线网络通信。
2.指令层,短信猫支持M35AT指令。
3.应用层,APP需要与短信猫交互的内容。
在做二次开发过程中,真正需要关心的只是应用层的内容。为了避免重复开始,关于物理层和指令层,可以直接使用现有的开源项目。而二次开发的代码只需要调用指令层的API即可。
一、搭环境
1、物理层开源项目Rxtx
这一层的主要工作是实现JAVA的串口通信。
开源项目Rxtx和Win32Com都能完成这样的功能。其中Win32Com只支持32位Windows,而Rxtx可以支持32位和64位的Windows和linux,因此本文选择了Rxtx。
步骤:
下载rxtxSerial.dll并复制到JAVA_HOME\bin目录下
下载RXTXcomm.jar,并导入到项目中
2、指令层开源项目Smslib
这一层的主要工作是把用户可能会用到的操作(例如连接猫池、发短信、收短信等)封装成猫所支持的AT指令,通过rxtx发出去。
步骤:
从smslib官网下载SMSLib (Java - jar file) v3.5.4
解压,把jar包导入到项目中
二、编程
满满的都是套路。
0.检测可用的端口
public void findComm()
{
static int bauds[] = { 9600, 19200, 57600, 115200 };
Enumeration<CommPortIdentifier> portList = CommPortIdentifier
. getPortIdentifiers();
System. out.println( "短信设备端口连接测试..." );
//connect("COM13", 115200);
while (portList.hasMoreElements()) {
CommPortIdentifier portId = (CommPortIdentifier) portList
.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL ) {
System. out.println( "找到串口:" + portId.getName());
for ( int i = 0; i < bauds. length; i++) {
System. out.print( " Trying at " + bauds [i] + "..." );
SerialPort serialPort = null;
try {
InputStream inStream;
OutputStream outStream;
int c;
String response;
serialPort =