社区
移动开发其他问题
帖子详情
是否,手机不同协议不同AT也不同?
nlnc
2003-08-11 11:27:30
我用电脑通过红外向手机发送AT指令,实现了短信的收发,可是,根据标准的PDU编码规则生成的编码在NOKIA手机上测试正常,但在MOTO手机上出现异常,例如短信内容长度编码异常,理论上应该是24,实际上却是28;而且字符越长,异常位相差越多;
我用AT+CPBR读取NOKIA手机电话簿成功,可是相同指令却不被MOTO认可执行,为什么?
难道是不同手机,内部协议不同?
...全文
164
33
打赏
收藏
是否,手机不同协议不同AT也不同?
我用电脑通过红外向手机发送AT指令,实现了短信的收发,可是,根据标准的PDU编码规则生成的编码在NOKIA手机上测试正常,但在MOTO手机上出现异常,例如短信内容长度编码异常,理论上应该是24,实际上却是28;而且字符越长,异常位相差越多; 我用AT+CPBR读取NOKIA手机电话簿成功,可是相同指令却不被MOTO认可执行,为什么? 难道是不同手机,内部协议不同?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
33 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
chrislois
2003-12-11
打赏
举报
回复
up
lin6194
2003-08-29
打赏
举报
回复
我明白了,你说的1秒钟是只你发送AT+CMGS的时候的间隔,你不等待它返回,直接发送下一个。我觉得实际上它只是写到了接收缓冲区,Modem会等前一个发送完成后它会继续从缓冲区读取下一个。
可是速度不是取决于你写COM的速度,而在于Modem处理的速度。test09test(黑人)说的CDMA的模块我没有用过,但我用的GSM的Modem或者是手机,它发送一个都要等3-5秒,你用手机发短消息的时候都应该有明显的等待的感觉的。
所以在数量少的情况下,比如10条,你写到缓冲区只用了10秒或更少,这时你的程序返回,看起来是发送完成了,实际上Modem可能还在处理,所以这种计算方法是不对的。
当大量发送的时候,如果你写入的速度太快,就会出现你所提到的“串口来不及清空导致异常”,你中间加了一个Sleep(1000),也只是减慢了这个问题出现的速度,但只要你写的速度比Modem发送的速度快,就一定会把缓冲区填满,导致需要停顿较长时间,然后才能继续发送。
所以我认为,不管你等待发送的+CMGS返回也好,不等待也好,发送的速度极限就是你的Modem的发送速度,也就是取决于网络的速度。以目前的GSM网络,3秒钟一条已经是很不错的了。CDMA×1的SMS可能使用的不是GSM的SMS发送方式,也许速度会很快吧。
实际的速度计算应该以从大量发送的开始,到最后一条能够接收到来计算吧!
一些个人想法,希望大家讨论。
test09test
2003-08-29
打赏
举报
回复
你用thread去读和写串口,应该就不用sleep了
nlnc
2003-08-29
打赏
举报
回复
临时将COM和测试程序打包,放在以下地址,解压后,直接安装即可;
在安装使用过程中有任何问题,请和我联系:nlnc@163.com
http://user.7host.com/nlnccn/smscom/smscom.rar
nlnc
2003-08-29
打赏
举报
回复
也许我还没有说清楚吧,在COM里封装的SMSSEND这个方法,他是这样执行的,如果AT+CGMS=返回“OK”,一般少于1秒就返回“OK”,当然,返回OK以前会首先返回“>”,这个时候SMSSEND会自动将信息PDU编码并发送;
如果返回“ERROR”,则SMSSEND返回FALSE;
如果在TIMEOUT时间内,例如5秒,即没有返回“OK”,也没有返回“ERROR”,返回不返回“>”不用考虑,则同样SMSSEND返回FALSE;
也就是,如果SMSSEND返回TRUE,是通过AT指令和手机通讯协议确保了的发送成功的;
另外,COM里面加线程并不是特别明智,但可以在客户端用线程调用方法,这样容易与其他内容同步或异步;
lin6194
2003-08-28
打赏
举报
回复
你是说每发一条延时一秒还是说AT+CMGS返回OK只需要一秒。我用的NOKIA8250,最快大概也就是4秒钟一条。能不能把你的COM让我试用一下。marksoft@21cn.com谢谢
nlnc
2003-08-28
打赏
举报
回复
把和手机的通讯封装成了COM,硬件设备是MOTO L2000WWW、红外,或者NOKIA8210、8310,NOKIA比MOTO还快;
我设置了延时,大约1秒钟一条,没有问题;
nlnc
2003-08-28
打赏
举报
回复
当然,在封装COM时我已经考虑到,例如一个SMSSEND发送方法,要么发送成功返回TRUE,要么因为读到“ERROR”返回FALSE,要么因为在TIMEOUT时间内没有响应(“OK”、“ERROR”),也返回FALSE,只所以在客户端也用SLEEP是因为CPU在发送的时候和串口的同步非常困难,毕竟是异步通讯嘛,设置一个SLEEP算是让CPU在两次发送的间隙有完全的空间和时间“反省”一下,我的P4 1.7 M 在使用了SLEEP后现的“欢快”不少,也许其他客户端不用这样做也说不定。
test09test
2003-08-28
打赏
举报
回复
我用过wavecom的cdma 1x的模块,用它发短讯几乎可以同步处理,速度难以置信的快.另外,你群发时也不需sleep啊,你只要读到串口的ok或error来处理,而且你只有这样才能知道你这条短讯有没有成功发出。你也可打开delivery report,来判断对方是否成功收到你的短讯
nlnc
2003-08-28
打赏
举报
回复
在群发的时候,为了防止数次发送之间由于串口来不及清空导致异常,所以设置了SLEEP(1000),不过单发的时候却没有关系,总体而言,发送大约1秒搞定,最迟明天把测试版发送给你;
nlnc
2003-08-27
打赏
举报
回复
目前我做的都是在AT+CMGF=0即PDU模式下的读写,所以在发送短信的时候需要PDU编码,不然就简单了;
MOTO只支持PDU模式;难道就不能解决?MOTO自己是有办法解读,可是没人告诉我;
lin6194
2003-08-27
打赏
举报
回复
AT+CSCS不支持UCS2的现象太普遍了,还有很多手机都不支持你用的AT+CMGF=1的文本发送和读取的方式,你要做通用,一定要用PDU模式,否则没戏的!
lin6194
2003-08-27
打赏
举报
回复
nlnc(风之8号) :在另一个帖子看到你说你的短信1秒钟发送一个,真的有这么快吗?你用的什么设备和那个网络啊?
lin6194
2003-08-27
打赏
举报
回复
把你的Moto收到的码发上来看一下。
nlnc
2003-08-26
打赏
举报
回复
"UCS2","GSM","PCCP437","PCDN","IRA","8859-1","HEX"
“Unicode要解码”-->NOKIA手机可以通过设置AT+CSCS来解码,已经实现,可是,MOTO只有GSM和IRA两种字符集,出来的是“»}??»i”;
采用GSM编码表,每个字符7bits-->用DELPHI开发,本身就可以将中文字符转化,英文确实要考虑7位GSM编码问题,但是中文不用啊,奇怪的是,同样的编码程序,对于NOKIA完全正确,对于MOTO就出现前述问题;
lin6194
2003-08-26
打赏
举报
回复
普通图片铃声适用短信编码,按照不通品牌的手机编码就可以发送不通的图片铃声。
"电话簿姓名显示英文没问题、但中文乱码" --> Unicode要解码
"MOTO在PDU编码短信长度这一位上与标准PDU编码规则有差异,每隔7个字符会丢半位"--> 采用GSM编码表,每个字符7bits,要解码成ANSI否则有些字符不能显示,或显示错误!
xuefengal
2003-08-25
打赏
举报
回复
红外不是有一些通用的基本协议吗?
要是把那个用上的话可能还可以的。
西门子有一个软件叫什么“疯狂短信”的,那个就可以的,它还要以给其它的机器发送图片和声音短信的
lin6194
2003-08-25
打赏
举报
回复
这种情况在其他手机里面也有出现,我想主要是厂商不愿意去实现太多的功能,但又想这些指令能够运行,所以就会出现,你可以适用那几个值,但他们最终都等价于某一个值。
nlnc
2003-08-25
打赏
举报
回复
回复上述:MOTOL2000、P7689,AT+CMGL无论0、1、2、3、4都返回所有短信列表;
nlnc
2003-08-25
打赏
举报
回复
只要有媒体信息的编码方式(比如SMS的PDU编码)、并且手机支持相关AT指令的话(比如AT+CMGS),无论是图片和声音应该都没有问题;
我现在已经实现SMS的操作,读取接受到的短信(列表或一条),发送短信,存短信,删短信;
电话簿操作,读取电话簿(列表或指定位置),存电话;
封装的是COM,目前针对MOTO、NOKIA、SONY、SAMSONG均测试通过;但还有一定问题,比如,电话簿姓名显示英文没问题、但中文乱码,NOKIA可以设置编码方式可以解决,MOTO不行,短信发送时,MOTO在PDU编码短信长度这一位上与标准PDU编码规则有差异,每隔7个字符会丢半位。
加载更多回复(12)
stm32嵌入式开发实战入门与提高
本课程以实际操作演练的方式,以stm32系列单片机为例,手把手教你进行...掌握第三方库FAT,USB,emWin,TouchGFX,Lwip,FreeRTOS开发应用,通讯
协议
开发,AT指令开发,4G GPRS, MQTT物联网项目开发相关方面的知识。
蓝牙
协议
-HFP
协议
AT命令格式
蓝牙HFP
协议
中的AT命令都是复用《3GPP 27.007》和《GSM 07.07》这两个
协议
规定的AT命令集中的一部分指令. AT命令在AG(
手机
)和HF(连接设备)之间的交互是建立于RFCOMM连接成功的基础上. HF->AG发送AT命令格式:AT ...
蓝牙HFP
协议
AT命令流程
蓝牙HFP
协议
主要是指HF和AG之间的信令交互,我们知道蓝牙耳机和
手机
配对之后,耳机会发三个最基本的AT命令,分别是 AT+BRSF, AT+CIND=?, AT+CIND?
协议
栈接收AT命令的流程 1 BTA层从rfcomn接收蓝牙耳机发送过来的...
android
手机
at指令集,
手机
AT指令集
ASCI码指令功能
手机
回答AT回车握手OKATE简化显示OKAT+CLCC来电显示OK来电话时串口输出:RINGAT+CLCC+CLCC: 1,1,4,0,0,"05133082087",129AT+CNMI=1,1,2设置收到短消息提示OK+CMTI:“SM”,44表示
手机
内短消息数量ATD...
【BT
协议
】HFP - AT 命令集
蓝牙电话之HFP-AT命令集 蓝牙HFP
协议
中的AT命令都是复用《3GPP 27.007》和《GSM 07.07》这两个
协议
规定的AT命令集中的一部分指令,本篇只对HFP相关的AT命令学习下。 AT命令在AG和HF之间的交互是建立于RFCOMM连...
移动开发其他问题
790
社区成员
13,285
社区内容
发帖
与我相关
我的任务
移动开发其他问题
移动平台 其他移动相关
复制链接
扫一扫
分享
社区描述
移动平台 其他移动相关
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章