smscontrol 控件发送信息,偶尔重复发送,求各位老大救命啊,vb中

czj82140886 2010-04-08 08:10:15
smscontrol 控件发送信息,偶尔重复发送,本来这个问题不大,但是我经过二次开发,改成了空中充值的软件,就是发送信息,充值话费,这个问题就严重了,重复发送等于重复充值啊。
发送事件代码如下:
Private Sub Smscontrol1_OnSndMsg()
Dim sndid As Long 'send out index
sndid = Smscontrol1.GetIndexOfLastSnd()

Do
If sndmsg(sndstart).sndid = sndid Then
'从数组中删除该条,表示该条已经成功发送到GSM网络
sndmsg(sndstart).sndid = -1
sndstart = sndstart + 1
If sndstart = 10000 Then
sndstart = 0
End If
Exit Do

End If

If sndstart = sndend Then '已经搜索完了数组
Exit Do
End If

Loop
...全文
36 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
cqq_chen 2010-04-13
  • 打赏
  • 举报
回复
直接用mscomm来实现了
移动短消息开发

SmsControl控件用于移动短消息的发送和接受,具有1、调用简单 2、收发可靠 3、不依赖具体硬件设备 4、自动动态调整硬件参数 ,零配置等特点。

安装
安 Modem硬件厂商的说明书进行收发短消息Modem的安装,安装成功之后即可用SmsControl控件进行移动短消息的发送和接收。


开发
SmsControl控件经过严格设计,其特点为:1、调用简单,仅3个函数调用,2个事件消息,简化了客户端的设计。2、收发可靠,所有消息极力发送发送失败的消息会在两天内持续发送发送成功失败事件通知客户端;在Modem出现硬件故障不能启动的情况下照常接收发送任务,Modem启动后开始实际的发送,在出现硬件或操作系统故障的情况下保证消息的不丢失。3、可以支持广泛的移动短消息收发设备。4、随着移动短消息收发设备状态的变化SmsControl控件自动调整其收发参数。




开发步骤(以VB6为例):

1. 将SmsControl控件加入用户的项目去。
2. 调用SmsControl控件的 Startup() 方法启动移动短消息收发设备。

Dim sms as new SmsControl
Dim Ret as Long
Ret = sms. Startup()
If Ret <= 0 then
MsgBox(“启动失败”)
End if

3. 调用SmsControl控件的 SendMsg() 方法发送消息:

Dim id as Long
id=SendMsg(类型,用户号,对方号码,消息,希望发送的时间)

参数说明:
类型:整形值 0~7为优先发送消息,0优先级最高 8为普通消息 9为定时消息,此参数为9则必须提供“希望发送的时间“
用户号:字符串,用户自定义数据,20字节以内
对方号码:手机号字符串,支持单个手机号,手机号列表,号段。
单个手机号:13612345678
手机号列表:
13612345678 133125689 1359876325
13612345678;133125689;1359876325
13612345678,133125689,1359876325
号段:
13612345670-13612345680
13612345670:13612345680


消息:待发字符串 如“类型“为9定时消息则必须提供此参数
希望发送的时间:字符串
20040229
20040229153010

返回值:
-1 类型错误
-3 用户号超长
-4 希望发送的时间错误
-5 对方号码错误
-6 消息长度为0或超过了70个字符(每个字母,汉字,数字,符号均算一个字符)
-7 消息长度为0或超过了70个字符(每个字母,汉字,数字,符号均算一个字符)
-8 希望发送的时间为过去的时间
返回值大于0,提交成功,正待发送,返回值为此消息的唯一 ID 号,可用于在MsgSended 事件确定此消息最终是否已发送


4. 调用SmsControl控件的 Stop() 方法停止收发任务:

Ret=sms.Stop()


5. 响应SmsControl控件的 MsgSended 事件, 确定消息最终是否已发送

OnMsgSended(ID号,类型)

参数说明:
ID号 消息发送时的唯一 ID 号,由SendMsg() 返回
类型 1 已发送,0 发送失败


6. 响应SmsControl控件的 MsgReceived 事件, 接收消息

On MsgReceived(发方手机号,消息,收到时间,内存类型,内存索引)

参数说明:
发方手机号 向本号码发送消息的手机号
消息 收到的消息
收到时间 收到消息的时间 如:20040301153218
内存类型
内存索引



7. 其他属性:
dTotalCommMsgs 自上次Startup() 以来总共的普通消息数
dTotalSendedCommMsgs 自上次Startup() 以来总共的已发普通消息数
dTotalTimerMsgs 自上次Startup() 以来总共的定时消息数
dTotalSendedTimerMsgs 自上次Startup() 以来总共的已发定时消息数
dTotalUrgencyMsgs 自上次Startup() 以来总共的优先消息数
dTotalSendedUrgencyMsgs 自上次Startup() 以来总共的已发优先消息数
dTotalReceivedMsgs 自上次Startup() 以来总共的已收消息数
IsOpened 0 – 设备未启动, 1 -设备已启动


1,本控件开发经过电信级测试
2,该控件本身不会损害您的任何设备或软件
3,未得到控件拥有者同意,请勿用于商业目的
4,我们不对您使用该控件造成的任何损失负责
5,使用过程有问题可以和我们联系
6,要取得新版本请和我们联系
7,如果您使用该控件开发软件,请将你的大作告之我们
8,最近将有我们的新东西和大家分享

QQ:32619621 Msn:markchen080@hotmail.com EMAIL:MARK080@163.COM
2004.3.6

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