ARM+llinux系统移植3G拨号上网收发短信(二)【转】

本文转载自:http://blog.csdn.net/hanmengaidudu/article/details/17099749

一、发送text格式的短信

给联通发text格式的短信:

~ >: microcom -s 115200 /dev/ttyUSB1

at

OK

设置短信格式为Text模式:

at+cmgf=1

OK

at+cmgs="+861300711**** "

输入发送的内容:

> hello         (内容写完后按一下ctrl + z发送)                                      

+CMGS: 48

OK

 

 

给电信发text格式的短信:

~ >: microcom -s 115200 /dev/ttyUSB1

at

OK

设置短信格式为Text模式:

at+cmgf=1
OK

at+cmgs="+861532736**** "

设置短信格式为Text模式:

> hello    (内容写完后按一下ctrl + z发送)

+CMGS: 48

 

 

二、发送PDU格式的短信

接收号码:+8613007110996
短信内容:工作愉快!
武汉中心号码:+8613800270500

1、短信中心号码处理:用字符串 addr 表示
a、将短信息中心号码去掉+号,看看长度是否为偶数,如果不是,最后添加F
     即 addr = "+8613800100500"
    => addr = "8613800270500F"
b、将奇数位和偶数位交换。
    => addr = "683108200705F0"
c、将短信息中心号码前面加上字符91,91是国际化的意思
    => addr = "91683108200705F0"
d、算出 addr 长度,结果除2,格式化成2位的16进制字符串,16 / 2 = 8 => "08",并放到addr前面去。
    => addr = "0891683108200705F0"

2、手机号码处理:用字符串 phone
a、将手机号码去掉+号,看看长度是否为偶数,如果不是,最后添加F
    即 phone = "+8613007110996"
    => phone =  "8613007110996F"
b、将手机号码奇数位和偶数位交换。
    => phone =  "683100170199F6"

3、短信息部分处理:用字符串 msg 表示
a、转字符串转换为Unicode代码,转换方法为:

      下载一个汉字Unicode编码转换器,当输入“工作愉快!” 时

      

     转换为的是十进制24037 20316 24841 24555 65281 ,再利用计算器五个一转换,例如24037转换为十六进制的5DE5,

    最终转换为的十六进制连起来就是5DE54F5C61095FEBFF01 (转换在Linux里可用iconv函数实现。)

b、将 msg 长度除2,保留两位16进制数,即 5DE54F5C61095FEBFF01 = 20 / 2 => "0A",再加上 msg
    => msg = "0A5DE54F5C61095FEBFF01"

4、组合
a、手机号码前加上字符串 11000D91(1100:固定,0D:手机号码的长度,不算+号,十六进制表示,91:发送到手机为91,发送到小灵通为81)
    即 phone = "11000D91" + phone
    => 11000D91683100170199F6
b、手机号码后加上 000800 和刚才的短信息内容,000800也写死就可以了
    即 phone = phone + "000800" + msg
    即 11000D91683100170199F6 + 000800 + 0A5DE54F5C61095FEBFF01
=> phone = 11000D91683109423346F90008000A5DE54F5C61095FEBFF01
c、phone 长度除以2,格式化成2位的十进制数
    即 11000D91683100170199F60008000A5DE54F5C61095FEBFF01 => 50位 / 2 => 25

5、note = addr+phone ==> 0891683108200705F011000D91683100170199F60008000A5DE54F5C61095FEBFF01

5、所以要发送的内容为
发:AT
收:OK
发:AT+CMGF=0 
收:OK
发:AT+CMGS=25
收:>
发:note --->  //"--->"为发送符(ctrl+z,十六进制0x1A)
收:+CMGS: 50 

        OK

6、如果返回不是ERROR,恭喜你,发送成功了。如果返回+CMS ERROR: 304,说明格式还是有问题,要检查一下。

时间: 2024-11-04 13:13:00

