短信猫二次开发(java版)

短信猫二次开发(java版)

短信猫

  • 短信猫用于批量收/发短信或其它SIM卡服务。
  • 短信猫与PC通过GSM无线网络交互。
  • 交互过程可以分为三个层次:
    1.物理层,即无线网络通信。
    2.指令层,短信猫支持M35AT指令。
    3.应用层,APP需要与短信猫交互的内容。

在做二次开发过程中,真正需要关心的只是应用层的内容。为了避免重复开始,关于物理层和指令层,可以直接使用现有的开源项目。而二次开发的代码只需要调用指令层的API即可。

环境

  • windows10 64bit
  • jdk1.8

准备

物理层开源项目Rxtx

  • 官网让我们去这里下载64位的:http://fizzed.com/oss/rxtx-for-java

  • 这里写图片描述

  • 在这里选择相应的版本下载即可

  • 在这里插入图片描述

  • 在这里插入图片描述

  • 将下载下来的rxtxSerial.dll复制到JAVA_HOME\bin目录下

  • 将下载下来的RXTXcomm.jar导入项目

指令层开源项目Smslib

  • 在这里插入图片描述

  • 将下载下来的smslib-3.5.0.jar导入项目即可

  • 同时由于项目依赖了log4j,需要下载或加入依赖,以下提供gradle的依赖(自己去网上找jar包然后导入项目也是可以的)

 compile('log4j:log4j:1.2.17')
  • 以下是从网络找的一段测试代码,亲测通过,实际肯定还要进行封装下
public class T {
    public static boolean sendSMS(String phone, String content) throws Exception {
        //获取短信配置的信息
        // ---------------创建串口设备,如果有多个,就创建多个--------------  
        // 1、连接网关的id(随意指定,不冲突即可) 
        // 2、com口名称,如COM1或/dev/ttyS1(根据实际情况修改)  
        // 3、串口波特率,如9600(根据实际情况修改,一般为115200)  
        // 4、开发商,一般为huawei和wavecom,可通过工具检测出来
        // 5、型号,可选,不清楚直接为空就好了 
        SerialModemGateway gateway = new SerialModemGateway("modem.com1", "COM1", 115200, "wavecom", "");

        gateway.setInbound(true); // 设置true,表示该网关可以接收短信
        gateway.setOutbound(true); // 设置true,表示该网关可以发送短信
        // -----------------创建发送短信的服务(它是单例的)----------------
        Service service = Service.getInstance();
        Service.getInstance().S.SERIAL_POLLING = true;
        try {
        // ---------------------- 将设备加到服务中----------------------
            service.addGateway(gateway);
        // ------------------------- 启动服务 -------------------------
            service.startService();
        // ------------------------- 发送短信 -------------------------  
            OutboundMessage msg = new OutboundMessage(phone, content);
            msg.setEncoding(Message.MessageEncodings.ENCUCS2);
            service.sendMessage(msg);
        // ------------------------- 关闭服务 -------------------------  
            service.stopService();
            service.removeGateway(gateway);
        } catch (Exception e) {
            e.printStackTrace();
            service.stopService();
            service.removeGateway(gateway);
            return false;
        }
        return true;
    }


    public static void main(String[] args) {
        try {
            sendSMS("15622770000", "dgshdgl第几个\nddd");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

资源

参考

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值