关于VS2010与mscomm控件的怨念,紧急求助。。 本帖最后由 ohday 于 2010-12-05 21:02:50 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 和VC6的差不多啊会不会是你mscomm32.ocx没注册,用regsvr32 mscomm32.ocx注册一下 没有用过2010!是不是你手动修改了什么?要不,你将clw文件删除后,重新创建看看? 不知道回复的是不是太晚了。可能是用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("发送内容")); 那样添加控件非常不好...建议直接从项目里生成一个MCSomm的类。作为初学者今天找添加这个控件的方法快找了一下午了 为什么不用NetFrame下的SerailPort呢, 微软从VS2008开始提供的新串口控件。 楼主你的串口根本没打开啊,m_comm.get_PortOpen()是不是应该改成m_comm.put_PortOpen(TRUE)啊…… 是不是用USB转串口的?应该是它驱动问题.安装最新驱动应该可以了.http://www.prolific.com.tw/support/files//IO%20Cable/PL-2303/Drivers%20-%20Generic/Windows/allinone/PL2303_Prolific_DriverInstaller_v1417.zip 不知道我有没有来得更晚,我的方法是: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()解决! 现在2012年3月了,我也遇到这个问题,mscomm可以发送数据,但就是触发不了OnComm,用了14楼的方法,行了,激动。所以十分感谢NS13066和其他童鞋。你们的帖没有晚,因为后面还可能有很多人遇到同样的问题。 链接中的方法可以用:http://wenku.baidu.com/view/6735a21cb7360b4c2e3f64c6.html 我也遇到和楼主一样的问题了,用14楼的方法能解决,主要原因是Oncomm事件没有触发,要在.cpp文件中手动添加映射事件,并且在.h头文件中申明该映射事件。 有谁知道广州信景科技,信景网络通原理啊 请教各位大大关于WriteProcessMemory写入数据格式 MFC对话框问题 ==char类型问题? 怎样改变AppWizard生成的窗口的大小 菜鸟问题,显示主界面,在线等 应聘的时候,人家问你为什么要离开以前公司,应该怎么回答比较好? 一个俄罗斯方块的部分代码不懂,请教. 为什么修改对话框的类名后,创建无模式对话框会失败? 两个关于API地问题(50分那) VC中的OpenGL制作动画 createwindows返回值为0,GetLastError结果为1407,不知道怎么解决,求帮助
会不会是你mscomm32.ocx没注册,用regsvr32 mscomm32.ocx注册一下
是不是你手动修改了什么?
要不,你将clw文件删除后,重新创建看看?
可能是用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("发送内容"));
不知道我有没有来得更晚,我的方法是: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()
解决!