已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
免费的图析VC+6.0中使用mscomm串口控件东南大学计算机学院 杨全胜按下列图所示建立一个基于对话框的MFC程序 这样就得到了下图所示的界面:右键点击sport的对话框界面,在弹出的菜单中选择属性,打开下面的属性对话框:建立下图所示的对话框控件:各控件属性如下:下面再做第二个对话框配置对话框右键点击下图左边的Dialog,在弹出的菜单中选择Insert Dialog这样就得到下图鼠标右键点击上图右边的对话框,在弹出的菜单中选择属性,并建立下列属性:建立下图的各种控件:其中“串口号“、”波特率“、“数据位”、“停止位”、“奇偶位”字样都是static Text控件,如“串口号:”文字的控件属性为:这些文字的下拉框都是Combo Box控件,他们的属性为: 下面右键点击工具栏的空白处,在打开的菜单中选择“定制窗口”,在下面的定制对话框中查看分类里将下面的两个按钮移动到某个菜难栏中,其中左上的那个按钮是”类生成“按钮。 设置好后,左键点击刚才的“串口配置”对话框,然后再点击“类生成”按钮。出现下面的对话框点击OK后出现下面对话框,按下面图填好点击Change按钮,按下图来设置Change Files对话框按OK后得到下面的对话框这样得到新的类如下图:双击下图IDC_COMN控件,按下图设置其成员变量:得到下图的结果使用上述方法建立下列控件的成员函数下面我们来将mscomm控件加进项目:在sportDlg.h中加入MSComm控件:#include mscomm.hprotected: CMSComm m_ComPort;public:CSportDlg(CWnd* pParent = NULL);/ standard constructorintm_baund;intm_comn;intm_databit;intm_jiaoyan;intm_stopbit;在CSportDlg:OnInitDialog()中:DWORD style=WS_VISIBLE|WS_CHILD; if (!m_ComPort.Create( NULL,style,CRect(0,0,0,0),this,ID_COMMCTRL) )TRACE0(Failed to create OLE Communications Controln);return -1; / fail to create m_baund = 2; / 配置窗口参数初始化m_comn = 0;m_databit = 3;m_jiaoyan = 0; m_stopbit = 0;/ 缺省的串口初始化m_ComPort.SetCommPort(1); / 选择串口号m_ComPort.SetInBufferSize(1024); /接收缓冲区 m_ComPort.SetOutBufferSize(1024);/发送缓冲区 m_ComPort.SetInputLen(0);/设置当前接收区数据长度为0,表示全部读取 m_ComPort.SetInputMode(1);/以二进制方式读写数据 m_ComPort.SetRThreshold(1);/接收缓冲区有大于等于1个字符时,将引发接收数据的OnCommMscomm事件m_ComPort.SetSettings(9600,n,8,1); /设置波特率等参数if(!m_ComPort.GetPortOpen() /打开串口m_ComPort.SetPortOpen(TRUE);else m_ComPort.SetOutBufferCount(0);按照下列图为“配置”按钮添加功能函数:双击BN_CLICKED得到功能函数void CSportDlg:Onconfig() / TODO: Add your control notification handler code here添上下面的代码,就可以得到该函数的功能void CSportDlg:Onconfig() / 配置按钮被按下/ TODO: Add your control notification handler code hereCSconfig con;/将端口配置初始化数据传递的配置对话框中con.m_baund = m_baund; con.m_comn = m_comn;con.m_databit = m_databit;con.m_jiaoyan = m_jiaoyan;con.m_stopbit = m_stopbit;if(con.DoModal()=IDOK) / 配置对话框是“确定”按钮按下,需要重新配置端口m_ComPort.SetPortOpen(FALSE);m_ComPort.SetCommPort(m_comn+1); /设置串口号m_ComPort.SetInBufferSize(1024); /接收缓冲区 m_ComPort.SetOutBufferSize(1024);/发送缓冲区 m_ComPort.SetInputLen(0);/设置当前接收区数据长度为0,表示全部读取 m_ComPort.SetInputMode(1);/以二进制方式读写数据 m_ComPort.SetRThreshold(1);/接收缓冲区有1个及1个以上字符时,将引发接收数据的OnCommMscomm事件CString conf;switch(m_baund) / 设置波特率case 0:conf = 2400,;break;case 1:conf = 4800,;break;case 2:conf = 9600,;break;default:conf = 9600,;switch(m_jiaoyan) / 设置校验方法case 0:conf = conf + n,;break;case 1:conf = conf + o,;break;case 2:conf = conf + e,;break;default:conf = conf+n,;break;switch(m_databit) / 设置数据位case 0:conf = conf + 5,;break;case 1:conf = conf + 6,;break;case 2:conf = conf + 7,;break;case 3:conf = conf + 8,;break;default:conf = conf+8,;break;switch(m_stopbit) / 设置停止位 case 0:conf = conf + 1;break;case 1:conf = conf + 1.5;break;case 2:conf = conf + 2;break;default:conf = conf+1;break;m_ComPort.SetSettings(conf); /设置波特率等参数if(!m_ComPort.GetPortOpen() /打开串口m_ComPort.SetPortOpen(TRUE);用上述方法添加发送按钮的功能函数void CSportDlg:Onsendbtn() / TODO: Add your control notification handler code hereUpdateData(TRUE);int len; CByteArray array;len=m_send.GetLength();array.RemoveAll();array.SetSize(len);for(int i=0;ilen;i+)array.SetAt(i, m_sendi);m_ComPort.SetOutput(COleVariant(array); / 发送数据下面我们经过增加事务截获功能来增加串口接收功能:在sportDlg.h中增加:protected:afx_msg void OnCommMscomm();DECLARE_EVENTSINK_MAP()在sportDlg.cpp中增加:BEGIN_EVENTSINK_MAP(CMainFrame,CFrameWnd )ON_EVENT(CMainFrame,ID_COMMCTRL,1,OnCommMscomm,VTS_NONE) /映射/ActiveX控件事件END_EVENTSINK_MAP() void CSportDlg:OnCommMscomm() / 串口事件到来VARIANT variant_inp; COleSafeArray safearray_inp; LONG len,k; BYTE rxdata2048; /设置BYTE数组 An 8-bit integerthat is not signed. CString strtemp; switch(m_ComPort.GetCommEvent() case 1: / comEvSend发送数据 break; case 2: / comEvReceive读取数据 串口接收事件到来/ MessageBox(_T(读取数据事件), _T(TRACE), MB_OK); variant_inp=m_ComPort.GetInput(); /读缓冲区 safearray_inp=variant_inp; /VARIANT型变量转换为ColeSafeArray型变量 len=safearray_inp.GetOneDimSize(); /得到有效数据长度 / 接受数据 for(k=0; klen; k+) safearray_inp.GetElement(&k,r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农产品客户分析与产品服务
- 幼儿管理案例分析与措施总结
- 内蒙古杭锦旗重点名校2023-2024学年中考数学四模试卷含解析
- 幼儿园托小班工作计划
- 江西省新余一中学2024年中考数学最后一模试卷含解析
- 幼儿园师德师风考评方案
- 江西抚州市临川区2024届中考数学对点突破模拟试卷含解析
- 小学法制报告会总结与反思
- 2024年职业培训服务项目规划申请报告
- 幼儿园班级家委会活动方案设计
- MOOC 英语口语进阶-南京大学 中国大学慕课答案
- 产品工序流转卡.doc
- 精选五篇数学建模优秀论文
- SAPFICO模块常用事务代码
- 毕业设计(论文)中间包小车设计【全套图纸】 .doc
- 感冒灵颗粒检验操作规程
- 预防艾滋病、梅毒和乙肝母婴传播服务流程图(参考模板)
- 美国1960年青年反战运动
- 全等三角形证明题集锦(一)
- 多花黄精林下种植技术初探
- GB∕T 31556.1-2015 包装袋 尺寸描述和测量方法 第1部分:纸袋
评论
0/150
提交评论