热门标签 | 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");
}
}


推荐阅读
  • Gradle复合构建详解
    自Gradle 3.3起,复合构建功能得以实现,这是一种能够整合其他独立构建的高级构建模式。本文将详细介绍复合构建与多项目构建的区别,以及如何在实际项目中应用复合构建。 ... [详细]
  • 本文基于《Linux命令行与Shell脚本编程大全》第三版的第十一章内容,探讨了如何构建基本的Shell脚本,包括命令组合、脚本创建、消息显示、变量使用、输入输出重定向、管道、数学运算及脚本退出等方面的知识。 ... [详细]
  • 深入理解BIO与NIO的区别及其应用
    本文详细探讨了BIO(阻塞I/O)和NIO(非阻塞I/O)之间的主要差异,包括它们的工作原理、性能特点以及应用场景,旨在帮助开发者更好地理解和选择适合的I/O模型。 ... [详细]
  • 本文详细介绍了如何配置Apache Flume与Spark Streaming,实现高效的数据传输。文中提供了两种集成方案,旨在帮助用户根据具体需求选择最合适的配置方法。 ... [详细]
  • 本文深入探讨了Java中的代理模式,包括静态代理和动态代理的概念、实现及其应用场景。通过具体的代码示例,详细解析了如何利用代理模式增强代码的功能性和灵活性。 ... [详细]
  • 本文详细介绍了Java库中`com.ait.tooling.nativetools.client.collection.NFastArrayList`类的构造函数`()`的使用方法,并提供了多个实际应用中的代码示例,帮助开发者更好地理解和使用这一高效的数据结构。 ... [详细]
  • 构建首个Spring MVC应用程序
    本指南将指导您如何从零开始创建一个简单的Spring MVC应用,涵盖项目模块创建、依赖管理、核心配置及控制器开发等关键步骤。 ... [详细]
  • Android Studio 中 Activity 组件详解
    本文介绍了 Android 开发中 Activity 的基本概念、生命周期、状态转换以及如何创建和管理 Activity。通过详细的解释和示例代码,帮助开发者更好地理解和使用 Activity。 ... [详细]
  • 本文探讨了在使用Python进行多进程编程时遇到的退出异常问题,并提供了一种有效的解决方案。尤其针对大量数据和高并发场景下的异常退出情况进行了优化。 ... [详细]
  • Java面向对象编程深入解析
    本文详细探讨了Java中的关键字static、单例模式、main()方法、代码块、final关键字、抽象类与方法、模板方法设计模式、接口、内部类等内容,旨在帮助读者深入理解和掌握Java面向对象编程的核心概念。 ... [详细]
  • 本文详细介绍了如何在Maven项目中配置POM文件以实现JAR和LIB的打包,包括指定主类、跳过单元测试等关键步骤。 ... [详细]
  • 本文探讨了如何解决在Eclipse IDE外部通过命令行编译包含自定义包的Java项目时遇到的问题,并提供了详细的解决方案。 ... [详细]
  • 本文记录了Android学习的初期阶段,包括Android的基本架构、Dalvik虚拟机与JVM的区别、ADB工具的使用以及应用程序的打包安装流程。 ... [详细]
  • Android开发技巧:实现带描边的圆角图片
    本文介绍了一种在Android应用中实现带描边的圆角图片的方法。通过使用BitmapShader类,开发者可以轻松地为图片添加圆角和描边效果,提升应用的视觉体验。 ... [详细]
  • Java程序设计第五周学习总结与实践
    本次学习总结涵盖了本周在Java程序设计课程中的学习要点,包括代码阅读、抽象类的应用、接口的使用以及面向接口编程的概念。同时,还包括了具体的书面作业解析。 ... [详细]
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社区 版权所有