windows短信猫二次开发

本文介绍了如何进行短信猫的二次开发,包括利用Rxtx作为物理层通信,Smslib作为指令层封装,以及在Windows环境下进行连接猫池、发送和接收短信的编程实践。同时,文章分享了在开发过程中遇到的如设备无响应、flush和write问题及其解决方案。
摘要由CSDN通过智能技术生成

短信猫

短信猫用于批量收/发短信或其它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 = 
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值