版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理及应用课程设计设计题目:基于PC机串行通信的点对点聊天系统专业计算机科学与技术班级计091学号3090911023学生孟杰指导教师王理2012年1学期实验目的与要求:《微机原理及应用课程设计》的目的在于检验和提高学生在汇编语言程序设计、微机原理与接口综合应用方面分析问题与解决问题的能力,同时也给学生提供更多、更好的训练机会。汇编语言程序设计类题目要求采用32位汇编语言,鼓励采用GUI界面。硬件接口类题目,要求至少选用微机实验装置中两部分以上的硬件电路(还需将它们有机组合起来)并编制相应的应用软件,要求软件设计应尽可能利用实验装置资源并提高效率。为了发挥每一个同学的创造能力,每一题目依据题目均给出了设计要求(分基本要求与进一步要求两部分)及部分设计提示。学生可根据设计要求,选择利用合适的器件,构成有效的硬件电路来完成。对于学有余力的学生,除了完成基本要求与进一步要求的内容外,还可对同一题选择不同的器件构成不同的硬件电路,或自行进行功能扩展,提高性能指标,尽情发挥和创造。要求完成:(1)符合设计要求的硬件和软件设计、编码和测试;(2)软件运行需有版权页,署上姓名和学号;(3)完成全部工作后,按设计要求由教师当堂验收、提问要求,并根据基本要求、提高和探索实验完成结果评定验收成绩,指出问题;(4)整理全部资料,总结提高,并分别撰写课程设计报告。1)基本要求采用VB、VC、C#或其它的开发工具设计一个简易的聊天系统,用户可以设置波特率或采用自动协商机制。界面如下图。2)设计提示在Windows平台上通过API或MSComm控件二种方式实现串行通信。3)进一步设计要求采用多线程完成通信任务。二.软件环境:本次开发环境是windowsxp,vs2008。开发语言:C#。实验原理:串行端口的本质功能是作为CPU和串行设备间的编码转换器。当数据从CPU经过串行端口发送出去时,字节数据转换为串行的位。在接收数据时,串行的位被转换为字节数据。在Windows环境(WindowsNT、Win98、Windows2000)下,串口是系统资源的一部分。应用程序要使用串口进行通信,必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。本次实验调用C#自带的SerialPort控件实现串口通讯。注:看了微软的MSDN6.0,其WindowsAPI中关于串行通讯设备(不一定都是串口RS-232C或RS-422或RS-449)速率的设置,最大可支持到RS_256000,即256Kbps!也不知道到底是什么串行通讯设备?但不管怎样,一般主机和单片机的串口通讯大多都在9600bps,可以满足通讯需求。主要代码:使用C#自带的SerialPor控件。1...在“工具箱”的“组件”中选择SerialPor控件添加。2...设置串口并打开serialPort1.PortName="COM1";serialPort1.BaudRate=9600;serialPort1.Open();3...写入数据可以使用Write或者下面的函数serialPort1.WriteLine(str);4...添加数据接收的事件privatevoidserialPort1_DataReceived(objectsender,SerialDataReceivedEventArgse)usingSystem;usingSystem.IO.Ports;usingSystem.Linq;usingSystem.Windows.Forms;//调用C#自带serialPort控件进行串口编程namespaceserialport{publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}privatevoidserialPort1_DataReceived(objectsender,System.IO.Ports.SerialDataReceivedEventArgse){//使用委托进行跨线程读取数据Invoke(newEventHandler(delegate{txtreceived.Text+=port.ReadExisting()+"\r\n";}));}privatevoidForm1_Load(objectsender,EventArgse){foreach(stringcominSystem.IO.Ports.SerialPort.GetPortNames())//自动获取串行口名称cmbPortName.Items.Add(com);cmbPortName.SelectedIndex=0;}privatevoidbtnopen_Click(objectsender,EventArgse){try{if(port.IsOpen)port.Close();else{//端口设置//port.BaudRate=(BaudRate)Enum.Parse(typeof(BaudRate),cmbBaudRate.Text);//port.DataBits=(DataBits)Enum.Parse(typeof(DataBits),cmbDataBits.Text);port.BaudRate=int.Parse(cmbBaudRate.Text);//设置波特率port.DataBits=int.Parse(cmbDataBits.Text);//设置数据位port.StopBits=(StopBits)Enum.Parse(typeof(StopBits),cmbStopBits.Text);port.Parity=(Parity)Enum.Parse(typeof(Parity),cmbParity.Text);//port.Parity=(Parity)Enum.Parse(typeof(Parity),cmbParity.Text);port.PortName=cmbPortName.Text;//打开端口port.Open();}gbPortSettings.Enabled=!port.IsOpen;txtsend.Enabled=btnsend.Enabled=port.IsOpen;if(port.IsOpen)btnopen.Text="断开连接";elsebtnopen.Text="开始连接";if(port.IsOpen)txtsend.Focus();}catch(Exceptioner){MessageBox.Show("端口连接失败!"+er.Message,"提示");}}privatevoidbtnsend_Click(objectsender,EventArgse){for(inti=0;i<txtsend.Lines.Count();i++)port.WriteLine(txtsend.Lines[i]);txtsend.Text="";}privatevoidbtnexit_Click(objectsender,EventArgse){Close();}privatevoidcmbPortName_SelectedIndexChanged(objectsender,EventArgse){}privatevoidcmbBaudRate_SelectedIndexChanged(objectsender,EventArgse){}privatevoidcmbDataBits_SelectedIndexChanged(objectsender,EventArgse){}privatevoidcmbStopBits_SelectedIndexChanged(objectsender,EventArgse){}privatevoidcmbParity_SelectedIndexChanged(objectsender,EventArgse){}privatevoidtxtreceived_TextChanged(objectsender,EventArgse){}privatevoidtxtsend_TextChanged(objectsender,EventArgse){}privatevoidlabel4_Click(objectsender,EventArgse){}}}实验截图本次实验使用了虚拟端口,因此使用软件ConfigureVirtualSerialPortDriver虚拟了几个用于实验的端口,截图如下:心得体会:短短一周的课程设计已经结束,在老师的指导下达到了基本的要求,我做的是点对点聊天系统,使用的是不是很熟悉的C#做的,所以其中出现了多多少少一些问题,但在同学与老师的帮助下,问题都得到了解决,通过本次串口实验,我对串口通信的知识了解的更透彻,这是在刚开始对串口通信知识不了解的情况下就编程而造成许多错误之后才得到的结果。在网上查找资料的时候也接触到了不少其他的编程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 风力发电运维值班员标准化竞赛考核试卷含答案
- 水产制品精制工操作知识能力考核试卷含答案
- 蜡油渣油加氢工岗前述职考核试卷含答案
- 铅笔制造工操作规程知识考核试卷含答案
- 保险公估人岗前技能掌握考核试卷含答案
- 耐火材料成型操作工安全知识宣贯知识考核试卷含答案
- 2026年社区工作者考试题库及答案
- 2026年妊娠期哺乳期合理用药考核试题及答案(含抗菌药物)
- 2026年医院临床检验师招聘考试生化检验技术培训试卷
- 2026年临床执业助理医师《内科》培训试卷完整版解析
- 儿牙科普小知识
- 急救与生命支持类设备管理
- 如何做好临床护理带教组长
- 《全国森林经营规划(2016-2050年)》
- 人教版六年级数学上册【全册教案】
- 车位租赁协议
- 第3单元 分数除法 单元测试(含答案)2024-2025学年六年级上册数学人教版
- 初中历史讲座发言稿范文
- 湘科版四年级综合实践活动全册教案教学设计
- 证券市场基础知识讲义全
- GB/T 10095.1-2022圆柱齿轮ISO齿面公差分级制第1部分:齿面偏差的定义和允许值
评论
0/150
提交评论