本帖最后由 ohday 于 2010-12-05 21:02:50 编辑

解决方案 »

  1.   

    和VC6的差不多啊
    会不会是你mscomm32.ocx没注册,用regsvr32 mscomm32.ocx注册一下
      

  2.   

    没有用过2010!
    是不是你手动修改了什么?
    要不,你将clw文件删除后,重新创建看看?
      

  3.   

    不知道回复的是不是太晚了。
    可能是用vs2010开发MFC的人很少。
    哥们,不用类向导关联变量,直接用鼠标右键点击com控件,选择“添加变量”
    具体的函数和vc6.0不大一样
              if(this->COM.get_PortOpen())
    { this->COM.put_PortOpen(FALSE);
    }

    this->COM.put__CommPort(1);
    if(!this->COM.get_PortOpen())
    {
    this->COM.put_PortOpen(TRUE);

    }
    else
    {
    MessageBox("不能打开串口");
    } this->COM.put_Settings("9600,n,8,1");
    this->COM.put_InputMode(1);
    this->COM.get_Input();
    this->COM.put_InputLen(0);
    this->COM.put_RThreshold(1);//发送指令
             this->COM.put_Output(COleVariant("发送内容"));
      

  4.   

    那样添加控件非常不好...建议直接从项目里生成一个MCSomm的类。作为初学者今天找添加这个控件的方法快找了一下午了
      

  5.   

    为什么不用NetFrame下的SerailPort呢, 微软从VS2008开始提供的新串口控件。 
      

  6.   

    楼主你的串口根本没打开啊,m_comm.get_PortOpen()是不是应该改成m_comm.put_PortOpen(TRUE)啊……
      

  7.   

    是不是用USB转串口的?应该是它驱动问题.安装最新驱动应该可以了.http://www.prolific.com.tw/support/files//IO%20Cable/PL-2303/Drivers%20-%20Generic/Windows/allinone/PL2303_Prolific_DriverInstaller_v1417.zip
      

  8.   


    不知道我有没有来得更晚,我的方法是:VS2010中在CPP代码中手动加入映射ACTIVEX事件:BEGIN_EVENTSINK_MAP(CControlDisplayView, CFormView)  ON_EVENT(CControlDisplayView,IDC_MSCOMM1  ,1,OnMscomm1,VTS_NONE)END_EVENTSINK_MAP()在H文件PROTECTED 定义
    DECLARE_EVENTSINK_MAP()
    在FORM界面选中MSCOMM控件,打开类向导,查看MSCOMM 的COMMAND有没有指定事件处理OnMscomm1()
    解决!
      

  9.   

    现在2012年3月了,我也遇到这个问题,mscomm可以发送数据,但就是触发不了OnComm,用了14楼的方法,行了,激动。所以十分感谢NS13066和其他童鞋。你们的帖没有晚,因为后面还可能有很多人遇到同样的问题。
      

  10.   

    链接中的方法可以用:http://wenku.baidu.com/view/6735a21cb7360b4c2e3f64c6.html
      

  11.   

    我也遇到和楼主一样的问题了,用14楼的方法能解决,主要原因是Oncomm事件没有触发,要在.cpp文件中手动添加映射事件,并且在.h头文件中申明该映射事件。