计算机网络课程设计_第1页
计算机网络课程设计_第2页
计算机网络课程设计_第3页
计算机网络课程设计_第4页
计算机网络课程设计_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算机网络课程设计串口通信实验报告课程名称:计算机网络课程性质:实践课专业班级:08级 信科一班姓名:杨键学号:200830760121指导老师:蔡贤资1. 前言双机互联程序通过串口在两台计算机之间建立连接,本程序1利用.net平台提供的serialPort控件实现串口通信;程序2利用windows api 类实现串口通信。2. 程序设计的内容概述2.1 题目及目的题目:串口通信程序设计目的:实现串口通讯。3. 程序设计的基本思想3.1 问题需求分析 程序使得两台用RS232相连的计算机可以进行信息交互。3.2 总体设计 3.2.1 界面布局本实验的界面主要包括两个,分别是主界面和一个设置串口

2、数据的界面。在visual c+中,只要用鼠标添加控件,相关c+代码就可以自动生成。运用visual c+中的对话框资源IDD_SERIALAPP_DIALOG设计主界面,插入相关控件,得到界面截图如下:再创建一个对话框,命名为IDD_CONFIGDIALOG,插入相关控件,得到设置串口数据的界面,截图如下:3.2.2 方法设计本程序使用API函数编制一个通用的多串口多线程CSerialPortEx类,并在该类基础上实现一个较完整的串口通信协议(SPCP)。同时,编写了双机互联程序的7个类,分别为CSerialAppApp、CSerialPortEx、CConfigDlg、CSerialApp

3、Dlg、CExpandingDialog、CShowWnd、CInputWnd类。其中,CSerialAppApp类由Appwizard实现,CSerialPortEx类负责底层串口通信功能,CConfigDlg类负责修改串口通信参数,CSerialAppDlg类为程序的主控类,主界面、串口协议与程序逻辑均由该类实现,它继承自CExpandingDialog,CExpandingDialog是CDialog的派生类,负责文件传输部分界面的显示和隐藏,CShowWnd和CInputWnd类都是由CRichEdit类派生的,分别负责双方聊天信息的显示和发送短信息的输入。3.3 设计思想 本程序使用

4、API函数编制一个通用的多串口多线程CSerialPortEx类,并在该类基础上实现一个较完整的串口通信协议(SPCP)。SPCP设计思想基于帧传输方式,即在向串口发送数据时是一帧一帧地发送。对于上层应用来说,应用程序发送和接受的都是流式,如果应用程序需要解释上层协议的话,它将重新拼装这些新数据。为保证可靠的传输,在开始传输前,通过握手建立连接(类似TCP/IP协议);在每一帧的传输中,采用发送/应答/重连/失败方式。3.4 编程工具visual c+4. 系统分析与设计编写该系统的架构方式大概如下:接收端应用程序发送端应用程序应用程序之间数据交互CSerialportExWindows 95

5、/NT通信底层文件传输短信息其他SPCP串口通信协议内部缓冲区(接收及发送)CSerialportExWindows 95/NT通信底层文件传输短信息其他SPCP串口通信协议内部缓冲区(接收及发送)PC串口PC串口串口线该系统的重点是运用visual c+设计并实现CSerialportEx类和SPCP。4.1 编写串口通信底层类本程序运用visual c+编写一个通信类CSerialPortEx,设置一个异步方式操作串口。CSerialPortEx类是在CSerialPort类基础上设计的。以下介绍的就是CSerialPortEx类的基本设计流程。CSerialPortEx类的实现要建立头文

6、件码见源程序。编写通信类CSerialPortEx的基本步骤如下:a、 建立Event: 本步骤主要是在串口初始化函数CSerialPortEx:InitPort内实现的。b、 设计打开串口代码本步骤在串口初始化函数CSerialPortEx:InitPort内实现的。c、 设置串口参数本步骤在串口初始化函数CSerialPortEx:InitPort内实现的。这里需要设置的参数有串口DCB结果的配置,还有事超时时间和串口状态事件,超时时间由SetCommTimeouts设置,串口状态事件由SetCommMask指定。d、 创建串口主(监视)线程本步骤中线程创建在CSerialPortEx:S

7、tartMonitoring内实现,线程实现函数为CSerialPortEx:CommThread.串口主线程监视写(m_hWriteEvent)、关闭(m_hShutdownEvent)和串口通信状态事件(m_ov.hEvent,包括数据到达串口事件),并调用相应函数处理这些事件。 在串口主线程内将使用WaitCommEvent检测线路状态,使用WaitForMultipleObjects监视上述3个类事件。e、 读写数据 CSerialPortEx提供了两种读数据的方式,本实验利用的是显式调用。f、 关闭串口本步骤在CSerialPortEx:StopMonitoring中实现4.2 编写

8、CSerialAppDlg类CSerialAppDlg类为程序的主控类,与程序主界面对话框关联。CSerialAppDlg的实现要建立在头文件(1) 添加包含文件、宏与全局变量定义首先为SerialAppDlg.h添加包含文件,以便使用定义在其他文件中的类和变量。再为串口通信协议(SPCP)添加宏与全局变量定义。(2) 更改CSerialAppDlg的父类由AppWizard自动生成的CSerialAppDlg的父类是CDialog类,可以直接将SerialAppDlg.h和SerialAppDlg.cpp文件中所有的”CDialog”替换为“CExpandingDialog”。(3) 添加成

9、员变量(4) 添加初始化与终止处理(5) 添加消息响应函数(6) 添加SPCP串口通信协议支持4.3 编写CConfigDlg类该类是负责修改串口参数的,与程序端口设置对话框关联。(1) 添加成员变量添加DCB结构变量m_dcb,负责接收函数中同类型参数,并初始化各串口参数(2) 初始化处理(3) 源代码5. 运行结果及分析5.1 程序运行情况截图5.2 程序说明与结果分析从运行结果可以看到,进入系统时先设置好串口数据,然后双方都点击打开串口按钮,就可以在下方的对话框里打入信息,而上方的框就显示你发送或接受到的信息。主界面右方是文件传输,如果需要发送文件,必须选中“发送文件”单选框,在其下的编辑框内填入文件路径或点击编辑框右部的按钮选择路径,然后单击“开始传输”按钮。要接收文件时,操作步骤也是大同小异。不过传输的文件不能过大,否则会传输的速率很慢,甚至出现卡死系统的现象。6. 总结本双机互联程序示范了如何使用API函数编写一个通用的多串口多线路CSerialPortEx类,并在该类基础上实现了一个较为完整的串口通信协议,完成了建立在该协议上的两种简单应用:信息交换(文本信息和二进制数据信息)和通过串口实现聊天、文件(文本文件

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论