欢迎来到天天文库
浏览记录
ID:22738372
大小:77.00 KB
页数:7页
时间:2018-10-31
《串口上位机程序的编制》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、我们飞思卡尔智能车的比赛已经接近尾声了,23号就要去上海决赛了呵。论文基本完成,Duuboo已经排版结束,排出来还真挺长的。整个过程都挺累的,持续的时间还这么长,最累的恐怕只有惠哥了,这些比赛完再说吧。这里介绍下在Donald写的一个串口调试程序,主要是方便我们查看运行起来的小车的内部参数。程序的作用是接收来自FreescaleMC9SDG128单片机发送来的数据,并显示出来。分为两部分。一部分是普通的数据,ASCII数据,另一部分是实时的图像,也是以ASCII方式传输。程序可通过“模式”按钮设置工作在这两种模式。当进入CCD模式时,通过“连接”按钮触发DG128单片机发送图像信息,
2、这时“连接”按钮变为“断开”,可通过其触发DG128单片机停止发送,降低单片机内部资源消耗。程序中串口部分的编程参考的是《VisualC++串口通信技术与工程实践》,李现勇编著。书中对串口的编程讲得很不错,除了C的,还有VB的。详细请参考该书。这里介绍本程序的一部分程序代码。一、添加串口控件本程序是在VC6下MFC实现,所以添加一个串口控件,方法是选择Project菜单下AddToProject子菜单中的ComponentsandControls选项,在弹出的对话框中进入RegisteredActiveXControls目录,选择MicrosoftCommunicationsCont
3、rol,version6.0,,Insert到Project中就行了。然后可在窗体中添加串口控件,接着Ctrl+W到ClassWizard中为该控件添加一个对应的变量就行。二、串口工作方式的改变串口的工作方式有很多种,比如串口的选择、波特率、校验位、数据位和停止位等。这些的设置可以通过组合框实现,实现方法基本一样,Donald就以波特率说明下。之前已经为波特率组合框对象IDC_COMBO_BAUD添加对应变量m_cboBaud。在程序主窗体初始化时写有如下代码。 //comboBaudinit m_cboBaud.AddString(_T("1200")); m_cboBaud.Ad
4、dString(_T("2400")); m_cboBaud.AddString(_T("4800")); m_cboBaud.AddString(_T("9600")); m_cboBaud.AddString(_T("115200")); m_cboBaud.SetCurSel(3); m_strBaud=_T("9600");再在ClassWizard中为IDC_COMBO_BAUD添加CBN_SELCHANGE消息处理函数,再在函数中添加代码。 switch(m_cboBaud.GetCurSel()) { case0: m_strBaud=_T("1200"); bre
5、ak; case1: m_strBaud=_T("2400"); break; case2: m_strBaud=_T("4800"); break; case3: m_strBaud=_T("9600"); break; case4: m_strBaud=_T("115200"); break; default: m_strBaud=_T("9600"); } InitCommPort(); 通过switch选择不同的波特率。case的顺序按照初始化添加时的顺序,开始为0。三、OnComm()消息处理函数在串口控件中,最重要的就是OnComm()函数,这个函数是用
6、来处理串口消息事件的,每当串口接收到数据,就会产生一个串口接收数据缓冲区中“有字符”的消息事件,只要在该函数内写好处理这些字符的代码就可以。在Donald的这个程序里,该程序代码如下。代码的结构(switch结构)是参考该书。 VARIANTvariant_inp; COleSafeArraysafearray_inp; CByteArrayarraySend; LONGlen,k; BYTErxdata[1024];//An8-bitintegerthatisnotsignedforReceive CStringstrAdd; inti; m_strComRcv.Empty();
7、switch(m_com.GetCommEvent()) { case1://comEvSend arraySend.RemoveAll(); arraySend.SetSize(m_strEditTrn.GetLength()); for(i=0;i
此文档下载收益归作者所有