- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
串口和界面设计 文档
串口虚拟软件VSPD软件的使用 VSPD是纯软件模拟实现的虚拟串口软件,对串口通讯应用系统程序的调试具有很好的帮助作用。安装并启动该软件后出现如下图1界面。图1 VSPD操作界面图添加串口单击“添加端口”将成对添加虚拟串口,如图1中所示。该计算机中已有物理串口COM1和COM2,已经添加了COM3、COM4虚拟串口。再次点击“添加串口”时将添加COM5、COM6串口。重置串口单击“重置端口”将出现删除所有虚拟串口的界面,确定后将删除所有虚拟串口。虚拟串口的使用虚拟串口你的使用与物理串口一样。但需要注意的是必须按照前面添加时的顺序而成对使用。如上述图1中COM3只能与COM4配对使用。打开两个串口调试助手窗口,一个使用COM3,另一个使用COM4。若波特率、数据位数、奇偶校验都一致时,即可顺利实现双方的数据发送与接收。如图2所示。当用户设计开发应用程序时,使用串口调试助手使用其中一个虚拟串口,而用户程序使用该对的另一个虚拟串口,在串行通讯参数设置一致的情况下,进行发送和接收程序的调试。图2 使用串口调试助手实现两个虚拟串口之间的通讯串口调试助手软件的使用目前辅助用户调试串口应用程序的软件很多,如串口调试助手等,它们的主要功能基本一样,但也有细微区别。有些软件可以实时反映当前计算机的所有串口,包括物理与虚拟串口,有些软件则是提供一定范围内的串口号,供用户选择,如从COM1到COM10。此类软件的使用很简单,不再叙述。用户串口应用程序的设计实现目前编写串口应用程序的方法主要有三种。一是使用串行通讯API函数,二是使用MSCOMM控件,三是使用第三方开发的串行通讯类(如Serialport)或动态链接库。在此介绍使用简单的MSCOMM控件。MSCOMM控件的注册在VS2005/VS2010环境下使用该控件时首先要进行注册。? ?将MSCOMM控件文件mscomm32.ocx放到windows/system32文件夹下。? ?点击开始-运行,输入:Regsvr32mscomm32.ocx,按确定按钮,弹出对话框表示成功。图3 MSCOMM控件注册成功界面2、使用方法(1)新建一个MFC应用程序(基于对话框)(2)在对话框上右击鼠标,出现如图4快捷菜单。图4 快捷菜单(3)单击“插入ActiveX控件”,出现如图5界面。选择Microsoft Communication Control. Version 6.0,即可在对话框上出现以电话图标形式的MSCOMM控件。图5 选择MSCOMM控件(4)右击该图标,在快捷菜单中选择“添加变量”,如m_mscomm1。然后在该控件的属性里添加OnComm函数(右侧属性栏上方有一个闪电图标,就是添加消息响应的地方)。(5)添加两个编辑控件,分别添加其对应CString变量m_rev、m_send。 添加一个命令按钮IDC_BUTTON1,用于发送数据。图6 对话框设计(6) 编写代码1)在BOOL CXXXDlg::OnInitDialog()初始化函数里添加如下代码:// TODO: 在此添加额外的初始化代码m_mscomm1.put_CommPort(3);//端口号为3m_mscomm1.put_InBufferSize(1024);//设置输入缓冲区的大小,Bytesm_mscomm1.put_OutBufferSize(512);//设置输出缓冲区的大小,Bytes?if(!m_mscomm1.get_PortOpen()) //打开串口{m_mscomm1.put_PortOpen(true);?}m_mscomm1.put_InputMode(1); //设置输入方式为二进制方式?m_mscomm1.put_Settings(L9600,n,8,1); //设置波特率等参数?m_mscomm1.put_RThreshold(1); //为1表示有一个字符即引发事件?m_mscomm1.put_InputLen(0);2)OnCommMscomm1()接收数据代码VARIANT variant_inp;COleSafeArraysafearray_inp;long i = 0;intlen;charrxdata[1000];switch (m_mscomm1.get_CommEvent()){case 2://表示接缓冲区内有字符variant_inp = m_mscomm1.get_Input();//接收数据safearray_inp = variant_inp;len = safearray_inp.GetOneDimSize();for (i = 0; i len; i++){safearray_inp.GetElement(i, rxdata[i]);?}?rxda
文档评论(0)