WEB开发网
开发学院软件开发VC 深入浅出VC++串口编程之短信应用开发 阅读

深入浅出VC++串口编程之短信应用开发

 2007-03-25 21:30:17 来源:WEB开发网   
核心提示: void CSMSControlDlg::OnSendButton(){// TODO: Add your control notification handler code here//获得用户输入CString desPhoneNum;CString smsContent;GetDlg
void CSMSControlDlg::OnSendButton()
{
 // TODO: Add your control notification handler code here
 //获得用户输入
 CString desPhoneNum;
 CString smsContent;
 GetDlgItemText(IDC_PHONENUM_EDIT,desPhoneNum);
 GetDlgItemText(IDC_SMSCONTENT_EDIT,smsContent);
 //填充SM_PARAM结构体内容
 SM_PARAM smParam;
 smParam = CreateSMPARAMStruct(desPhoneNum,smsContent);
 //发送短信息
 gsmSendMessage(smParam);
}

其中调用的gsmSendMessage函数体现了串口通信的核心内容,它按照第1节阐述的GSM模块发送短消息的串口控制流程进行短信的发送:

BOOL gsmSendMessage(const SM_PARAM *pSrc // pSrc: 源PDU参数指针)
{
 int nPduLength; // PDU串长度
 unsigned char nSmscLength; // SMSC串长度
 int nLength; // 串口收到的数据长度
 char cmd[16]; // 命令串
 char pdu[512]; // PDU串
                                                       char ans[128]; // 应答串
 nPduLength = gsmEncodePdu(pSrc, pdu); // 根据PDU参数,编码PDU串
 strcat(pdu, "x01a"); // 以Ctrl-Z结束
 gsmString2Bytes(pdu, &nSmscLength, 2); // 取PDU串中的SMSC信息长度
 nSmscLength++; // 加上长度字节本身
 // 命令中的长度,不包括SMSC信息长度,以数据字节计
 sprintf(cmd, "AT+CMGS=%d
", nPduLength / 2-nSmscLength); // 生成命令
 WriteComm(cmd, strlen(cmd)); // 先输出命令串
 nLength = ReadComm(ans, 128); // 读应答数据
 
 // 根据能否找到"
> "决定成功与否
 if (nLength == 4 && strncmp(ans, "
> ", 4) == 0)
 {
  WriteComm(pdu, strlen(pdu)); // 得到肯定回答,继续输出PDU串
  nLength = ReadComm(ans, 128); // 读应答数据
                                                                                     
  // 根据能否找到"+CMS ERROR"决定成功与否
  if (nLength > 0 && strncmp(ans, "+CMS ERROR", 10) != 0)
  {
   return TRUE;
  }
 }
 return FALSE;
}

上一页  1 2 3 4 5 6 7  下一页

Tags:深入浅出 VC 串口

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接