• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

MSComm编程的一个误解

发布: 2007-7-01 20:40 | 作者: admin | 来源: | 查看: 13次 | 进入软件测试论坛讨论

领测软件测试网

以前曾看到一篇文章,说如果使用一般的视而不使用CFormView或者Dialog,就无法使用MSComm控件。但事实并不是这么回事。如同标准控件一样,对于ActiveX控件也可以使用Create函数,从而在运行时创建控件,并且实现所有功能。

下面介绍步骤:

1>使用resource symbols加入IDC_MSCOMM

2>在设置串口时加入CReate

void Init_Com()
{
 m_Serial.Create("windowname",0,
  CRect(0,0,0,0),this,IDC_MSCOMM);
 // 指定串口号
 m_Serial.SetCommPort(2);

 // 关闭该串口
 if(m_Serial.GetPortOpen())
  m_Serial.SetPortOpen(FALSE);

 // 通信参数设置
 m_Serial.SetSettings("9600,N,8,1");
 // 指定接收缓冲区大小
 m_Serial.SetInBufferSize(1024);
 // 清空接收缓冲区
 m_Serial.SetInBufferCount(0);
 // 设置数据获取方式
 m_Serial.SetInputMode(1);
 //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件
 m_Serial.SetRThreshold(1);
 //设置当前接收区数据长度为0
 m_Serial.SetInputLen(0);

 if( !m_Serial.GetPortOpen())
  m_Serial.SetPortOpen(TRUE);//打开串口
 else
  AfxMessageBox("cannot open serial port");

 m_Serial.GetInput();//先预读缓冲区以清除残留数据
}

3>发送函数

void Send_Data()
{
 m_Serial.SetOutput(COleVariant("got"));
}

4>加入对数据接收和错误消息的映射。须手工进行:

在头文件中加入
 afx_msg void OnComm();

在实现文件中加入
BEGIN_EVENTSINK_MAP(CxxxView, CView)
    //{{AFX_EVENTSINK_MAP(CTestCommView)
 ON_EVENT(CxxxView, IDC_MSCOMM, 1 /* OnComm */, OnComm, VTS_NONE)
 //}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()

void CxxxView::OnComm()
{
 // TODO: Add your control notification handler code here
 AfxMessageBox("got");
 
}

大功告成!


延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网