快快快~~~~~~~~~我想一定能实现的
因为我有一个收发短讯的.ocx 就已实现上面的功能,不过,这个.ocx使用受到限制,所以想自己写....分不问题
 欢迎您:qiuanhong
 专家分:1982
 可用分:2111

解决方案 »

  1.   

    直接通过串口使用PDU与手机通讯,不要使用驱动程序
    手机收到短信息的时候,就会从串口发出相应的数据(消息),
    如果使用驱动程序,只能是程序一直去读取手机的状态。
    或者可以使用HOOK技术,来截获串口的数据,只要截获到有新短消息的
    时候就可以了
      

  2.   

    +CMTI的设置见GSM规范的07.05, 设置后,新的消息到来,会有一个AT指令,如
    +CMTI: 2(具体跟你的设置有关),其中的2就是新的消息的存储序列号,然后用+CMGR指令读取即可!
    有问题再联系。
      

  3.   

    刚刚试了一下,设置
    AT+CNMI=1,1,0,0,1
    AT+CSMS=1然后有新信息到来时,会接收到
    +CMTI:"SM",INDEX(信息存储位置)然后用
    AT+CMGR=INDEX(信息存储位置) 读取信息就可以楼上兄弟 lancexu(阿洋) 说得也很有道理。
      

  4.   

    监听你的pc串口,有新消息来时,会收到cnmi:。。index。
      

  5.   

    对此问题的总结:
       1.设置短消息到达自动提示: 设置短消息到达提示当短消息被接收,将获取指令: +CMTI:"SM",INDEX(信息存储位置) 
    AT+CNMI=1,1,0,0,1(); 
       2.获取短消息内容(Once more),假设INDEX=8。 
    AT+CMGR=8 
    就可以得到一种"实时"的效果了
    提出问题:
      要是正在发送的过程中,有新的短讯进来时,该怎么处理?这咱问题比较难调试。望大家继续发表自己的见解,谢谢!!
      

  6.   

    其实串口操作有个底层的设置
    在windows的操作系统下用vc开发有关串口的东西
    设置:
    typedef struct _DCB { 
      DWORD DCBlength;           // sizeof(DCB) 
      DWORD BaudRate;            // current baud rate 
      DWORD fBinary: 1;          // binary mode, no EOF check 
      DWORD fParity: 1;          // enable parity checking 
      DWORD fOutxCtsFlow:1;      // CTS output flow control 
      DWORD fOutxDsrFlow:1;      // DSR output flow control 
      DWORD fDtrControl:2;       // DTR flow control type 
      DWORD fDsrSensitivity:1;   // DSR sensitivity 
      DWORD fTXContinueOnXoff:1; // XOFF continues Tx 
      DWORD fOutX: 1;          // XON/XOFF out flow control 
      DWORD fInX: 1;           // XON/XOFF in flow control 
      DWORD fErrorChar: 1;     // enable error replacement 
      DWORD fNull: 1;          // enable null stripping 
      DWORD fRtsControl:2;     // RTS flow control 
      DWORD fAbortOnError:1;   // abort on error 
      DWORD fDummy2:17;        // reserved 
      WORD wReserved;          // not currently used 
      WORD XonLim;             // transmit XON threshold 
      WORD XoffLim;            // transmit XOFF threshold 
      BYTE ByteSize;           // number of bits/byte, 4-8 
      BYTE Parity;             // 0-4=no,odd,even,,space 
      BYTE StopBits;           // 0,1,2 = 1, 1.5, 2 
      char XonChar;            // Tx and Rx XON character 
      char XoffChar;           // Tx and Rx XOFF character 
      char ErrorChar;          // error replacement character 
      char EofChar;            // end of input character 
      char EvtChar;            // received event character 
      WORD wReserved1;         // reserved; do not use 
    } DCB; 
    其中:BYTE Parity;             // 0-4=no,odd,even,,space 
    的设置方式可以实现你的想法。
    当串口有数据的时候,触发事件
      

  7.   

    不好意思,刚才弄错了!
    BYTE Parity; 
    只受校验结果的影响。
      

  8.   

    还有,应该是SETCOMMMASK
    的EV BREAK
    事件影响。
      

  9.   

    主题问题基本搞定了TO:quengzi(code) 
    这些事件都已经指定了,我感觉用事件来等待数据的读、写等各种操作,然后通过消息进行处理还是很好的处理方式
    谢谢你!
      

  10.   

    如果在发送方设置了:AT+CSMP=
    在收到消息时就是+CMT的前缀,没有设置,就是+CMTI的前缀