热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java通过串口使用短信猫发送短信(AT指令应用)

本文介绍了两种使用Java发送短信的方法:利用第三方平台的HTTP请求和通过硬件设备短信猫。重点讲解了如何通过Java代码配置和使用短信猫发送短信的过程,包括必要的编码转换、串口操作及短信发送的核心逻辑。

本文探讨了两种在Java应用程序中实现短信发送的技术方案,并深入解析了使用短信猫通过串口发送短信的具体实现。


1. 通过第三方平台的HTTP请求发送短信,这种方式的优点在于接口简洁、易于集成且支持高效并发发送。然而,这种方法依赖于第三方服务提供商,存在服务不稳定或停止运营的风险,可能导致原有代码失效。


2. 利用硬件设备——短信猫,如深圳宏电的H6221GPRS模块。这种方式虽然初期投入较高,但提供了稳定的短信发送解决方案,不受第三方平台影响。然而,它需要物理硬件的支持,单次发送成本与普通短信相同,且每台设备同一时间只能处理一条短信。


下面是使用短信猫发送短信的Java代码示例:


首先,需要准备相关库文件并导入项目中。


1. 字符编码转换工具类,用于处理短信内容的编码转换:


package sms;

/**
* 提供短信内容的字符编码转换功能
*/
public class StringUtil {
public static String analyseStr(String str) {...}
public static String Unicode2GBK(String str) {...}
public static String GBK2Unicode(String str) {...}
public static boolean isNeedConvert(char para) {...}
public static final String encodeHex(String str) {...}
}

2. 串口通信类,负责与短信猫的串口交互:


package sms;

import javax.comm.*;

public class Port {
private CommPortIdentifier portId;
private SerialPort serialPort;
private OutputStreamWriter out;
private InputStreamReader in;
private String COMname;

public Port(String portName) {...}
public static String getrechargeablePassword() {...}
public void close() {...}
public void writeln(String s) throws Exception {...}
public String read() throws Exception {...}
public String sendAT(String atcommand) throws RemoteException {...}
}

3. 短信实体类,定义了短信的基本属性:


package sms;

public class CommonSms {
private String smstext;
private String sender;
private String recver;
private String state;

// Getters and Setters
}

4. 短信发送核心逻辑:


package sms;

public class Sms {
private CommonSms commonsms;
private boolean SendSms(Port myport) {...}
private boolean setMessageMode(Port myport, int op) {...}
private static void send(String phone, String countstring, String com) {...}
public static synchronized void sendSms(String phone, String str, String com) {...}
private void setCommonsms(CommonSms commonsms) {...}
public static List getComPort() {...}
}

5. 测试类,用于验证短信发送功能:


package sms;

public class Test {
public static void main(String[] args) {
Sms.sendSms("13311220311", "测试短信内容", "COM6");
}
}


推荐阅读
  • 从 .NET 转 Java 的自学之路:IO 流基础篇
    本文详细介绍了 Java 中的 IO 流,包括字节流和字符流的基本概念及其操作方式。探讨了如何处理不同类型的文件数据,并结合编码机制确保字符数据的正确读写。同时,文中还涵盖了装饰设计模式的应用,以及多种常见的 IO 操作实例。 ... [详细]
  • 不确定性|放入_华为机试题 HJ9提取不重复的整数
    不确定性|放入_华为机试题 HJ9提取不重复的整数 ... [详细]
  • 本文介绍如何使用阿里云的fastjson库解析包含时间戳、IP地址和参数等信息的JSON格式文本,并进行数据处理和保存。 ... [详细]
  • 本文详细介绍了Java中的输入输出(IO)流,包括其基本概念、分类及应用。IO流是用于在程序和外部资源之间传输数据的一套API。根据数据流动的方向,可以分为输入流(从外部流向程序)和输出流(从程序流向外部)。此外,还涵盖了字节流和字符流的区别及其具体实现。 ... [详细]
  • 本文深入探讨了HTTP请求和响应对象的使用,详细介绍了如何通过响应对象向客户端发送数据、处理中文乱码问题以及常见的HTTP状态码。此外,还涵盖了文件下载、请求重定向、请求转发等高级功能。 ... [详细]
  • 在软件开发过程中,MD5加密是一种常见的数据保护手段。本文将详细介绍如何在C#中使用两种不同的方式来实现MD5加密:字符串加密和流加密。 ... [详细]
  • 本文详细介绍了Java中org.neo4j.helpers.collection.Iterators.single()方法的功能、使用场景及代码示例,帮助开发者更好地理解和应用该方法。 ... [详细]
  • 本文介绍了Java并发库中的阻塞队列(BlockingQueue)及其典型应用场景。通过具体实例,展示了如何利用LinkedBlockingQueue实现线程间高效、安全的数据传递,并结合线程池和原子类优化性能。 ... [详细]
  • 对象自省自省在计算机编程领域里,是指在运行时判断一个对象的类型和能力。dir能够返回一个列表,列举了一个对象所拥有的属性和方法。my_list[ ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • 前言--页数多了以后需要指定到某一页(只做了功能,样式没有细调)html ... [详细]
  • 本文深入探讨了 Java 中的 Serializable 接口,解释了其实现机制、用途及注意事项,帮助开发者更好地理解和使用序列化功能。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • 本文详细介绍了 Apache Jena 库中的 Txn.executeWrite 方法,通过多个实际代码示例展示了其在不同场景下的应用,帮助开发者更好地理解和使用该方法。 ... [详细]
  • 本文探讨了在C++中如何有效地清空输入缓冲区,确保程序只处理最近的输入并丢弃多余的输入。我们将介绍一种不阻塞的方法,并提供一个具体的实现方案。 ... [详细]
author-avatar
哪来的咸鱼
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有