“通过串口收发短消息”的Q&A汇编
2006-07-21 11:13:04 来源:WEB开发网你的smstraffic类中的发送接收大循环中,是不是把所有收到的消息都放入消息队列后,然后执行删除程序啊?如果我是并发量很大的话,就是网关有很多短消息等着进入手机,读完所有短消息后,进行删除的过程中,因为短消息的排列顺序,而导致误删除呢(比如说我现在手机里有1-15条短消息,然后在我删除第一二条后,第三条自动填补为第一条,而新进来的短消息,16条排在了第三条,而被cancel掉呢?)我试过好象短消息的排列不是每次都一样啊?(在接收的时候,同一条短消息有时是14条,有时是第15条)这个怎么解决啊?
手机里消息都有一个物理序号,读出的时候带序号,删除也要根据序号删。"物理"二字很关键。这个序号相当于ID,无论它前面有没有删除、删除了多少消息,都不会变的。假如原来有1-15,删除了1和2,又来了一条消息,手机内部的软件有两种处理方式:有的放在第1条,有的则放在第16条,我都见过。其实,它愿意放到哪个空闲的地方都行。但无论怎样,不会引起混乱的,因为读出是什么序号,就删除什么序号的。在执行删除命令前,消息还是在原来那个地方,不会被后来的覆盖。
如果说网关有很多短消息等着进入手机,量很大,这种处理方式效率不高,因为AT+CMGL占用很长时间,这段时间手机无法从SMSC接收新消息。采用我说的"实时"接收方法比较好,消息来了直接传出来,不经过写入手机的过程。
我用Nokia 8210串口数据线,连上电脑的com1口,用SmsTest运行提示"没有发现MODEM",跟踪发现gsmInit()检测中串口发AT指令没有回应"OK"。按您的提示我安装了Nokia modem驱动程序,(WIN2000 server系统)虚拟出com3口的一个8210 MODEM设备,再次调用smsTest还是提示"没有发现MODEM"。但用串口线,手机能通过LogoManager手机管理软件进行相应的图片LOGO,短信发送操作。
更多精彩
赞助商链接