历史上的今天
今天是:2025年04月25日(星期五)
2019年04月25日 | ARM+llinux系统移植3G拨号上网收发短信(二)
2019-04-25 来源:eefocus
一、发送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,说明格式还是有问题,要检查一下。
史海拾趣
|
第一篇 语音信号处理基础 第一章 绪论 1.1 语音信号处理概述 1.2 语音信号处理的发展概况 1.3 本书的内容 第二章 语音信号处理的基础知识 2.1 概述 2.2 语音产生的过程 2.3 语音信号的特性 2.4 语音信号产生的数字模型 2.5 语音感知 第二篇 语音信 ...… 查看全部问答> |
|
压敏电阻器简称VSR,是一种对电压敏感的非线性过电压保护半导体元件。它在电路中用文字符号“RV”或“R”表示,图1-21是其电路图形符号。 压敏电阻的选用… 查看全部问答> |
|
手机开发,如何打开手机内置GPS设备.让其工作,向COM口发数据。GetCommState出错,返回21设备未就绪。 //打开串口 m_hComm = CreateFile(....... 这一步能通过. 到打开串口的当前属性参数,修改后再重新设置串口。 GetCommState(m_hComm,&commParam)) 这一步时.出错. &nb ...… 查看全部问答> |
|
EVC编译问题:CVTRES : fatal error CVT1102 本人原先系统是在PPC2003 SDK下,工具VS2005;现更换成酷派WINCE5 SDK下,工具EVC4。更换系统后,有无新系统SDK支持功能少,有些都用不上去了,需要重新定义。但是,现在编译时,提示:CVTRES : fatal error CVT1102: out of memory; 41 bytes requ ...… 查看全部问答> |
|
把几个需要掉电保存的变量定义在信息段flash中。 参见斑竹以及几位大侠的介绍,我修改了xcl(连接文件) -Z(CODE)INFOA=1000-1079 //yg change -Z(CODE)INFOB=1080-10FF //yg change 把A 和B两个各128字节的 信息段flash标志出来。 问题 ...… 查看全部问答> |
|
麻烦大家看看问题出在哪啊? (程序有点长,主要好像是中断有问题) #include #include \"Cry1602.h\" #define uchar unsigned char uchar shuzi[] = {\"0123456789\"}; uchar zimu1[] = {\"abcdefghigklmnopqrstuvwxyz\"}; uchar zimu2[] = {\"ABCDEFGHIGKLMNOPQRSTUVWXYZ\"}; uchar * ...… 查看全部问答> |




