【VC++开源代码栏目提醒】:网学会员--在 VC++开源代码编辑为广大网友搜集整理了:串口调试助手源程序 - 编程语言绩等信息,祝愿广大网友取得需要的信息,参考学习。
串口调试助手源程序 及编程详细过程 目次:http://www.gjwtech.com1.建立项目2.在项目中插入 MSComm 控件3.利用 ClassWizard 定义 CMSComm 类控制变量4.在对话框中添加控件5.添加串口事件消息处理函数 OnComm6.打开和设置串口参数7.发送数据 在众多网友的支持下,串口调试助手从 2001 年 5 月 21 日发布至今,短短一个月,在全国各地累计下载量近 5000 人次,在近 200 多个电子邮件中,20 多人提供了使用测试意见,更有 50 多位朋友提出要串口调试助手的源
代码,为了答谢谢朋友们的支持,公开推出我最初用
VC 控件 MSComm 编写串口通信程序的源
代码,并写出详细的编程过程,姑且叫串口调试助手源程序 V1.0 或
VC 串口通讯源程序吧,我相信,如果你用
VC 编程,那么有了这个
代码,就可以轻而易举地完成串口编程任务了。
(也许本文过于详细,高手就不用看)开始吧:1.建立项目:打开
VC++6.0,建立一个基于对话框的 MFC 应用程序 SCommTest(与我源
代码一致,等会你会方便一点);2.在项目中插入 MSComm 控件 选择 Project 菜单下 Add To Project 子菜单中的 Components andControls…选项,在弹出的对话框中双击 Registered ActiveX Controls 项(稍等一会,这个过程较慢),则所有注册过的 ActiveX 控件出现在列表框中。
选择 Microsoft Communications Control version 6.0,, 接受缺省的选项。
如果你在控件列表中看不到 Microsoft单击 Insert 按钮将它插入到我们的 Project 中来, (Communications Control version 6.0,那可能是你在安装
VC6 时没有把 ActiveX 一项选上,重新安装
VC6,选上 ActiveX 就可以了),这时在 ClassView 视窗中就可以看到 CMSComm 类了,(注意:此类在 ClassWizard 中看不到,重构 clw 文件也一样),并且在控件工具栏 Controls 中出现了电话图标(如图 1 所示),现在要做的是用鼠标将此图标拖到对话框中,程序运行后,这个图标是看不到的。
3.利用 ClassWizard 定义 CMSComm 类控制对象 打开 ClassWizard-Member Viariables 选项卡,选择CSCommTestDlg 类,为 IDC_MSCOMM1 添加控制变量:m_ctrlComm,这时你可以看一看,在对话框头文件中自动加入了//AFX_INCLUDES include mscomm.h //AFX_INCLUDES (这时运行程序,如果有错,那就再从头开始)。
4.在对话框中添加控件 向主对话框中添加两个编辑框,一个用于接收显示数据 ID 为 IDC_EDIT_RXDATA,另一个用于输入发送数据,ID 为 IDC_EDIT_TXDATA,再添加一个按钮,功能是按一次就把发送编辑框中的内容发送一次,将其 ID 设为 IDC_BUTTON_MANUALSEND。
别忘记了将接收编辑框的 Properties-Styles 中把 Miltiline 和 Vertical Scroll 属性选上,发送编辑框若你想输入多行文字,也可选上 Miltiline。
再打开 ClassWizard-Member Viariables 选项卡,选择 CSCommTestDlg 类, 为 IDC_EDIT_RXDATA 添加CString 变量 m_strRXData, 为 IDC_EDIT_TXDATA 添加 CString 变量 m_strTXData。
说明: m_strRXData和 m_strTXData 分别用来放入接收和发送的字符数据。
休息一会吧?我们天天与电脑打交道,要注意保重,我现在在单杠上做引体向上可以来 40 次,可我都 32 了,佩服吗? 。
。
。
。
。
。
好了,再接着来,下面是关键了:5.添加串口事件消息处理函数 OnComm 打开 ClassWizard-Message Maps,选择类 CSCommTestDlg,选择 IDC_MSCOMM1,双击消息 OnComm,将弹出的对话框中将函数名改为 OnComm,(好记而已)OK。
这个函数是用来处理串口消息事件的,如每当串口接收到数据,就会产生一个串口接收数据缓冲区中有字符的消息事件,我们刚才添加的函数就会执行,我们在 OnComm函数加入相应的处理
代码就能实现自已想要的功能了。
请你在函数中加入如下
代码:void CSCommTestDlg::OnComm // TODO: Add your control notification handler code here VARIANT variant_inp COleSafeArray safearray_inp LONG lenk BYTE rxdata2048 //设置 BYTE 数组 An 8-bit integerthat is not signed. CString strtemp ifm_ctrlComm.GetCommEvent2 //事件值为 2 表示接收缓冲区内有字符 ////////以下你可以根据自己的通信协议加入处理
代码 variant_inpm_ctrlComm.GetInput //读缓冲区 safearray_inpvariant_inp //VARIANT 型变量转换为 ColeSafeArray 型变量 lensafearray_inp.GetOneDimSize //得到有效数据长度 fork0k0chAchach