微机原理及应用课程设计报告

微机原理及应用课程设计报告

ID:25089791

大小:770.50 KB

页数:12页

时间:2018-11-18

微机原理及应用课程设计报告_第1页
微机原理及应用课程设计报告_第2页
微机原理及应用课程设计报告_第3页
微机原理及应用课程设计报告_第4页
微机原理及应用课程设计报告_第5页
资源描述:

《微机原理及应用课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、微机原理及应用课程设计设计题目:基于PC机串行通信的点到点文件传输系统专业计算机科学与技术班级计104学生D指导教师2013年秋季学期目录目录2一、实验目的3二、实验内容及要求3三、课设基本思想3四、程序流程图以及程序设计5(一)、程序流程图:5(二)、程序设计思想:5五.实验结果截图6六.程序源代码7七.课程设计心得体会14八.参考文献15一、实验目的1.学习虚拟串口的使用方法。2.学会在windows平台上进行串口通信的方法。二、实验内容及要求1.基本要求:采用VB,VC,C#或其他开发工具设计一个简易的聊天系统。用户可以设置波特率或采用自动协商机制。界面如下图:

2、2.设计提示:在Windows平台上通过API或MSComn控件实现串行通信。3.进一步设计要求:采用多线程完成通信任务。三、课设基本思想1.在.NET平台下使用C#创建串口通信程序,.NET2.0提供了串口通信的功能,其命名空间是System.IO.Ports。这个新的框架不但可以访问计算机上的串口,还可以和串口设备进行通信。我们将使用标准的RS232C在PC间通信。它工作在全双工模式下,而且我们不打算使用任何的握手或流控制器,而是使用无modem连接。2.串口的硬件知识:在数据传输的时候,每个字节的数据通过单个的电缆线传输。包包括开始位,数据,结束为。一旦开始位传

3、出,后面就会传数据,可能是5,6,7或8位,就看你的设定了。发送和接收必须设定同样的波特率和数据位数。3.关于本程序使用SerialPort的一些属性和方法:属性:BytesToRead获取接收缓冲区中数据的字节数。Encoding获取或设置传输前后文本转换的字节编码。NewLine获取或设置用于解释ReadLine和WriteLine方法调用结束的值。PortName获取或设置通信端口,包括但不限于所有可用的COM端口。方法:Close关闭端口连接,将IsOpen属性设置为false,并释放内部Stream对象。GetPortNames获取当前计算机的串行端口名称数

4、组。Open打开一个新的串行端口连接。ReadByte从SerialPort输入缓冲区中同步读取一个字节。Write(Byte[],Int32,Int32)使用缓冲区的数据将指定数量的字节写入串行端口。Read(Byte[],Int32,Int32)从SerialPort输入缓冲区读取一些字节并将那些字节写入字节数组中指定的偏移量处。四、程序流程图以及程序设计开始(一)、程序流程图:使用函数获取系统当前的可用串口选择正确串口NY初始化串口初始化波特率建立串口连接并通信是否单行显示YN单行显示多行显示是否发送二进制文件NY发送二进制文件结束(二)、程序设计思想:首先需要

5、定义一个SerialPort对象,添加DataReceived事件响应收到数据。然后利用系统提供函数获取当前端口号,以及用户选择的波特率,对对象进行初始化。通过两边建立起来的串口连接的缓冲区,进行数据的交互。这样便实现里串口点对点的字符串聊天。对于实现二进制文件的传输,主要通过的是利用list<>来进行缓冲区数据的读取,同时自己约定好所用的文件协议。通过对数组文件的分析来判断是否是合法的数据,通过对校验位的检查确定是否是正确的数据,对于不正确的数据,我采用的是直接丢弃不予处理的政策。至此,便是整个程序的基本思想。五.实验结果截图程序主界面:设置界面:运行结果:六.程序

6、源代码1.主界面部分:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.IO.Ports;usingSystem.Text.RegularExpressions;namespacewindows_test{publicpartialclassMain:Form{p

7、rivateSerialPortsp=newSerialPort();privateStringBuilderTheString=newStringBuilder();privateboolListening=false;//是否没有执行完invoke相关操作privateboolClosing=false;//是否正在关闭串口,执行Application.DoEvents,并阻止再次invokepublicstaticstring[]ports;privateListbuffer=newList(4096);privateb

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。