C++ Com 通讯 读数据 有关问题

C++ Com 通讯 读数据 问题
MEASRES();
OnCommMscomm1();//使用这个函数也不能在这个时候得到数据
tStr = ReadData(); //为什么这里总是得不到数据,请高手指点一下,谢谢!

执行其他命令的时候是正常的,执行这个电阻测试也是正常的,34401A能正确显示实际测量值,就是不能读出来,如果在另一个函数里面可以读取数据,但不能按照我需要的时候读出数据。小弟新手,谢谢高人指点。

//电阻测试
void CTestItem::MEASRES()
{
  m_CtrMsCom.put_Output(COleVariant("MEAS:RES? DEF,DEF\n"));
Sleep(500); 
}
//读数据并返回值
CString CTestItem::ReadData()
{
  UpdateData(TRUE);
CString TestValues = "";
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE数组';'
CString strtemp;
if(m_CtrMsCom.get_CommEvent()==2) //事件值为2表示接收缓冲区内有字符
{
variant_inp=m_CtrMsCom.get_Input(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
for(k=0;k<len;k++) //将数组转换为Cstring型变量
{
BYTE bt=*(char*)(rxdata+k); //字符型
strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放
TestValues += strtemp; //加入接收编辑框对应字符串  
}
}
return TestValues;
}

//这是在MSCOMM下的函数,可以读取,但不能在需要的时候读取。
void CTestItem::OnCommMscomm1()
{
UpdateData(TRUE);
CString TestValues = "";
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE数组
CString strtemp;
if(m_CtrMsCom.get_CommEvent()==2) //事件值为2表示接收缓冲区内有字符
{
variant_inp=m_CtrMsCom.get_Input(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组
for(k=0;k<len;k++) //将数组转换为Cstring型变量
{
BYTE bt=*(char*)(rxdata+k); //字符型
strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放
m_Str_RetrunData += strtemp; //加入接收编辑框对应字符串  
}
int i = m_Ctr_List_TestResult.GetItemCount() - 1;
m_Ctr_List_TestResult.SetItemText(i,4,m_Str_RetrunData);
}
UpdateData(FALSE);
}

------解决方案--------------------
单步跟踪一下吧
------解决方案--------------------
没用过这个函数;
我用的是writeFile/ReadFile系列
------解决方案--------------------
接受数据的时候,你可以多接收几次