急!发送几条短信后就发生错误 ( 积分: 100 )

  • 主题发起人 主题发起人 sad_sand
  • 开始时间 开始时间
S

sad_sand

Unregistered / Unconfirmed
GUEST, unregistred user!
我用spcomm做短信收发,创建一个线程进行信息WriteCommData发送(群发),通过CommReceiveData接收数据并进行处理。发送一条信息后等待“OK”或超时,然后发送下一条信息。现在每次发送四、五条信息后,GSM模块就“死掉”了,发不出短信,CommReceiveData也收不到信息。请问各位大虾,可能会是什么原因?会是收发冲突吗?可是spcomm的收发本身就是两个同步线程啊!
 
我用spcomm做短信收发,创建一个线程进行信息WriteCommData发送(群发),通过CommReceiveData接收数据并进行处理。发送一条信息后等待“OK”或超时,然后发送下一条信息。现在每次发送四、五条信息后,GSM模块就“死掉”了,发不出短信,CommReceiveData也收不到信息。请问各位大虾,可能会是什么原因?会是收发冲突吗?可是spcomm的收发本身就是两个同步线程啊!
 
没用过spcomm控件,还是自己写来控制串口吧。我开发过不少gsm modem的程序,没有遇到过你说的这种问题。有需求请联系QQ:185597150
 
发送间隔是多少?把间隔加大到10秒试试。
可以用串口调试软件模拟发送过程,看看是软件问题还是模块问题。
 
我是新手,请问发送间隔是哪个参数?我用的是spcomm的默认参数值。这个问题是个不确定问题,有时发生,有时不发生,但是往往群发短信就容易出现这个现象。
 
你选择的是Text格式还是PDU格式?
如果收到的短信未及时删除,可能会溢出;(死机?)

先列出消息;
AT+CMGL=4//列SIM卡内容,0:未读,1:已读4:全部;
读后要及时删除消息“
AT+CMGD=index//删除第index条;
只发不收没这个问题。
 
发送间隔是指你发送前一条短信后再隔多少秒发送下一条短信,和SPCOMM无关。
做群发肯定是希望越快越好,但欲速则不达,一分钟超过10条出问题很正常。
 
嗯,我CDMA用的是text格式,GSM用的是PDU格式,都有这个问题。接收到回复信息后,会发送下一条,现在发现有时删除短信的AT指令与发送指令混了,都执行不成功,我现在删除都是删除全部信息。但有时也能成功。不知该怎样同步这两个指令?发不出短信的时候,检查sim卡也没满啊!
 
你说的“死掉”是什么情况?
发不了信息还是收不到回信?

通常从发送到返回,服务中心在本市也要3秒;
我作过测试,收到后再发(应答式,如发1111收到后发2222);
成功率很高;

但不管收不收到连续发,有塞车现象;(可能短消息中心来不及处理?)
 
1.如果你用的GSM MODEM还把短信存在SIM卡里,那你最好换一家的产品,SIM卡有读写寿命用不了多久就会坏,而且读写速度很低,正规厂家的GSM MODEM短信收发都不经过SIM卡。
2.不管你检测SEND OK 也好,SUCCESS也好,固定间隔也好,每条短信间隔10秒以上较为稳妥。
 
嗯,我是发一条信息等回执或超过90秒(够长了吧?),然后发下一条的。
好像有一条AT指令可以设置短信存在哪儿?是不是AT+CNMI=?什么的。我设的是AT+CNMI=2,1,1,1,0,0。
“死掉”的现象是看不到收到的信息。就是CommReceiveData收到的信息,包括AT指令。比如发“AT+CMGS=39”,能看到这条AT指令以及它的回复信息例如“OK”什么的,什么都没有。
 
maxim88说的有道理,可能成功时发送间隔小于10秒了?
 
是的,用at指令是可以指定短信存储位置的。不过你的死机不应该是发送间隔时间的问题,我的短信程序都是一直发送的没有任何问题,但是需要你读到cmgs的回应。另外如果你收了后不删除,也不会死的,只是短信中心不会在给你下发消息了。所以需要你自己处理读取后的信息cmgd。
 
请问haogui0,应该怎样处理?我是读到cmgs的返回信息“ok”才发下一条的。我把cmgd的信息处理,包括写数据库都放在CommReceiveData事件里做的,会影响短信收发吗?每次出现此问题,都得重启程序,有时还得重启机器才行。:(
 
应该说你每次都是读到cmgs的返回ok才继续发下一条的,处理流程上应该不会有问题,所以应该是你的程序有问题。另,你应该在读取到新信息后,就应该cmgd该信息,并进行相关的处理了(写数据库)。
 
AT+CMGW Write SMS message to memory(向SIM内存中写入待发的短消息)
AT+CMSS Send SMS message from storage(从SIM内存中发送短消息)
AT+CNMI New SMS message indications(显示新收到的短消息)
AT+CPMS Preferred SMS message storage(选择短消息内存)
 
我做的怎么都没遇到这种情况,会不会是Modem坏了,俺有这方面的资料和自已编写的源代码,可以交流 QQ:13859908
 
to abigfish:
我的email:onlyyou0920@163.com,否给我发一份啊??
 
我也没问题啊,我8秒发一条
 
后退
顶部