ARM+llinux系统移植3G拨号上网收发短信(二)【转】的相关文章

ARM+llinux系统移植3G拨号上网收发短信(一)【转】

本文转载自:http://blog.csdn.net/hanmengaidudu/article/details/17099737 一.      PPP移植 各项工作具体说明 向Linux内核添加3G模块的驱动(USB转串口驱动)和PPP协议的支持,然后编译内核并下载到开发板.当然如果之前已经移植好内核,那么只需要增加几个选项就可以,然后在编译内核就可以了,这个文档默认内核已经移植过,所以只讲与USB转串口驱动和PPP协议支持的几个选项. [[email protected] linux-3.

ARM+linux系统移植3G拨号上网收发短信(三)【转】

本文转载自:http://blog.csdn.net/hanmengaidudu/article/details/17099755 一.用text查看模式下面的“发”是指我敲的命令,“收”是指回车后显示的信息包括其他接收的信息.~ >: microcom -s 115200 /dev/ttyUSB1发:at收:OK 设置成文本模式读:发:at+cmgf=1 收:OK 将信息保存在SIM卡中: 发:at+cpms="SM","SM","SM"

Android开发手记(15) 拨打电话和收发短信

1.Intent简介 Android组价之间的通信,由Intent来协助完成.Intent负责对应用中一次操作的动作.动作涉及数据.附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将 Intent传递给调用的组件,并完成组件的调用. Intent可以启动一个Activity,也可以启动一个Service,还可以发起一个广播Broadcasts.分别通过startActivity();startService();startBroadcasts();来执行操作. 在

Android实现电话拨号器和短信发送器

电话拨号器和短信发送器是Android初学者很好的练习项目,今天就找了两个写得很不错的例子学习下 电话拨号器 实现原理:用户输入电话号码,当点击拨打的时候,由监听对象捕获,监听对象通过文本控件获取到用户输入的电话号码,由于系统已经实现了电话拨号功能,所以我们只需要调用这个功能就可以了. 步骤: 1.界面布局 2.编写Activity 3.使用意图过滤器激活电话拨号功能 4.添加电话服务权限(用手机的电话服务,要在清单文件AndroidManifest.xml中添加电话服务权限) 如图所示这三个控

使用 AT 命令实现西门子短信猫收发短信实例

通过AT指令对西门子短信猫收发短信的控制共有三种实现途径: (1) 最初的 Block 模式(2) 基于 AT 命令的 Text 模式 (3) 基于 AT 命令的 PDU 模式 本文记录的大量的TC35/TC35T 实验数据,总结了使用TC35/TC35T 短信猫收发短信的方法. 准备工作: 使用 TC35 收发短信息,用户必须准备一张已开通短信息服务 SIM 卡,并将其插入 MC2002 之 TC35 扩展模块 SIM 卡座中或 TC35T 的 SIM 卡座中. 使用 PC 配合 TC35T

Android 读取手机联系人、拨号、发送短信及长按菜单的操作

本示例实现了读取手机联系人,拨号.发送短信及长按出现菜单选项的操作↓ 1.Andrid项目结构图↓主要操作图中红色方框内的文件. 2.首先布局代码如下↓ a, main.xml 程序运行的主界面,主要用ListView列表控件展示手机联系人 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/a

Android收发短信

效果:点击发送短信开始发送短信 收到短信时将短信的内容显示出来 代码如下: 一.权限声明 <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.SEND_SMS" /> 二.代码实现 我们的短信功能用到了SmsManager和SmsMessage两个主要类. 当收不到

每天进步一点----- 收发短信

package com.example.smstest; import android.app.Activity; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.o

a标签实现一键拨号、发短信、发邮件、发起QQ会话

a标签href的妙用: <a href="tel:400-888-6633">拨打电话<a> <a href="sms:19956321564">发送短信<a> <a href="mailto:[email protected]">发送邮件<a> <a target=blank href="tencent://message/?uin=2858182383&a