我手上有个motorola的模块,通过串口用来发报警信息.请问用如何VB写程序.请给出源码!!!!AT+CA短息的信息
应用举例
PDU模式下发送中英文短消息
首先将短信息格式设为PDU 模式:AT+CMGF=0
设置短消息服务中心地址:AT+CSCA=”+86138XXXXXXXX”,145
发送:AT+CMGS= YYY [CR] ;其中YYY 为PDU 的十进制长度
收到[>]响应后再发送
[PDU][ctrl-Z]
[PDU]数据单元格式定义为:
以下例子发送“你好”到13912345678
发送数据是:你好
Unicode译码为:4F60597D 
AT+CMGS=019 //15(PDU 规约头固定长度15 字节)+4(报文长度4 个字节)
> 0011000D91683119325476F8000801044F60597D [ctrl-Z]
00 //为SCA预留
11 // FO 设置PDU 类型
00 // MR 发送参考号
0D //DA 目的号码长度
91 //DA 目的号码类型
68 //DA 中国的区号
3119325476F8 //DA 目的号码编码
00 // PID 发送方式
08 //DCS 编码模式
01 //VP 有效期
PDU 中用户数据前的PDU 头的长度是15 字节
04 //UDL 数据长度
4F60597D //UD 数据内容Unicode 译码例子中目的号码是一种内存编码方式,将每两位数据位置互换,余下最后单位的补F
如13912345678 编码为3119325476F8
用户使用PDU 模式发送中文短消息时只需按照上述例子,改变TPDU 的十进制长度、手机
号码编码、报文长度和报文内容Unicode 译码即可。

解决方案 »

  1.   

    请写个程序把! 
    mndsoft(枕善居(http://www.mndsoft.com/) ,看见你的回复等于没说,我很生气后果很严重!!!
      

  2.   

    用comm控件,然后逐条发AT指令就可以了
      

  3.   

    API函数啊?
    有sleep()可以延时的!
      

  4.   

    手机或gsm猫是有“反应时间”的
    如楼上所述,用sleep就可以了在代码顶部加:
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
    在发指令行间加:
    Sleep(1000)'单位毫秒,这个表示延时一秒
      

  5.   

    呵呵,摘取一段我写的一段代码,楼主莫生气啊。
    Private Sub Command5_Click()
     Dim sendPDU1 As String, sendPDU2 As String, sUD As String
     Dim Re_SMSinfo As String
     
     If statuGSM = False Then
        MsgBox "没有建立连接,请先连接设备!", vbCritical, "提示"
        Exit Sub
     End If
     
     '00使用SIM卡内短信中心号码
     sendPDU1 = "0011"
     
     If Check1.Value Then
      '请求状态报告
       sendPDU1 = "0031"
     End If
     
     If Check2.Value Then
            
        sendPDU2 = "0010"
     Else   '中文免提
        sendPDU2 = "0018"
     End If
     
     If ChcekGB(Text4) > 0 Then
        sUD = GBChr2UCS(Text4)
        If Check2.Value Then
           sendPDU2 = "0018"  '中文免提
        Else
           sendPDU2 = "0008"
        End If
     Else
        sUD = Encode7bit(Text4)
        If Check2.Value Then
           sendPDU2 = "0010"  '英文免提
        Else
           sendPDU2 = "0000"
        End If
     End If
     '81  不用+,91 带+
     'Screen.MousePointer = 11
     Text6 = sendPDU1 & "00" & "0" & Hex(Len(Text5)) & "81" & SetTelcode(Text5) & sendPDU2 & "A7" & sUD
     Call SendAT("AT+CMGS=" & CStr((Len(Text6) - 2) / 2), 5)
     Pause 0.3
     Re_SMSinfo = SendAT(Text6 & Chr(26), 5)
     
     '发送成功
     'Pause 0.1
     If (InStr(Re_SMSinfo, "+CMGS") > 0 And InStr(Re_SMSinfo, "OK") > 0) Then
        Text6 = "短信发送成功!"
        fBeep 659, 300
        fBeep 523, 300
        fBeep 587, 300
        'Screen.MousePointer = 0
        'Exit Sub
     End If '发送失败
     If (InStr(Re_SMSinfo, "+CMS ERROR") > 0) Then
            'Text2 = Text2 & DataCOM32
            't1 = Split(DataCOM32, " ")(0)
            't2 = Split(DataCOM32, " ")(1)
            'Text2 = Text2 & ConvertPDU(ReadSMS(Mid(Left(t2, 4), 2, 2), Val(Trim(Mid(DataCOM32, InStr(DataCOM32, ",") + 1, 3))), True))
         Text6 = "短信发送失败!"
         'Screen.MousePointer = 0
     End If
    End Sub
      

  6.   


    下面这样不行吗?
    senddata(aa)'假设senddata是发送函数,aa,bb,cc是指令字符串
    sleep (2000)
    senddata(bb)
    sleep (2000)
    senddata(cc)
    sleep (2000)
      

  7.   

    用sleep只成功一次,不太可靠,有其他方法吗?
    unicode怎么编码,以PDU发中文短信??????
      

  8.   

    呵呵,多睡会就好了~~加你qq了,请通过
    关于pdu编码,在csdn文档里有vb代码和编码算法
      

  9.   

    关于pdu编码,在csdn文档里有vb代码和编码算法
    请问在哪,给个连接!!!!
      

  10.   

    sleep,不行的,执行该函数,会使系统短暂停滞,会影响数据发送的。
    试试这个函数:
    '*/-------------------------------------------------------------
    '*/过 程 名:Pause
    '*/功    能:暂停函数,延时用
    '*/返 回 值:无
    '*/参    数:Dauer 延时值
    '*/建立日期:2004-12-07 16:00
    '*/修改日期:
    '*/-------------------------------------------------------------
    Sub Pause(Dauer)
        Dim start As Long
        start = Timer
        Do While Timer < start + Dauer
            DoEvents
        Loop
    End Sub
      

  11.   

    to  goodhappyer:
    系统没有sleep,这个是apito 楼上:
    sleep,不行的,执行该函数,会使系统短暂停滞,会影响数据发送的。
    =========================================
    你试了不行吗?sleep的目的是为了给串口设备“反应时间”,系统即使停滞也没关系啊to 楼主:
    http://www.enet.com.cn/eschool/inforcenter/A20040525311257.html
    csdn的我打不开了,这个是转的
      

  12.   

    Public Function ascg(smsg As String) As String
    'PDU编码,发送的中文内容
        Dim si, sb As Integer
        Dim stmp As Integer
        Dim stemp As String
        sb = Len(smsg)
        ascg = ""
        For si = 1 To sb
         stmp = AscW(Mid(smsg, si, 1))
         If Abs(stmp) < 127 Then
            stemp = "00" & Hex(stmp)
         Else
            stemp = Hex(stmp)
         End If
         ascg = ascg & stemp
        Next si
        ascg = Trim(ascg)
     End Function我用了这个函数,那个好像不行!非常写写你!!!!