Java smslib包开发

news/2024/11/6 23:25:19/

上一篇文章我详细介绍RXTXcomm的安装方法和简单代码,如果小伙伴涉及到需要使用手机短信模块完成短信收发需求的话,可以使用到smslib进行开发。

在这里插入图片描述
首先还是同样的,将整个smslib包源码导入项目,并且将它所需依赖一起进行导入

导入完成之后,我们就可以对smslib包进行二次开发了
下面我提供一段使用smslib包发送短信的代码

import org.smslib.*;
import org.smslib.modem.SerialModemGateway;public class SMSSender {public static void main(String[] args) {// Configure the modem gatewaySerialModemGateway gateway = new SerialModemGateway("modem", "COM1", 9600, "", "");gateway.setInbound(true);gateway.setOutbound(true);try {// Initialize the SMSLib libraryService.getInstance().addGateway(gateway);Service.getInstance().startService();// Create the outbound messageOutboundMessage message = new OutboundMessage("recipientPhoneNumber", "你好世界");message.setEncoding(Message.MessageEncodings.ENCUCS2); // 设置编码格式为Unicode// Send the messageService.getInstance().sendMessage(message);// Clean up and stop the serviceService.getInstance().stopService();} catch (Exception ex) {ex.printStackTrace();}}
}

上面代码中,如果需要使用到手机通讯模块发送中文,记得要加上

message.setEncoding(Message.MessageEncodings.ENCUCS2);

这样一段代码才能正确设置编码格式

其次是这段代码

SerialModemGateway gateway = new SerialModemGateway("modem", "COM1", 9600, "", "");

在这里插入图片描述
对于这个构造方法,我们需要传入的是gatewayID,smslib里面有一个任务队列,这个id需要不重复,其次是COM口和波特率,最后两项分别是设备厂商和型号,比如传入Nokia 和6130即可以 Nokia 6130设备的AT命令操作设备。一般来说这两项传空即可。
在这里插入图片描述
可以看到,源码中如果传的是空串,那么它会使用通用的athandler

可以看到,smslib包封装了一个同样athandler,同时,有些at命令稍有不同的设备也的方法进行了重写
在这里插入图片描述
在这里插入图片描述
从这里,我们可以得到什么?
拿到一个手机通讯模块,如果他们at指令是通用的,那么new SerialModemGateway 的时候,后两项为空就行,如果比如拿到了一个华为设备,只需要在构造对象的时候传入具体的厂商和型号就行,它会在AATHandler load的时候去反射拿到具体的指令细节。同时,如果我们手上的设备既有一些跟常见at命令不一样的设备,然后smslib包又没有进行扩展,我们便可以根据上面的ATHandler_Hauwei一样,自己继承Athandler,自己进行扩展

上面说完了发送短信,接下来我们还需要的是实现收短信的功能

    /*** Java的smslib包下的IInboundMessageNotification接口用于定义回调方法,当短信网关接收到新的短信消息时,会调用这个方法。这个接口被实现的类需要在接收到新消息时被通知。*/public class InboundNotification implements IInboundMessageNotification {public void process(AGateway gateway, MessageTypes msgType, InboundMessage msg) {if (msgType == MessageTypes.INBOUND) {System.out.println(">>> New Inbound message detected from Gateway: " + gateway.getGatewayId());} else if (msgType == MessageTypes.STATUSREPORT) {System.out.println(">>> New Inbound Status Report message detected from Gateway: " + gateway.getGatewayId());}System.out.println("InboundNotification里面的gettext---------"+msg.getText());System.out.println(msg);try {// Uncomment following line if you wish to delete the message upon arrival.Service.getInstance().deleteMessage(msg);} catch (Exception e) {System.out.println("Oops!!! Something gone bad...");e.printStackTrace();}}}

只需要实现IInboundMessageNotification 里面的process方法即可,
然后从InboundMessage里面即可拿到短信的各项信息,然后进行业务处理
在这里插入图片描述

最后:smslib并没有编写手机通讯模块使用gprs功能发送数据的功能,我在它的基础进行了二次开发实现了网络通讯的功能,如果有需要的小伙伴可以私信我,我将无偿提供我的二开版本源码
在这里插入图片描述


http://www.ppmy.cn/news/1059998.html

相关文章

第六章,创作文章

6.1添加创作页面 <template><div class="blog-container"><div class="blog-pages"><div class="col-md-12 panel"><div class="panel-body"><h2 class="text-center">创作文章&l…

Linux需要掌握哪些?

Linux运维工程师的基本工作之一是搭建相关编程语言的运行环境&#xff0c;使程序能够高效、稳定、安全地在服务器上运行。优秀的Linux运维工程师不但需要拥有架设服务器集群的能力&#xff0c;还需要拥有使用不同的编程语言开发常用的自动化运维工具或平台的能力&#xff0c;从…

[CVPR 2023]PyramidFlow-训练并推理-附bug调试

CVPR2023-PyramidFlow-zero shot异常检测网络 代码调试记录 一.论文以及开源代码二.前期代码准备三.环境配置四.bug调试num_samples should be a positive integer value, but got num_samples0AttributeError: Cant pickle local object fix_randseed.<locals>.seed_wor…

Java--abstract class 与 interface的区别

在Java语言中&#xff0c;abstract class和interface是支持抽象类定义的两种机制。正是由于这两种机制的存在&#xff0c;才赋予了Java强大的面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性&#xff0c;甚至可以相互替换&#xff0c;…

ROS2 学习(五)接口,动作

接口 通信双方统一规定好接口。比如图像 img&#xff0c;控制运动的线速度和角速度…… 我们也不用了解具体实现&#xff0c;基本就是了解接口会去用就行。 $ ros2 interface list # 展示所有 interfaces $ ros2 interface show ... # 显示具体一个 interface $ ros2 package…

从头开始:将新项目上传至Git仓库的简易指南

无论您是一个经验丰富的开发者还是一个刚刚起步的新手&#xff0c;使用Git来管理您的项目是一个明智的选择。Git是一个强大的版本控制系统&#xff0c;它可以帮助您跟踪项目的变化、合并代码以及与团队成员协作。在本文中&#xff0c;我们将为您提供一步步的指南&#xff0c;教…

解压好玩!轻松休闲,群友直呼好bt!

先声明下这里的bt是不同的意思&#xff0c;大家不要理解错了哦&#xff01; 生活中的压力常常会使人们感到身心俱疲&#xff0c;需要一种方式来减轻这种压力并恢复内心的宁静。休闲游戏以其简单、轻松的玩法&#xff0c;为人们提供了一个远离现实压力的空间。在游戏中&#xff…

slowhttptest

压力测试工具 kail-linux安装 apt-get install slowhttptest slowhttptest -c 1000 -H -g -o my_header_stats -i 10 -r 200 -t GET -u "http://192.168.3.239:8889" -x 24 -p 3 SlowRead模式 slowhttptest -c 8000 -X -r 200 -w 512 -y 1024 -n 5 -z 32 -k 3 -u …