是这样: 我想通过串口给设备发送几条指令如下:
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 其它的好象没有响应,请各位大侠帮忙。
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 其它的好象没有响应,请各位大侠帮忙。
再试试看,应该可以的!
老兄在做手机短信吧,我也是,多交流啊 QQ:8126120
::Sleep(5000);
才解决问题
前面的几条指令没有问题了 谢谢你
不过我怎么发ctrl+a ??
我刚刚开始做这个 不怎么懂
ctrl+a 是做什么的
我的好象最后的ctrl+z没有发出去
应该怎么发这个指令?
通过串口收发短消息(上) (原创)
http://www.csdn.net/develop/author/netauthor/bhw98/Demo源码
http://www.csdn.net/develop/author/bhw98/SmsTest.zip看过没有??
其他的指令都返回ok
那么我的at+cmgs=字符串的格式是什么
我发送之后总是得到 cms error 500 是什么原因呢?
// 发送短消息
// 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;
}