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条短信,这样一条一条处理。
现在这段代码好像是读取了一条短信,把所有短信都删了。
牛人们有什么好办法嘛?求解
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条短信,这样一条一条处理。
现在这段代码好像是读取了一条短信,把所有短信都删了。
牛人们有什么好办法嘛?求解
来牛人帮看看,我不是学VB的,很多不会,牛人们帮忙指导一下,加班ing...
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=? 呢。一次来多少短信都是未知的,数据库里没有索引字段,我如果用一个变量作为索引,应该怎么实现呢?
1.缓冲区的字你取出后,就不在缓冲区了,下次你再取,缓冲区的数是剩下的或新进来的,等你全部取完后,一定时间内(超时),没有数据再来,你再去分析你接到的所有数据吧
2.或者一次读取全部缓冲区,每次这样读取,一定时间内(超时),没有数据再来,你再去分析你接到的所有数据吧
3.你应该用字符串收取,全收完,再转到TEXT中去,不然会乱码,除非你使用特殊手段避免乱码,和半字符切割。。
截图这里来删除就行了,呵呵,谢谢大家
S = Len(Text1)/ 2