群发出错,急!!请高手赐教 ( 积分: 100 )

  • 主题发起人 主题发起人 darceg
  • 开始时间 开始时间
D

darceg

Unregistered / Unconfirmed
GUEST, unregistred user!
我用一款GSM MODEM 发送短消息,单条能发送成功
但一次性发送多条(10条或更多)后,就不能再发送了,要过很长一段时间才能再次发送,大概是什么原因呢?是因为MODEM的卡写满了数据吗?还是每次发送前要先清什么数据?为何不能无限制多条发送呢?
 
我用一款GSM MODEM 发送短消息,单条能发送成功
但一次性发送多条(10条或更多)后,就不能再发送了,要过很长一段时间才能再次发送,大概是什么原因呢?是因为MODEM的卡写满了数据吗?还是每次发送前要先清什么数据?为何不能无限制多条发送呢?
 
关注,帮顶
希望楼主能多说说GSM MODEM 发送短消息的编程方法
 
发送短消息的长度有限制,在广州移动、联通最多好象可以发70个汉字(140个英文字符),如果超长而不发短消息的结束符的话,短消息中心就会等待你发结束符,你的短消息就会发不出去,直到超过一定时间才可以复位。我去年就写了整个GSM模块,现在都忘得差不多了。找GSM MODEM的资料看看。
 
发送短信要注意时间间隔,每条短信间隔10秒左右比较合适
 
同意maxim88: 发送短信要注意时间间隔,每条短信间隔10秒左右比较合适

sleep(1000);
 
经测试,好像不是短信间隔的问题,加了sleep(1000)还是不行,发了不到20条后就会发送失败。我查了资料,PDU格式的结束符是Cltr+z,可是我怎么通过程序写入这个结束符呢?他的ASCII码是多少啊,请wiseyao指点
 
Cltr+z ->Chr(26)
 
MSComm1.CommPort := 1;
MSComm1.Settings := '9600,N,8,1';
MSComm1.InputLen := 0;
If MSComm1.PortOpen = False Then MSComm1.PortOpen := True;
MSComm1.Output := 'AT+CMGF=1' +chr(13);
MSComm1.Output = 'AT+CMGS=' + Chr(34) + '接收手机号' + Chr(34) ;
MSComm1.Output = '短消息内容' + Chr(26)+Chr(13);
MSComm1.PortOpen = False
 
其实什么发送短信要有时间间隔完全是设计上的误区,这样的后果有两个,一个是致使整个短信收发程序效率严重低下,还有就是有可能造成你说的发送不成功的情况。因为发送短信的速度跟当地,当时的网络信号的质量是有关系的,快的时候有可能3,5秒就发出去了,而你这时如果要sleep10秒就会是效率低下,而信号不好的时候就有可能要更多的时间,就有可能造成你发送不成功。当然发送不成功是有很多原因的,需要具体分析。我个人开发过很多gsm modem收发短信的程序,实现了那些专业短信公司的所有功能,包括移动,连同,小灵通,状态报告,闪信,wap push等,有空可以大家一起交流学习。QQ:185597150
 
再次求救大家,我的发送还是有问题。可以肯定不是发送间隔的问题,也不像是没有写入结束符的问题,因为我加入了Ctlr+z还是不行,请haogui0指点,我把串口速率设得比较高115200,会不会是这个原因?
 
这个是运营商的问题
他们屏蔽了群发
 
好像不像啊,我这边是发了20条后失败20条,有的MODEM发了3条后失败3条
 
这不是你的程序的问题!而是联通或者移动做了一定的限制,因为前几年不少骗子通过手机短信来骗钱。
我们做的短信服务平台单机版,有兴趣的朋友到www.startor.cn下载看看。
 
可我应该怎么解决呢?难道就不断重发发送失败的短信吗?
 
我试了很久,还是没能解决,唉看来这个问题要流产了.运营商好像只是屏蔽了SP方式的短信群发,没有屏蔽短信猫方式啊,请haogui0兄指点,你的QQ加了为何没反应啊
 
后退
顶部