传奇之后 2016-10-16 15:30 采纳率: 0%
浏览 468

金笛手机短信c++开发,用ntsever模式,只能接收一次短信咋回事?

最近在做工业手机短信开发的项目,硬件是用的金迪短信猫,开发包是c++版的,开发中遇到了一个很怪的问题,只能接收一次短信,然后短信发过来再也收不到了,也不能查询短信的条数,就连查询sim卡的最大短信容量也不行,返回值是正确的,就是单步感觉会卡一下,后来我用返回错误描述看了一下,每次都是at指令超时;我去找厂家拿了demo的源代码,它的demo是可以正常接收发送的,我根据demo写了一个简单mfc框架的接收短信的测试程序,结果发现可以正常接收;我仔细对比了demo的初始化参数,和我的弄得一模一样,结果我的程序就是不能接收多次;测试了近百次,发现当我的程序设置异步模式的时候,一次都收不到短信,同步模式还可以收到一次,偶尔两次;我的测试程序写得特简单,都可以正常接收,但是是用消息机制实现的接收短信,而我的程序是用的while(1)循环实现的;后来我想是不是因为这个接收模式的问题,后来我把测试程序改成了while(1)实现接收短信,当我一点击按钮就开始无限循环接收短信,结果只能接收一次短信;这把我高兴惨了,估计问题就出现在死循环和消息机制的差异上,厂家demo也是用的消息机制实现短信接收的,我还发现在初始化函数中加载了金迪短信猫动态库,函数退出时需要先卸载动态库才不会报错,消息机制实现和循环接收到底有什么不同呢?后来我想可能是因为某些资源没释放,顺着这个猜想我去寻找了金迪动态库头文件里面的api说明,果然发现了一个closeCom函数,类似释放资源的,后来我就试了试,就是每次循环openCom,接受完短信后,closeCom调用,一跑程序果然行了,虽然还是不知道具体根本原因,但是终于解决了问题,花了我三天时间!用别人的动态库真难搞,想自己封装一个c++版的动态库,但是又非要用它的硬件,程序员真难做;希望有一天,短信开发也有流媒体开发directShow那种统一的接口,深入底层的代码;不过似乎不大可能!感觉说了好多废话,比较做短信开发的人不多,交流的人少,网上资源也少,有兴趣的欢迎和我交流!

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 使用C#,asp.net读取Excel文件并保存到Oracle数据库
    • ¥15 C# datagridview 单元格显示进度及值
    • ¥15 thinkphp6配合social login单点登录问题
    • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
    • ¥15 如何在scanpy上做差异基因和通路富集?
    • ¥20 关于#硬件工程#的问题,请各位专家解答!
    • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
    • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
    • ¥30 虚心请教几个问题,小生先有礼了
    • ¥30 截图中的mathematics程序转换成matlab