VC++环境 用MSComm控件实现计算机与GSM模块串口通信,该怎么处理

VC++环境 用MSComm控件实现计算机与GSM模块串口通信
用MSComm控件实现的关于GSM与计算机串口通信的部分程序 程序执行结果是没结果 什么反应都木有 

receivestr是全局变量

CString receivestr;

void CGSMli2Dlg::OnButton2() //发送按钮
{
 // TODO: Add your control notification handler code here
 UpdateData(true);
 CString sendphone;
 receivestr="";
 m_ctrlComm.SetOutput(COleVariant("AT+CMGF=1\r"));
  if(receivestr.Find("OK")>0)
 {
  m_ctrlComm.SetOutput(COleVarian("AT+CMGS="+sendphone+"\r"));
  if(receivestr.FindOneOf(">")>=0)
  {
  m_ctrlComm.SetOutput(COleVariant(m_strsend+"\x1A"));
  if(receivestr.Find("OK")>=0)
  MessageBox("短信发送成功!");
  }
 } 
}



void CGSMli2Dlg::OnOnCommMscomm1() 
{
 // TODO: Add your control notification handler code here
 VARIANT variant_inp;
 COleSafeArray safearray_inp;
 long len,k;
 BYTE rxdata[2048];
 CString strtemp;
 if(m_ctrlComm.GetCommEvent()==2)
 {
  variant_inp=m_ctrlComm.GetInput();
  safearray_inp=variant_inp;
  len=safearray_inp.GetOneDimSize();
  for(k=0;k<len;k++)
  safearray_inp.GetElement(&k,rxdata+k);
  for(k=0;k<len;k++)
  {
  BYTE bt=*(char*)(rxdata+k);
  strtemp.Format("%c",bt);
  receivestr+=strtemp;
  }
 }
}


大家帮我看看问题出在哪儿 谢谢  


------解决方案--------------------
1.首先保证硬件连接正常(这个必须保证OK)
2.用串口测试工具测试你的GSM是否和测试工具能通信,不能则查找GSM的原因或发送格式原因
3.以上没有问题了,那就是你的程序问题:接收函数没有错,大家都这么用.你单步调试看看发送数据是否为你要发的数据,这个很重要(也许是你处理发送字符时的错误)。
4.最后就检查下变量是否都正确
------解决方案--------------------
首先用 串口工具 比如 串口大师 发指令给 GSM模块,验证正确与否,再写程式
------解决方案--------------------
你在OnButton2中读取receivestr,而receivestr在OnOnCommMscomm1中修改。

你执行OnButton2的时候,OnOnCommMscomm1根本没有机会执行到,知道问题了吧?
编程不是像你这么简单的!

------解决方案--------------------
就算你的OnButton2和OnOnCommMscomm1可同时运行,你如何保证
m_ctrlComm.SetOutput(COleVariant("AT+CMGF=1\r"));之后,OnOnCommMscomm1一定执行到了,并且
receivestr得到的返回值?

你这段代码还有很多工作要做,你完全没有流程控制,因为你是应答式的。