栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

记AT命令控制短信猫发短信(中英文)加打电话java

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

记AT命令控制短信猫发短信(中英文)加打电话java

写在前面:全局变量

private static char symbol1 = 13;
private static char symbol4 = 'n';
拨打电话方法:
public static void sendTel(String toUserNo, Alarm alarm) throws Exception {
//AT命令 ATD + 电话号码
        String msg = "ATD" + toUserNo + ";rn";
        WkSms.run(msg);
    }
发送英文短信:
//英文短信方法让我注释掉了,因为用了中文短信方法
//    public static void sendMsg(String toUserNo, Alarm alarm) throws Exception {
//        char symbol2 = 34;
        ctrl ~z 发送指令
//        char symbol3 = 26;
//        String desc = "Your Device Is Alarming ,DeviceNo:" + alarm.getDeviceNo();
//        if(alarm.getDateEnd() != null){
//            desc += ",Service expiration time :" + alarm.getDateEnd();
//        }
        Sms.sendmsn(toUserNo,Desc);
        String msg = "phone=" + toUserNo + ",sms_unicode=" +
                "您的设备:" + alarm.getDeviceNo() + "正在报警。" + alarm.getDescription() + ";rn";
//        String atCommand = "AT+CMGF=" + 1 + String.valueOf(symbol1);
//        WkSms.run(atCommand);
//        try {
//            atCommand = "AT+CSMP=17,169,0,08" + String.valueOf(symbol1);
//            WkSms.run(atCommand);
//                atCommand = "AT+CSCS?" + String.valueOf(symbol1);
//            WkSms.run(atCommand);
//                atCommand = "AT+CSCS="GSM"" + String.valueOf(symbol1)+String.valueOf(symbol4);
//            WkSms.run(atCommand);
//                atCommand = "AT+CMGS=" + toUserNo
//                        + symbol1 +"," + desc;
                strReturn = myport.sendAT(atCommand);
//                atCommand = "AT+CMGS=" + """ + toUserNo + """ + String.valueOf(symbol1);
//            WkSms.run(atCommand);
//                atCommand = StringUtil.encodeHex(desc.trim())
//                        + String.valueOf(symbol3) + String.valueOf(symbol1);
//            WkSms.run(atCommand);
//        } catch (Exception ex) {
//            System.out.println("111111111");
//            System.out.println(ex.getMessage());
//            ex.printStackTrace();
//            System.out.println("短信发送失败...");
//        }
//    }
发送中文短信方法:

(网上找了好多例子,但都不好用包括PUA模板、手机号奇偶位对调、短信内容编码处理等。搞了一天搞出一个可以实现的,手机号和短信内容都直接用unicode编码,代码如下)

public static void sendMsg(String toUserNo, Alarm alarm,String content) throws Exception {
    char symbol2 = 34;
//        ctrl ~z 发送指令
    char symbol3 = 26;
//    String desc = "5f53524d8bbe59076e295ea68fc79ad8ff01";
    String desc;
    if(alarm.getDateEnd() != null){
        desc = gbEncoding(alarm.getDescription());
    }else {
        desc = gbEncoding(content);
    }

//        Sms.sendmsn(toUserNo,Desc);
//        String msg = "phone=" + toUserNo + ",sms_unicode=" +
//                "您的设备:" + alarm.getDeviceNo() + "正在报警。" + alarm.getDescription() + ";rn";
    String atCommand = "AT+CMGF=" + 1 + String.valueOf(symbol1);
    WkSms.run(atCommand);
    try {
        atCommand = "AT+CSMP=17,169,0,08" + String.valueOf(symbol1);
        WkSms.run(atCommand);
        atCommand = "AT+CSCS?" + String.valueOf(symbol1);
        WkSms.run(atCommand);
        atCommand = "AT+CSCS="UCS2"" + String.valueOf(symbol1)+String.valueOf(symbol4);
        WkSms.run(atCommand);
        atCommand = "AT+CMGS=" + """ + gbEncoding(toUserNo) + """ + String.valueOf(symbol1);
        WkSms.run(atCommand);
        atCommand = desc +  String.valueOf(symbol3) + String.valueOf(symbol1);;
        WkSms.run(atCommand);
    } catch (Exception ex) {
        System.out.println("111111111");
        System.out.println(ex.getMessage());
        ex.printStackTrace();
        System.out.println("短信发送失败...");
    }
}

其中:WkSms.run(atCommand);这是根据短信猫的连接方式写的简单的tcp线程,后续根据自己需求进行连接发布指令即可(tcp,串口,webcoket等等)。若有需要可以评论区找我要。
gbEncoding()方法是转unicode编码的方法,这个比较简单唯一要注意的是,转成unicode之后不要带/u

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1013264.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号