短信 AT示例

5 篇文章 0 订阅
1 篇文章 0 订阅

短信 AT示例

应用概述

4G模块发短信基本流程如下:

     1、设置为TEXT模式
     2、查询当前的TEXT模式短信参数
     3、查询字符集
     4、发短信给测试手机号
     5、输入具体信息内容发送

材料准备

  1. EVB_Air724UG_A13开发板一套,包括天线SIM卡,USB线。
  2. PC电脑,串口工具
    图片.png

应用流程

基本流程

先来看个正常情况下的AT命令序列,如果不理解AT命令含义,请自行参考AT手册或AT指南


[10:40:55.700]发→◇ATI//查询软件版本
□
[10:40:55.700]收←◆ATI

AirM2M_720UH_V301836_LTE_AT

OK

[10:40:58.330]发→◇AT+CPIN?//查询sim卡状态
□
[10:40:58.330]收←◆AT+CPIN?

+CPIN: READY

OK

[10:40:59.128]发→◇AT+CSQ//查询信号质量
□
[10:40:59.133]收←◆AT+CSQ

+CSQ: 23,99

OK

[10:41:00.011]发→◇AT+CGATT?//查询附着状态
□
[10:41:00.015]收←◆AT+CGATT?

+CGATT: 1

OK

[10:42:10.046]发→◇AT+CMGF=1//设置为TEXT模式
□
[10:42:10.049]收←◆AT+CMGF=1

OK

[10:42:18.802]发→◇AT+CSMP?//查询当前的TEXT模式短信参数
□
[10:42:18.808]收←◆AT+CSMP?

+CSMP: 17,167,0,0

OK

[10:42:24.314]发→◇AT+CSCS?//查询字符集
□
[10:42:24.320]收←◆AT+CSCS?

+CSCS: "PCCP936"

OK

[10:43:10.883]发→◇AT+CMGS="1862*****86"//要发送的手机号。
□
[10:43:10.889]收←◆AT+CMGS="1862*****86"

> 
[10:43:34.037]发→◇hello,world123!//输入要发送的具体内容
□
[10:43:34.043]收←◆hello,world123!

[10:43:47.623]发→◇□
[10:43:47.623]收←◆
[10:43:48.149]收←◆
+CMGS: 1

OK//ok代表发送成功,手机上可以看到收到的信息

常见问题

1:sim卡要手机卡才能发短信,物联网卡不能发。
2:sim卡要能上网,有流量。
3: 如果要发送中文信息:AT+CSMP=17,167,0,8

相关资料以及购买链接

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Java中使用AT指令发送短信,需要通过串口通讯与短信猫通讯,并且需要了解AT指令的基本语法和使用方法。 首先,需要使用Java中的串口通讯库来打开串口,建立与短信猫的连接。可以使用RXTX或jSerialComm等库来实现串口通讯。 接着,需要通过串口发送AT指令来控制短信猫发送短信。常用的AT指令包括: 1. AT+CMGF=1:设置短信格式为文本模式。 2. AT+CMGS="手机号码":指定短信接收者的手机号码。 3. 输入短信内容,以Ctrl+Z结束短信的输入。 4. 发送AT指令后,需要等待短信发送状态的返回,可以使用AT指令AT+CMGS=?来查询短信发送状态。 下面是一个简单的Java程序示例,可以通过串口向短信猫发送短信: ``` import java.io.*; import java.util.*; import gnu.io.*; public class SMS { static Enumeration portList; static CommPortIdentifier portId; static SerialPort serialPort; public static void main(String[] args) { try { String message = "Hello, world!"; // 短信内容 String phoneNumber = "手机号码"; // 接收者手机号码 String portName = "COM1"; // 串口名称 // 获取串口 portList = CommPortIdentifier.getPortIdentifiers(); while (portList.hasMoreElements()) { portId = (CommPortIdentifier) portList.nextElement(); if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL && portId.getName().equals(portName)) { // 打开串口 serialPort = (SerialPort) portId.open("SMS", 2000); serialPort.setSerialPortParams(115200, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_NONE); // 发送AT指令 OutputStream outputStream = serialPort.getOutputStream(); InputStream inputStream = serialPort.getInputStream(); String command = "AT+CMGF=1\r\n"; byte[] buffer = command.getBytes(); outputStream.write(buffer); Thread.sleep(500); // 指定短信接收者 command = "AT+CMGS=\"" + phoneNumber + "\"\r\n"; buffer = command.getBytes(); outputStream.write(buffer); Thread.sleep(500); // 输入短信内容 command = message + "\u001a"; buffer = command.getBytes(); outputStream.write(buffer); Thread.sleep(500); // 等待短信发送状态的返回 command = "AT+CMGS=?\r\n"; buffer = command.getBytes(); outputStream.write(buffer); Thread.sleep(500); int available = inputStream.available(); while (available == 0) { Thread.sleep(200); available = inputStream.available(); } byte[] response = new byte[available]; inputStream.read(response); System.out.println(new String(response)); serialPort.close(); } } } catch (Exception e) { e.printStackTrace(); } } } ``` 注意:在使用AT指令发送短信时,需要注意短信猫的制式和运营商的限制,否则可能会发送失败。同时,需要保证短信猫和Java程序所在的机器之间的串口连接正常。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值