程序是按照龚建伟老师的例程写的,好简单,发送编辑框的关联量是m_strEditTXData,接收编辑框的关联量是m_strEditRXData。望大虾帮忙!
 void CSCommTestDlg::OnComm() 
{
// 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);
  m_strEditRXData += strtemp;
}
}   
UpdateData(FALSE);
}void CSCommTestDlg::OnButtonManualsend() 
{
// TODO: Add your control notification handler code here
UpdateData(TRUE);
    m_ctrlComm.SetOutput(COleVariant(m_strEditTXData));
}

解决方案 »

  1.   

     串口初始化如下:       
            m_ctrlComm.SetCommPort(1);//选择com1
    m_ctrlComm.SetInputMode(1);//输入方式为二进制
    m_ctrlComm.SetInBufferSize(1024);
    m_ctrlComm.SetOutBufferSize(512);
    m_ctrlComm.SetSettings("9600,n,8,1");
    if(!m_ctrlComm.GetPortOpen())
    m_ctrlComm.SetPortOpen(TRUE);
        m_ctrlComm.SetRThreshold(1);
    m_ctrlComm.SetInputLen(0);
    m_ctrlComm.GetInput();
      

  2.   

    m_strEditTXData 和  m_strEditRXData的定义类型发出来看看
      

  3.   

    你要不把代码发给我看看,不然真看不出来,看这语法都是对的,我以前也写过,没什么问题,可以的话发[email protected]
      

  4.   

    初始化里m_ctrlComm.GetInput();逗掉
      

  5.   

    我估计是你串口没关的缘故,你在初始化之前加
    if(m_ctrlComm.GetPortOpen())
    m_ctrlComm.SetPortOpen(FALSE);
      

  6.   

    if(m_ctrlComm.GetPortOpen())
    m_ctrlComm.SetPortOpen(FALSE);
        m_ctrlComm.SetCommPort(1);//选择com1
    m_ctrlComm.SetInputMode(1);//输入方式为二进制
    m_ctrlComm.SetInBufferSize(1024);
    m_ctrlComm.SetOutBufferSize(512);
    m_ctrlComm.SetSettings("9600,n,8,1");
    if(!m_ctrlComm.GetPortOpen())
    m_ctrlComm.SetPortOpen(TRUE);
        m_ctrlComm.SetRThreshold(1);
    m_ctrlComm.SetInputLen(0);
    m_ctrlComm.GetInput();//
    我这里已经可以显示了
      

  7.   

    你用个测试工具看看 m_ctrlComm.SetCommPort(1);//选择com1 
    ,确定你的电脑 com1 能不能用。也许你的电脑只可以用com3或者com2,com4呢
      

  8.   

    我的com1是能用,而且我的电脑就只有com1。
      

  9.   

    m_strEditRXData += strtemp;
    楼主,调出来了吗。我的这句话总出问题,我是严格按照书上写的,可以帮忙指导下吗,不知道是哪里出现的问题, 并且我也看到上面说m_strEditRXData是cstring的,为什么我的错误说他们类型不统一。m_strEditRXData 是不是需要在哪里定义下啊?