实验1 串口通信实验 - 图文
更新时间:2023-10-01 14:09:01 阅读量: 综合文库 文档下载
- 实验1号马铃薯种薯简介推荐度:
- 相关推荐
实验1 串口通信实验
【实验目的】
(1)了解串口的通信方式。
(2)掌握串口通信的原理,了解串口通信的编程的初步概念和相应函数,掌握一个具体开发平台下的串口编程。
【实验要求】
本实验将介绍串行通信的基本原理,以及在Windows 2000、Windows 98环境下用MFC实现串口(COM)通信的方法,并用串口通信实现简单的通讯协议。 思考题:
(1)串口通信与网络上的通信有什么不同?
(2)程序中SENDDATA这个union,起到什么样的作用?可不可以用其他类型来代替?
【实验原理】 一、什么是串口
在Windows应用程序的开发中,常常需要面临计算机(或单片机)与外围数据源设备进行通信的问题。设计一个相应的串口通信程序,完成数据通信任务,是一个不错的想法!串行端口的本质功能是作为CPU和串行设备问的编码转换器。当数据从CPU经过串行端口发送出
去时,字节数据转换为串行的位。而在接收数据时,串行的位又被转换为字节数据。 二、串口通信的过程
常用的DOS系统主要是工作在响应中断方式下。PC机串行通信程序大多利用其BIOS块的INT 14H中断,以查询串口的方式完成异步串行通信。与DOS响应中断的工作方式不同,在Windows环境(Windows NT、Windows 98、Windows2000)下,串口是系统资源的一部分。应用程序要使用串口进行通信。如果想要使用串口进行通信,则必须在使用之前向操作系统提出资源申请要求(打开串口),通信完成后必须释放资源(关闭串口)。Windows系统函数已经包含了通信支持中断功能。Windows系统为每个通信设备开辟了用户定义的输入输出缓冲区(即读/写缓冲区),数据进出通信口均由系统后台来完成,应用程序只需完成对输入输出区操作即可。
详细过程:每接收一个字符,系统产生一个低级硬件中断,Windows系统中的串行驱动程序就取得了控制权,并将接受到的字符放入输入数据缓冲区,然后将控制权返回正在运行的应用程序。如果输入缓冲区数据已满,串行驱动程序用当前定义的流控制机制通知发送方停止发送数据。队列中的数据按“先进先出”的次序处理。
Windows系统通过使用一个数据结构对串行口和串行通信驱动程序进行配置,该数据结构被称为设备控制块(Device Control Block),简称DCB。 通常可按以下四步实现串行通信:
(1)按协议的设置初始化并打开串行口。这样做的目的是通知Windows本应用程序需要 这个串口,并让其封锁其他应用程序,使它们不能使用此串口。 (2)配置串行口。
(3)在串口上往返的传输数据,并在传输过程中进行校验。在编写程序时,主要的代码 集中在这一步。
(4)不需要此串口时,关闭串口,即释放串口以供其他应用程序使用。 以上四步的具体流程如图所示:
打开串口的方法一般有四种:
(1)以文件方式打开串口。这里使用的是Win32 API函数,所以无论在BCB或VC下都可以实现。具体的函数的意义可以参考Win32 API的帮助。这里有一个易于使用的BCB下的类,可以方便地使用串口。 (2)使用现成的控件。易于使用的是微软的MS CommFuncication控件,它是作为一个.ocx提供的。可以用Import ActiveX Control将它加入到BCB中,缺省是加载在ActiveX页中,就可以作为一个普通的BCB控件来使用了(也有不少第三方提供的其他硬件操作控件)。 (3)直接嵌入汇编法。利用vC的直接嵌入汇编功能,可以在VC程序中用汇编语言直接 对串口进行操作。这种方法可以把原来在DOS下开发的汇编程序经过修改后移植到VC中继 续使用。
【实验步骤】
(1)在MFC的应用程序向导里选择Dialog Based。以下均遵循默认选项。dialog面板布置控件如图所示。
(2)各控件的I【)和Caption如下表: Type Breton Button EditBox EditBox ComboBox Type EditBox EditBox ID IDC_BuTroN_SEND IDC_BUTTON_QUlT IDC_EDIT_SEND IDC Edrr_RECEIVE IDC_COMBO_COM ID IDC_EDIT_SEND IDC_EDIT_RECEIVE Caption Send Quit Variables CString CString 打开Class Wizard为各控件添加控制变量,如下表: (3)接下来为程序添加一个新类,该类用于控制串口的初始化及其超时控制等等。该类 名为:CcomStatus;
●其头文件为ComStams.h
●CComControl的实现文件中本文件中添加几个全局变量: BYTE XwCom=0x40;
BYTE sComl[5],sCom2[MAXBLOCKLENGTH+12],sCom3[MAXBLOCKLENGTH+12]; BYTE opation;
shortComNum; //串口ID CComControl::CComControl() {
m_hCom=NULL;
m_bComId=(char)ComNum;//COM1
m_bBytcSize=8;
m_bStopBits=ONESTOPBIT; m_bParity=NOPARlTY; m_dwBaudRate=9600; m_bEvtChar=EVENTCHAR; m_fBinary=l;
m_bConnected=FALSE; m_bFlowCtrl=FC_XONXOFF; m_fXonXoff=FALSE; }
以下是重载的ComControl构造函数: CComConla-ol::CComControl(BYTE bComId,BYTE bByteSiZC,BYTE bStopBitS. BYTE bParity,DWORD dwBaudRate',‘WORD fChEVL’,chal\ DWORD fBinary) {
m_hCom=NULL: m_bComId=bComId;
m_bByteSize=bByteSize; m_bStopBitS=bStopBitS; m_bParity=bParity;
m_dwBaudRate=dwBaudRate; m_bEvtChar=-bEvtChar; m_fBinary=fBiIlary; m_bConnected=FALSE; m_bROWCtrl=FC_XoNXOFF; m_fXonXoff=FALSE;
OpenConnection函数:此函数用于设置相应参数。例如,超时控制参数CommTimeOuts、 OVERLAPED,确定通信COM口的ID。
SetupConnection函数:用于通过变量dcb对DCB属性进行操作,完成对串口各个属性的配置。在这里请注意参数设置的顺序,以及两个重要函数GetCommstate和SetCommState的使用。理解DCB结构的各个参数的意义是关键。通过计算机串口通信之前,必须根据监控设备的有关通信参数约定双方的通信方式,包括波特率的设置、奇偶校验及停止位的设置等。确定数据传输帧格式,确定UART操作方式。逐个对线路控制寄存器、波特率因子寄存器和MODEM寄存器进行写入操作。
接着,要查询发送流程,只要CPU检测到UART发送器保持寄存器为空,即向UART输出一个字符。发送方首先输出RTS和DTR有效,检测MODEM寄存器。只有收到DECshurude CTS、DSR有效,CPU才向UART输出一发送符。
然后,我们要查询接收流程。只要CPU检测到UART接收器数据准备就绪,即可从接收器数据寄存器中接收字符。接收方首先输出数据中断就绪有效(DTR=1),然后检测MODEM状态寄存器·只有DSR=I,CPU才接收一字符。在API函数的串口通信方法中,DCB参数包含了这些参数的设置。我们只需得到串口的DCB结构变量即可。
IsConnccted函数用于判断连接成功; CloseConnection显式的关闭了串口文件; 我们在实验指导书中只提供了重要的函数,具体细节请同学们自行编写,在完成了程序的编辑之后,对其进行编译连接、运行。此实验过程需要两台计算机和一根串口线。实验比较简单,只实现了数字的传输。在阅读程序时,建议先掌握原理,对程序中的错误处理可以先略去不看,而只看关键代码。 注意:
串行通信程序的调试相对来说是比较麻烦的,一般可以采用以下步骤:
(1)检查连线是否正确。在三线制方式中,要注意“交叉”问题:还要注意握手信号线 14R
的正确连接。
(2)简单的用逻辑笔检查发接信号的有无(注意逻辑笔只能检查TrL信号。因此,检查 点一般为经接口芯片转换后的TXD,RXD)。
(3)在确认有接发信号的前提下,如果接发数据不正常,则重点应检查通信协议是否一 致,例如波特率的设置、奇偶校验、停止位数、通信的应答等设置。
(4)在只有单机的情况下的串口程序调试,可采用将串口的TXD与RXD直接相连的办 法,简单方便。
正在阅读:
实验1 串口通信实验 - 图文10-01
小学语文古诗词背诵04-08
新兴技术辨识的组织理论解释05-29
TU1800S紫外可见分光光度计操作规程11-25
学生成绩管理系统单元测试用例10-15
自考企业会计学技巧05-25
消防设计审核申请与审核意见02-22
云和县职称论文发表-钢板桩围堰施工分析论文选题题目04-17
2014年的全国淋浴房十大品牌06-22
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 实验
- 串口
- 通信
- 图文
- 公共危机管理作业4
- 材料员专业管理实务 - 模拟试题(二) - 2013年版
- 各种专门档案的整理方法 - 图文
- 中国跆拳道护头行业市场前景分析预测报告(目录) - 图文
- 税法习题2
- 浅谈中学语文教学中教师专长教学模式的构建-2019年教育文档
- 浓学风、正班风、树校风
- 《中外建筑史》期末复习资料
- 合作产品清单
- 奥尔夫音乐活动教案—《快乐的小鸭子》
- 高比表面积氢氧化钙简介
- 现代物流装备和供应链管理 考试资料
- 201X秋季开学典礼、国旗下讲话稿大全
- 18秋学期《电子政务》在线作业3
- 中考任务型阅读及首字母填空汇编含答案
- 《EDA技术实用教程(第四版)》习题答案
- 卡特尔16项人格问卷
- 第一章计算机网络概述整理
- 采煤工培训教材
- 六年级上册应用题1