使用 Java 将 At 命令发送到 gsm 调制解调器

2023-12-05

我正在尝试编写一个发送短信的程序。我写了程序,但没有成功发送消息。我的程序向我的计算机中的 COM 端口发送一条 At 命令,但我没有从我的 gsm 调制解调器收到响应。我正在使用 COM 终端(Temp pro...)通过 at 命令发送短信,并且我能够发送短信。因此我不知道为什么该程序无法发送短信。

import java.io.*;
import java.util.*;
import gnu.io.*;

public class prawiefinal {
    static Enumeration portList;
    static CommPortIdentifier portId;
    static String messageString = "AT+CMGF=1 \r";
    static String messageString2 = "AT+CMGS=\"+4866467xxxx\"\r";
    static String messageString3 = "TESting \u001A\r\n";
    static SerialPort serialPort;
    static OutputStream outputStream;


    public static void main(String[] args) throws InterruptedException {
        portList = CommPortIdentifier.getPortIdentifiers();

        while (portList.hasMoreElements()) {

            portId = (CommPortIdentifier) portList.nextElement();
            if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {

                if (portId.getName().equals("COM3")) {

                    try {
                        serialPort = (SerialPort)
                            portId.open("COM3", 2000);
                    } catch (PortInUseException e) {System.out.println("err");}
                    try {
                        outputStream = serialPort.getOutputStream();
                    } catch (IOException e) {e.printStackTrace();}
                    try {
                        serialPort.setSerialPortParams(9600,
                                SerialPort.DATABITS_8,
                                SerialPort.STOPBITS_1,
                                SerialPort.PARITY_NONE);
                    } catch (UnsupportedCommOperationException e) {e.printStackTrace();}
                    try {
                        outputStream.write(messageString.getBytes());
                        Thread.sleep(3000); 
                        outputStream.flush();

                        outputStream.write(messageString2.getBytes());  
                        Thread.sleep(3000);  
                        outputStream.flush();

                        outputStream.write(messageString3.getBytes()); 
                        Thread.sleep(3000);  
                        outputStream.write(26);
                        outputStream.flush();
                        System.out.println(messageString);  
                        Thread.sleep(3000);






                        outputStream.close();
                        serialPort.close();

                    } catch (IOException e) {e.printStackTrace());}
                }
            }
        }
    }
}

好的,我编写了程序,我可以发送短信。我使用 CTRL+Z 和 Enter 这是一个问题。 :D

import java.io.*; 
import java.util.*; 
import gnu.io.*; 

public class SMSsender { 
static Enumeration portList; 
static CommPortIdentifier portId; 
static String messageString1 = "AT";
static String messageString2 = "AT+CPIN=\"7078\"";
static String messageString3 = "AT+CMGF=1"; 
static String messageString4 = "AT+CMGS=\"+4866467xxxx\"";


static String messageString5 = "TESTY2";
static SerialPort serialPort;
static OutputStream outputStream;
static InputStream inputStream;
static char enter = 13;

static char CTRLZ = 26;
public static void main(String[] args) throws InterruptedException {
 portList = CommPortIdentifier.getPortIdentifiers();



while (portList.hasMoreElements()) {

    portId = (CommPortIdentifier) portList.nextElement();
    if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {

         if (portId.getName().equals("COM3")) {

            try {
                serialPort = (SerialPort)
                    portId.open("COM3", 2000);
            } catch (PortInUseException e) {System.out.println("err");}
            try {
                outputStream = serialPort.getOutputStream();
                inputStream = serialPort.getInputStream();
            } catch (IOException e) {e.printStackTrace();}
            try {
                serialPort.setSerialPortParams(9600,
                    SerialPort.DATABITS_8,
                    SerialPort.STOPBITS_1,
                    SerialPort.PARITY_NONE); 
            } catch (UnsupportedCommOperationException e) {e.printStackTrace();}
            try { 

                outputStream.write((messageString1 + enter).getBytes());


                Thread.sleep(100); 
                outputStream.flush();

                outputStream.write((messageString2 + enter).getBytes()); 

                 Thread.sleep(100); 
                 outputStream.flush();

                outputStream.write((messageString3 + enter).getBytes());

                Thread.sleep(100); 
                outputStream.flush(); 




                outputStream.write((messageString4 + enter).getBytes()); 

                Thread.sleep(100);  
                outputStream.flush();

               outputStream.write((messageString5 + CTRLZ).getBytes());  

                outputStream.flush(); 
                Thread.sleep(100); 


    System.out.println("Wyslano wiadomosc");  
    Thread.sleep(3000);


    outputStream.close();
    serialPort.close();
    System.out.println("Port COM zamkniety"); 

            } catch (IOException e) {e.printStackTrace();}
        }
    }
}

} }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Java 将 At 命令发送到 gsm 调制解调器 的相关文章

  • 如何在日期选择器中设置不在当前月份的单元格的样式

    我目前正在为我的 JavaFX 应用程序制作注册表 问题是 当日期选择器中的单元格不在页面的月份上时 我想让该单元格变灰 让我们看看我当前的日期选择器 我的日期选择器 正如您所看到的 我希望下个月的日期 27 日 28 日 30 日以及 1
  • 如何将 Java 赋值表达式转换为 Kotlin

    java中的一些东西就像 int a 1 b 2 c 1 if a b c System out print true 现在它应该转换为 kotlin 就像 var a Int 1 var b Int 2 var c Int 1 if a
  • JNI 不满意链接错误

    我想创建一个简单的 JNI 层 我使用Visual studio 2008创建了一个dll Win 32控制台应用程序项目类型 带有DLL作为选项 当我调用本机方法时 出现此异常 Exception occurred during even
  • CXF Swagger2功能添加安全定义

    我想使用 org apache cxf jaxrs swagger Swagger2Feature 将安全定义添加到我的其余服务中 但是我看不到任何相关方法或任何有关如何执行此操作的资源 下面是我想使用 swagger2feature 生成
  • 在浏览器中点击应用程序时播放框架挂起

    我正在 Play 中运行一个应用程序activator run 也许 5 次中有 3 次 它会挂起 当我去http localhost 9000 它就永远坐在那里旋转 我看到很多promise timed out错误也 我应该去哪里寻找这个
  • 在数据流模板中调用 waitUntilFinish() 后可以运行代码吗?

    我有一个批处理 Apache Beam 作业 它从 GCS 获取文件作为输入 我的目标是根据执行后管道的状态将文件移动到两个 GCS 存储桶之一 如果管道执行成功 则将文件移动到存储桶 A 否则 如果管道在执行过程中出现任何未处理的异常 则
  • java中删除字符串中的特殊字符?

    如何删除字符串中除 之外的特殊字符 现在我用 replaceAll w s 它删除了所有特殊字符 但我想保留 谁能告诉我我该怎么办 Use replaceAll w s 我所做的是将下划线和连字符添加到正则表达式中 我添加了一个 连字符之前
  • 使用替换字符串中多个单词的最有效方法[重复]

    这个问题在这里已经有答案了 此刻我正在做 Example line replaceAll replaceAll cat dog replaceAll football rugby 我觉得那很丑 不确定有更好的方法吗 也许循环遍历哈希图 ED
  • 请求位置更新参数

    这就是 requestLocationUpdates 的样子 我使用它的方式 requestLocationUpdates String provider long minTime float minDistance LocationLis
  • 迁移到 java 17 后有关“每个进程的内存映射”和 JVM 崩溃的 GC 警告

    我们正在将 java 8 应用程序迁移到 java 17 并将 GC 从G1GC to ZGC 我们的应用程序作为容器运行 这两个基础映像之间的唯一区别是 java 的版本 例如对于 java 17 版本 FROM ubuntu 20 04
  • Java中接口作为方法参数

    前几天去面试 被问到了这样的问题 问 反转链表 给出以下代码 public class ReverseList interface NodeList int getItem NodeList nextNode void reverse No
  • 如何将文件透明地传输到浏览器?

    受控环境 IE8 IIS 7 ColdFusion 当从 IE 发出指向媒体文件 例如 mp3 mpeg 等 的 GET 请求时 浏览器将启动关联的应用程序 Window Media Player 我猜测 IIS 提供文件的方式允许应用程序
  • 检查 Android 手机上的方向

    如何查看Android手机是横屏还是竖屏 当前配置用于确定要检索的资源 可从资源中获取Configuration object getResources getConfiguration orientation 您可以通过查看其值来检查方向
  • Spring Data 与 Spring Data JPA 与 JdbcTemplate

    我有信心Spring Data and Spring Data JPA指的是相同的 但后来我在 youtube 上观看了一个关于他正在使用JdbcTemplate在那篇教程中 所以我在那里感到困惑 我想澄清一下两者之间有什么区别Spring
  • 尝试使用 Ruby Java Bridge (RJB) gem 时出现错误“无法创建 Java VM”

    我正在尝试实现 Ruby Java Bridge RJB gem 来与 JVM 通信 以便我可以运行 Open NLP gem 我在 Windows 8 上安装并运行了 Java 所有迹象 至少我所知道的 都表明 Java 已安装并可运行
  • 使用 SAX 进行 XML 解析 |如何处理特殊字符?

    我们有一个 JAVA 应用程序 可以从 SAP 系统中提取数据 解析数据并呈现给用户 使用 SAP JCo 连接器提取数据 最近我们抛出了一个异常 org xml sax SAXParseException 字符引用 是无效的 XML 字符
  • 休眠以持久保存日期

    有没有办法告诉 Hibernate java util Date 应该持久保存 我需要这个来解决 MySQL 中缺少的毫秒分辨率问题 您能想到这种方法有什么缺点吗 您可以自己创建字段long 或者使用自定义的UserType 实施后User
  • java迭代器内部是如何工作的? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个员工列表 List
  • java8 Collectors.toMap() 限制?

    我正在尝试使用java8Collectors toMap on a Stream of ZipEntry 这可能不是最好的想法 因为在处理过程中可能会发生异常 但我想这应该是可能的 我现在收到一个我不明白的编译错误 我猜是类型推理引擎 这是
  • Swagger/Openapi-Annotations:如何使用 $ref 生成 allOf?

    我正在生成 Rest 端点 包括添加OpenAPI Swagger对生成的代码进行注释 虽然它对于基本类型运行得很好 但我在自定义类方面遇到了一些问题 现在我有很多自定义类的重复架构条目 使用 Schema 实现 MyClass class

随机推荐

  • 用于对象导出和类型的 def 文件

    好的 我们有了一个 Node 模块string similaritywho 导出两个这样的函数 参见 https github com aceakash string similarity blob master compare strin
  • 如何在 VS Code linter 中更改 pylint 消息模板?

    我的目标是更改 VS Code 中 linter 消息的 pylint 消息模板 我使用的是 Don Jayamanne 提供的 VS Code 标准 Python 扩展 该扩展现在由 Microsoft 直接维护 默认情况下 消息格式如下
  • 根据布尔掩码将值从一个 numpy 矩阵复制到另一个

    作为一个简单的例子 我有以下内容 import numpy as np a np matrix 0 34 0 44 0 21 0 51 a max np matrix 0 35 0 40 0 20 0 50 我想应用一个转换 其中 a 中大
  • CSS中有什么尖锐的样式吗?

    我想使用 Photoshop 中的 style sharp 在我的 css 中设置一些字体的样式 有谁知道路吗 Photoshop 使用自定义字体渲染引擎 您无法使用 CSS 来模拟该引擎 此外 每个平台都有自己的渲染引擎 CSS无法控制
  • 使用来自 C# 的参数运行控制台应用程序 - GUI 连接建议

    警告 这是一个 C n00b 问题 尝试学习一些 C 同时让我经常运行的控制台应用程序变得更容易 我正在尝试运行控制台应用程序 consoleapp exe 而无需每次手动输入参数 命令通常采用以下形式 C consoleapp exe u
  • 字符串操作 - 还有其他有效的方法吗?

    我有一个要求 我需要在给定的字符串变量中插入转义序列 无论是在哪里单引号出现 我尝试使用split方法以及字符串分词器 没有一个适合我 所以我开发了下面提到的逻辑 在某些情况下它也会失败 谁能给我提供一种最简单的方法来实现这样的要求 pub
  • 查找缺少任意字段的 CouchDB 文档

    我需要一个 CouchDB 视图 可以在其中获取所有没有任意字段的文档 如果您事先知道文档的哪些字段 这很容易做到might没有 例如 这可以让你发送view my view key foo 轻松检索没有 foo 字段的文档 functio
  • 在后台发送 WhatsApp 消息或在 Android 中发送消息并关闭应用程序

    是否可以在不打开应用程序的情况下发送whatsApp消息 在后台发送 就像使用发送短信一样 smsManager sendTextMessage 12546304580 null Test Message null null 如果是这样怎么
  • 删除每个组的第一行

    假设我有一个这样的数据集 df lt data frame group c rep 1 3 rep 2 2 rep 3 2 rep 4 3 rep 5 2 score c 30 10 22 44 6 5 20 35 2 60 14 5 gr
  • OleDB 和混合 Excel 数据类型:丢失数据

    我有一个 Excel 工作表 我想读入数据表 除了 Excel 工作表中的一个特定列之外 一切都很好 ProductID 列是值的组合 例如 and n 我尝试过了让 OleDB 自动处理一切通过将其读入数据集 数据表 但 ProductI
  • 一次仅允许有一个 UITableViewCell 附件复选标记

    我有一个表格视图 其中一个部分包含用户可以 选择 的声音列表 只有当前选择的声音应该显示UITableViewCellAccessoryCheckmark 基本上我已经成功了 然而 当例如底部单元格被选中 我向上滚动表格视图 使选中的单元格
  • 如何在 python 2.6 中使用日志记录 NullHandler

    目前我的大部分代码都设计为在 python 2 76 上运行 因此 我编写的库使用以下代码 以便我的库的任何使用者都可以拥有来自该库的调试日志记录 所以在每个库文件中我都有这个 log logging getLogger name log
  • 这个插值搜索实现有什么问题?

    这是在 Internet 上找到的插值搜索算法的常见 C C 实现 然而 当与大约 100000 个整数的排序数组一起使用时 中间变量开始生成负数组索引 从而导致分段错误 问题可能是什么 include
  • 使用 boost 迭代 xml 文件

    我是 boost 和 xml 的新手 我正在尝试扫描 xml 文件并保存一些特定值 I read this文章和我的问题是 如果 xml 包含几个
  • 预测时间序列数据

    我做了一些研究 但我一直在寻找解决方案 我有一个时间序列数据 非常基本的数据框架 我们称之为x Date Used 11 1 2011 587 11 2 2011 578 11 3 2011 600 11 4 2011 599 11 5 2
  • 更改编辑控件中文本的背景

    您可以更改编辑控件区域中保持静态的文本背景吗 在编辑控件的父级中 处理WM CTLC彩色静态消息 该消息的wParam是Edit控件将要绘制的HDC 对于大多数 CTLCOLOR 消息 如果您在此 DC 中设置文本和背景颜色 则控件将使用您
  • 对象处理触摸事件但也让它通过

    我想创建一个像这样工作的对象MultiPointTouchArea 因此它将具有 touchUpdated 信号 但它也不会窃取触摸 因此放置在其下方的对象也将接收触摸事件 该解决方案可能需要创建 C 对象 有没有一种简单的方法来创建这样的
  • 在 silverlight 中单击子窗口外部即可关闭子窗口

    当我点击子窗口外部时如何关闭子窗口 如果您使用默认的silverlight子窗口样式 当它打开时 外部部分 透明的灰色部分 实际上是子窗口样式内的网格 称为覆盖 所以你需要做的是处理它的MouseLeftButtonDown事件
  • 良好的命名空间命名约定

    我正在为 CRUD 业务应用程序创建一个类库 业务对象 以及相关的数据访问层对象 的主要 类别 是 维护 用于与master一起工作 数据库中的表 主列表 事件 大多数对象与现实世界的事件相关 搜索 显而易见 到目前为止 我的命名空间设置如
  • 使用 Java 将 At 命令发送到 gsm 调制解调器

    我正在尝试编写一个发送短信的程序 我写了程序 但没有成功发送消息 我的程序向我的计算机中的 COM 端口发送一条 At 命令 但我没有从我的 gsm 调制解调器收到响应 我正在使用 COM 终端 Temp pro 通过 at 命令发送短信