是这样: 我想通过串口给设备发送几条指令如下:
WriteComm("at+cmgf=1\r\n", 11);
WriteComm("at+csdh=1\r\n", 11);
WriteComm("at+csmp=17,167,0,0\r\n",20);
如果在超级终端里面 我可以一条一条的键入 每条指令都会返回一个ok
可是 再我的程序中 我想通过一个按钮直接把这几条都发出去,发现却只成功发送了第一条指令 返回ok 其它的好象没有响应,请各位大侠帮忙。

解决方案 »

  1.   

    不在程序中加上适当的sleep
    再试试看,应该可以的!
    老兄在做手机短信吧,我也是,多交流啊 QQ:8126120
      

  2.   

    的确是需要sleep我用wavecom处理连续发送的时候
    ::Sleep(5000);
    才解决问题
      

  3.   

    楼上的兄弟 
    前面的几条指令没有问题了 谢谢你
    不过我怎么发ctrl+a ??
    我刚刚开始做这个 不怎么懂
      

  4.   

    strcat(pdu, "\x01a"); // 以Ctrl-Z结束
    ctrl+a 是做什么的
      

  5.   

    晕 是ctrl +z  我打错了 :)
      

  6.   

    mct1025(macuntao) 
    我的好象最后的ctrl+z没有发出去 
    应该怎么发这个指令?
      

  7.   

    通过串口收发短消息(下) (原创) 
    通过串口收发短消息(上) (原创) 
    http://www.csdn.net/develop/author/netauthor/bhw98/Demo源码
    http://www.csdn.net/develop/author/bhw98/SmsTest.zip看过没有??
      

  8.   

    错了 是 \x0la  加在你的PDU后面
      

  9.   

    我在发at+cmgs=的时候怎么总是返回error呢???
    其他的指令都返回ok
      

  10.   

    那个程序的发送短信语句有问题,至少在wavecom模块上是的周一上班的时候,我告诉你正确的发送程序
      

  11.   

    情问大家 假设我想给手机号码为13939030300发短信
    那么我的at+cmgs=字符串的格式是什么
    我发送之后总是得到 cms error 500  是什么原因呢?
      

  12.   

    0891 683108100005F 004 0D91 683119002687F 401F7102141416172231A00FF123456780616230000003954357611622436000000000100(中间不空,我是为了可读性)
      

  13.   

    把发送改为拼成一个at指令发送的
    // 发送短消息
    // pSrc: 源PDU参数指针
    BOOL gsmSendMessage(const SM_PARAM* pSrc)
    {
    int nPduLength; // PDU串长度
    unsigned char nSmscLength; // SMSC串长度
    int nLength; // 串口收到的数据长度
    char cmd[16]; // 命令串
    char pdu[512]; // PDU串
    char ans[128]; // 应答串
    char all[1024]; nPduLength = gsmEncodePdu(pSrc, pdu); // 根据PDU参数,编码PDU串
    strcat(pdu, "\x01a"); // 以Ctrl-Z结束 gsmString2Bytes(pdu, &nSmscLength, 2); // 取PDU串中的SMSC信息长度
    nSmscLength++; // 加上长度字节本身 // 命令中的长度,不包括SMSC信息长度,以数据字节计
    sprintf(cmd, "AT+CMGS=%d\r", nPduLength / 2 - nSmscLength); // 生成命令 TRACE("%s", cmd);
    TRACE("%s\n", pdu); //拼成一个AT发送指令
    strcpy(all,cmd);
    strcat(all,pdu);

    WriteComm(all, strlen(all)); // 先输出命令串 nLength = ReadComm(ans, 128); // 读应答数据 // 根据能否找到"+CMS ERROR"决定成功与否
    if(nLength > 0 && strncmp(ans, "+CMS ERROR", 10) != 0)
    {
    AfxMessageBox("短信发送成功!");
    return TRUE;
      } return FALSE;
    }
      

  14.   

    moble AT commands in program.