tsl5201 2013-12-14 10:04 采纳率: 0%
浏览 7002

VS2010 MFC 的MSCOMM 控件 的Get_Input()函数读取不到缓存中的数据

各位高手好,小弟在使用VS2010 MFC 的MSCOMM 控件时出现了一个问题:
就是在OnComm函数里调用的Get_Input()函数读取不到缓存中的数据,经过验证,发现当接收区缓存数据不为0时程序能触发OnComm消息,可是当程序运行到Get_Input()函数时,OnComm()函数仿佛就直接从Get_Input()函数返回了,后面的代码也没有运行。同时,由于Get_Input()函数没有读取到缓存中的数据,因此即便我一次只给接收缓存发一个数据,程序也会不断调用OnComm()函数。请问可能的原因是什么?
初始化代码如下:
m_MSComm.Create(NULL,0,CRect(0,0,0,0),this,IDC_MSCOMM1);
if(m_MSComm.get_PortOpen())
m_MSComm.put_PortOpen(FALSE);
m_MSComm.put_CommPort(15); //choose port 3
CString str;
if(!m_MSComm.get_PortOpen()){
m_MSComm.put_PortOpen(TRUE);

}
else
AfxMessageBox("cannot open serial port!");

                  m_MSComm.put_InBufferCount(0);
        m_MSComm.put_OutBufferCount(0);
        m_MSComm.put_Settings("9600,n,8,1");  


        m_MSComm.put_InputMode(1);  
        m_MSComm.put_RThreshold(1); 
        m_MSComm.put_InputLen(0);

OnComm函数代码如下
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048];
CString strtemp;
CString str;
if(m_MSComm.get_CommEvent()==2)
{
variant_inp = m_MSComm.get_Input();
m_MSComm.put_InBufferCount(0);
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);
str+=strtemp;
}

    m_MSComm.put_InBufferCount(0);
    MessageBox(str);

}
  • 写回答

9条回答 默认 最新

  • YvanY 2014-11-07 13:26
    关注

    您好,请问这个问题你解决了吗?

    我出现了一个问题,就是我单片机一次发送一个数据,然后用一下代码
    if(m_MSComm.get_CommEvent()==2)
    {
    variant_inp = m_MSComm.get_Input();
    m_MSComm.put_InBufferCount(0);
    safearray_inp = variant_inp;
    len = safearray_inp.GetOneDimSize();
    for(k=0;k<len;k++){
    safearray_inp.GetElement(&k,rxdata+k);
    }

    这个variant_inp 会一次接受到两个一样的数据。 我是单步调试的,在单片机调试发送一个1, 然后variant_inp 这个参数里面会接受到两个1.
    您能解决这个吗?

    评论

报告相同问题?

悬赏问题

  • ¥30 求一段fortran代码用IVF编译运行的结果
  • ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
  • ¥15 lammps拉伸应力应变曲线分析
  • ¥15 C++ 头文件/宏冲突问题解决
  • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
  • ¥50 安卓adb backup备份子用户应用数据失败
  • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
  • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
  • ¥30 python代码,帮调试,帮帮忙吧
  • ¥15 #MATLAB仿真#车辆换道路径规划