If Dx = 8 Then
 FromModem = FromModem & Form1.MSComm1.Input If InStr(FromModem, "REC UNREAD") <> 0 Then  Call Form1.OnComm
  Form1.MSComm1.InBufferCount = 0
  Sleep 40  Form1.MSComm1.Output = "AT+ZCMGDALL" & Chr(13) & Chr(10)  Me.Timer1.Interval = 2000
 End If
 Dx = 1
 Exit Sub我希望的是读取短信后,删掉该读取的短信,读取了第一条短信,其他短信的标识位也会变成"REC READ",就不能读取了,现在改成"REC UNREAD"再处理,再读取第2条短信,再删除第2条短信,这样一条一条处理。
现在这段代码好像是读取了一条短信,把所有短信都删了。
牛人们有什么好办法嘛?求解

解决方案 »

  1.   

    你把 MSComm1.InBufferCount 全清空了嘛.
      

  2.   

    变量记录短信索引的方法,这里改成Dim idea As IntegerForm1.MSComm1.Output = "AT+CMGD=" & idea & Chr(13) & Chr(10)怎么设定短信的索引,把索引赋给idea呢?这样应该是逐条读取删除了吧。
    来牛人帮看看,我不是学VB的,很多不会,牛人们帮忙指导一下,加班ing...
      

  3.   

    Dim nnnn As Integer
    MSComm1.Output = "AT+CMGL=" & """" & "nnnn" & """" & Chr(13) & Chr(10)
    Me.MSComm1.Output = "AT+CMGD=nnnn" & Chr(13) & Chr(10)大神看看我这样行么?写个循环?
    我想了下好像还是不行,比如我一次来了3条短信,处理了。我下次再来3条短信,又会从1开始计数。
    我怎么处理AT+CMGL=?之后 AT+CMGD=? 呢。一次来多少短信都是未知的,数据库里没有索引字段,我如果用一个变量作为索引,应该怎么实现呢?
      

  4.   


    1.缓冲区的字你取出后,就不在缓冲区了,下次你再取,缓冲区的数是剩下的或新进来的,等你全部取完后,一定时间内(超时),没有数据再来,你再去分析你接到的所有数据吧
    2.或者一次读取全部缓冲区,每次这样读取,一定时间内(超时),没有数据再来,你再去分析你接到的所有数据吧
    3.你应该用字符串收取,全收完,再转到TEXT中去,不然会乱码,除非你使用特殊手段避免乱码,和半字符切割。。
      

  5.   

    对,定式思维了,我不要去想索引,我直接截取短信号就可以了 截取CMGL: 1,"
    截图这里来删除就行了,呵呵,谢谢大家
      

  6.   

     VB中,去除一段字符中的回车应该怎么办? Text1中存在回车
    S = Len(Text1)/ 2