通信技术方面有关论文范文素材,与单片机原理与应用相关论文下载
本论文是一篇通信技术方面有关论文下载,关于单片机原理与应用相关本科毕业论文范文。免费优秀的关于通信技术及无线通信及嵌入式方面论文范文资料,适合通信技术论文写作的大学硕士及本科毕业论文开题报告范文和学术职称论文参考文献下载。
#30340;类型:0为文本,1为二进制表4.4程序中用到的所有控件,以及它们的ID控件ID标题按钮ID_SEND发送按钮ID_CLEAR清空编辑框IDC_EDIT_SEND编辑框IDC_EDIT_RCV静态文本IDC_STATIC接收缓冲区静态文本IDC_STATIC发送缓冲区组框IDC_STATIC端口选择单选按钮IDC_1端口1单选按钮IDC_2端口2msmIDC_MSCOMM
表4.5用到的变量和变量的类型ControlIDSTypeMemberIDC_EDIT_SENDCStringm_str_sendIDC_EDIT_RCVCStringm_str_recvIDC_MSCOMMCMSCommm_msm
ObjectIDSMessagesFunctionID_SENDBN_CLICKEDOnSendID_CLEARBN_CLICKEDOnClrIDC_1BN_CLICKEDOn_Com1IDC_2BN_CLICKEDOn_Com2IDC_MSCommOnCommOnComm
4.2.2程序设计原理第一步:初始化串行口.调用SetCommPort()函数,选择使用的端口好,然后设置波特率发送接收的处理方式,以及数据的传输方式,最后将串口打开.第二步:发送数据.将要发送的字符串变成特定的类型后,调用函数SetOutput(),将数据发送到发送缓冲区第三步:接受数据.将接收缓冲区中的数据通过GetInput()函数读出,并将它转换为Cstring类型,显示在界面上.程序的各个主要部分和一些流程图:(1)登陆界面后,程序首先将接收缓冲区和发送缓冲区清空程序如下:m_str_send等于"",m_str_recv等于"",UpdateData(FALSE),(2)然后进行串行口的初始化,也即是设置MSComm控件的各种属性.首先要进行端口的选择,由于所用到的计算机只有两个串行口,因此本程序只给了两个选择,具体的程序代码如下:voidCMyDlg::On_Com1(){if(m_msm.GetPortOpen())m_msm.SetPortOpen(FALSE),m_msm.SetCommPort(1),m_msm.SetSettings("9600,n,8,1″),m_msm.SetRThreshold(1),m_msm.SetSThreshold(0),m_msm.SetInputLen(0),m_msm.SetInputMode(1),m_msm.SetPortOpen(TRUE),}voidCMyDlg::On_Com2(){if(m_msm.GetPortOpen())m_msm.SetPortOpen(FALSE),m_msm.SetCommPort(2),m_msm.SetSettings("9600,n,8,1″),m_msm.SetRThreshold(1),m_msm.SetSThreshold(0),m_msm.SetInputLen(0),m_msm.SetInputMode(1),m_msm.SetPortOpen(TRUE),}1)CommPort:分别选1和2.2)Setting设置或返回串行端口的波特率:9600,无奇偶校验位,数据位数为8,1位停止位.3)InBufferSize:设置接收缓冲区为1024字节.4)RThreshold:设置当接收缓冲区内字节个数为1时,触发MSCOMM的OnComm事件,然后由计算机将接收缓冲的数据读出,并将接收缓冲区清空.5)InputLen:值为0,设置INPUT读取整个缓冲区的内容.6)OutBufferSize:设置发送缓冲区为512字节.(3)发送数据的源程序代码voidCMyDlg::OnSend(){if(!m_msm.GetPortOpen())m_msm.SetPortOpen(TRUE),UpdateData(TRUE),m_msm.SetOutput(COleVariant(m_str_send)),//发送数据}将文本框内的字符串送到变量m_str_send中,然后将字符转化为ColeVariant类型的数据,再通过SetOutput函数将数据发送到发送缓冲区中.(4)接收数据的源程序代码voidCMyDlg::OnComm(){VARIANTvariant_tmp,COleSafeArraysafearray_tmp,LONGlen,i,BYTEbuf[2048],CStringstr_tmp,if(m_msm.GetCommEvent()等于等于2){variant_tmp等于m_msm.GetInput(),safearray_tmp等于variant_tmp,len等于safearray_tmp.GetOneDimSize(),for(i等于0,i<,len,i++)safearray_tmp.GetElement(&,i,buf+i),for(i等于0,i<,len,i++){BYTEch等于*(char*)(buf+i),str_tmp.Format("%c",ch),m_str_recv+等于str_tmp,}}UpdateData(FALSE),}当m_msm.GetCommEvent()等于等于2时候,数据到来,触发OnComm事件,调用该函数.首先通过m_msm.GetInput()将接收缓冲区内的数据读到变量variant_tmp中,再将variant_tmp赋予safearray_tmp来实现数据类型转化为ColeSafeArray.通过safearray_tmp.GetOneDimSize()求出接收到的字符的总长度,再将每个ColeSafeArray变量转化为Byte类型的变量,最后转化为字符类型,并将它显示在文本框内.voidCMyDlg::OnComm()的流程图:
图4.3voidCMyDlg::OnComm()的流程图
(5)清空功能函数源代码voidCMyDlg::OnClr(){m_str_send等于"",m_str_recv等于"",UpdateData(FALSE),}总的程序流程图如图4.4所示图4.5是PC机通过端口1向单片机发送数据时候的图型界面.进入界面后,首先要进行根据连接的串行口选择要初始化的端口,然后使用键盘在发送缓冲区内输入一系列的字符.等单片机开发板上电后,单击发送按键将数据发送出去.图4.6是PC机通过串口接收单片机发送过来的数据时候的图形界面.在缓冲区接收的数据为二进制形式,程序内已经将这些二进制转化为字符串在界面上显示.图4.7是串行口调试工具初始运行时候的图形界面.事件驱动方式时,由计算机直接管理,字节之间不可控,而且单片机串行口和PC机串行口速率差别较大,接收程序一定要精心合理的设计,才能使传输稳定可靠,否则很容易出现意想不到的问题.在调试过程中,如果不小心将串行口调试工具的波特率和开发板串行口的波特率设置为不同,就会出现错误.程序中已经将串行口的波特率设置为9600bps,这样可以避免错误.图4.5通过端口1进行发送时候的图型界面
图4.6通过串口接收时候的图形界面图4.7串行口调试工具的运行界面第五章总结与展望5.1全文总结
通过这次毕业设计,我学到了不少课本上没有的知识,也锻炼了自己的动手能力,将以前学过的零散的知识串到一起.首先在毕业设计刚开始的调研阶段,我学会了怎么通过各种方式查询相关的资料.通过对这些资料的学习,我大致了解了无线通信的发展现状以及未来的发展趋势,认识到目前无线通信方面的各种各样的协议,以及它们之间的竞争.了解了无线通信方面的先进技术,这些都为我未来的学习指明了方向.我毕业设计主要涉及硬件和软件两个方面的内容,通过这些我的硬件和软件开发能力都获得了提高.首先在硬件方面,基本了解了电子产品的开发流程和所要做的工作.基本掌握了Protel9
通信技术方面有关论文范文素材,与单片机原理与应用相关论文下载参考文献资料: