版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第10章 Delphi XE8 串口通信Delphi 程序设计教程(第3版)清华大学出版社 杨长春 主编用Delphi xe8实现串口通信,最常用的几种方法为:使用API函数、使用组件(如MSComm等)或者在Delphi中调用其他串口通信程序。10.1 RS-232C标准所谓串行通信接口标准,是指串行通信接口与外设的信号连接标准。实际中常用的串行通信接口标准有3种:RS-232C,RS-422A/423A和20mA电流环。常用的PC机都配置了RS-232C标准接口。RS-232C标准常简称为RS-232。RS-232C的定义包括电气特性(如电压值)、机械特性(如接头形状)及功能特性(如脚位信
2、号)等。串行通信接口基本功能是:在发送时,把CPU送来的并行码转换成串行码,逐位地依次发送出去;在接收时,把发送过来的串行码逐位地接收,组装成并行码,并行地发送给CPU去处理。这种串行到并行转换的功能,常用硬件电路来实现,这种硬件电路叫做串行通信接口。普通的Modem通常都是通过RS-232C串行口信号线与计算机连接。 根据RS-232C标准规定,接口电路采用一对物理D型连接器:DTE设备应该有一个D型插头接口,DCE设备应该有一个D型插座接口。 D型连接可以是25芯(简称为DB25),也可以是9芯(简称为DB9)。RS-232C引脚分配如图10-1所示。图10-1 DB25与DB9引脚分配图
3、10.1.1信号连接RS-232C规定使用一种DB25连接器,其中20个脚作了定义,9、10、11、18、25未作定义。 RS-232C串行口信号分为3类:传送信号、联络信号和信号地。1传送信号(TxD和RxD)传送信号是经由(发送数据信号线,引脚)传送和(接收数据信号线,引脚)接收的信息格式即一个传送单位(字节)由起始位、数据位、奇偶校验和停止位组成。2联络信号(RTS、CTS、 DTR、DSR、DCD和RI等个信号)RTS(请求传送,引脚),是PC向Modem发出的联络信号。高电压表不PC机请求向Modem传送数据。CTS(清除发送,引脚),是Modem向PC机发出的联络信号。高电压表示M
4、odem响应PC发出的RTS信号,且准备向远端Modem发送数据。DTR(数据终端就绪,引脚),是PC向Modem发出的联络信号。高电压表示PC机处于就绪状态,本地Modem和远端Modem之间可以建立通信信道。若为低电平,则强迫Modem终止通信。DSR(数据装置就绪,引脚),是Modem向PC发出的联络信号。它指出本地Modem的工作状态,高电压表示Modem没有处于测试通话状态,可以和远端Modem建立通道。DCD(传送检测,引脚),是Modem向PC发出的状态信号,高电压表示本地DCE接收远端Modem发来的载波信号。RI(铃指示,引脚),Modem向PC发出的状态信号。高电压表示本地
5、Modem收到远端Modem发来的振铃信号。3SG(信号地)SG(信号地,引脚)为相连的PC和Modem提供同一电势参考点。10.1.2 握手DTE和DCE之间要实现双向通信,至少需要条信号线:TxD使数据从DTE到ECE。RxD使数据从ECE到ETE,SG为信号地。必须使用握手信号,它提供了一种控制数据流的方法,即接收设备可以控制发送设备的数据发送。 在异步串行通信中,这称之为握手(handshaking)或流量控制(flow control)。握手控制可以具体分为硬件握手(硬件流控)和软件握手(软件流控)。1硬件握手 硬件握手是使用专门的握手电路去控制数据的传输。当接收设备准备好之后,就通
6、过专用的握手电路传送一个正电压给发送设备,指示发送设备数据。如果接收传送一个负电压给发送设备,则指示发送设备停止发送数据。为了完成数据通信需要有类电路:数据线、信号线和握手线。(1)DTE到DCE为了控制DTE的发送数据,DCE使用DSR信号作为主握手信号去通知DTE已做好接收数据库的准备。当通知DTE暂停发送数据时,置DSR无效。(2)DCE到DTE为了控制DCE的数据发送,DTE使用DTR信号作为主握手信号去通知DCE已做好接收数据的准备。当通知DCE暂停发送数据时,置DTR无效。DTE还使用RTS信号作为第二握手信号控制DCE设备。仅当这两条握手线都有效时,DCE才发送数据。RIDTRD
7、CTSGDSRCTSRTSRxDTxD2345678202223456782022图12-2 有握手功能的双向通信(3)双向通信双向通信中只使用主握手线,则共需要5条信号线:TxD、RxD、DSR、DTR和SG。如果还使用第二握手线,则共需要7条信号线。为了使DCE能向DTE提供更多信息,通常还使用RI和DCE两条信号线。这样一个完整的异步串行通信必需的就是这9条信号线 。2软件握手软件握手的原理机制与硬件握手基本相同,不同的握手信号是在数据线(TxD和RxD)上进行传送的,而不是在专门握手线上传送。这是因为软件握手信号是由特殊字符组成的,所以传送这些字符必须使用数据电路,而不是使用专门握手电
8、路。这种方法常用在直接连接或通过Modem连接的两台计算机之间进行双向通信的场合。 软件握手最常用的协议是XON/XOFF协议。该协议主要解决通信双方处理速度不区配的问题,协议规定发送XOFF表示暂停发送数据,发送XON表示继续发送数据。3硬件与软件相结合的握手为了综合硬件握手和软件握手的好处,可以采用硬件和软件相结合的握手控制。假设DTE设备为计算机,DCE设备为Modem,两台计算机之间通过Modem经电话线连接,则此时计算机与Modem之间可采用硬件握手方法,而两台计算机之间可以使用软件握手方法进行联系。10.1.3 微机的RS-232C接口个人计算机的RS-232C接口名称有多个:RS
9、-232C口、串口、通信口、COM口、异步口等。目前DOS3.3以上版本和Windows 3.2/98/NT最多支持个串口:COM1、COM2、COM3和COM4。 它们所占用的I/O口地址和中断号见表 :串口串口 I/O地址地址 中断号中断号 COM1 0 x3f8 IRQ4 COM0 x2f8 IRQ3 COM 0 x3e8 IRQ4 COM0 x2e8 IRQ3 为一更好地说明RS-232C接口电路的实际工作情况,下面以应答呼叫过程为例,具体分析其信号间的交互关系。所谓应答呼叫过程,即指Modem从接收到振铃信号开始,到数据传输结束后Modem和DTE恢复到原来的空闲状态为止的过程。(1
10、)数据终端DTE的控制软件持续监视振铃指示(RI),等待该信号有效。引脚连线如图:CTS,清除发送DSR,DCE准备就绪SG,信号地DCT,载波检测DTR,DTE准备就绪RI,振铃指示RTS,请求反送RxD,接收数据TxD,发送数据2345678202223456782022图12-3 DTE和Modem的引脚边线(2)响铃后,Modem在振铃脉冲期间发出振铃指示信号(RI有效),在振铃脉冲间隔期间,振铃指示信号有效。即随着振铃脉冲的有无,RI信号ON/OFF交替变化。(3)DTE的通信控制软件在检测到振铃指示后,开始通过计算机振铃指示ON/OFF变化的次数对振铃进行计数。当达到程序预置好的振
11、铃数时,控制软件发出数据终端就绪信号(DTR有效),迫使Modem进入摘机状态,开始应答电话。(4)Modem在等待一小段时间后,自动地发送它的应答载波信号。同时Modem发出数据设备就绪信号(DSR信号有效),通知DTE已完成所有准备工作,正在等待对方载波信号。(5)在DTE发出数据终端就绪信号(DTR有效)期间,DTE的控制软件监视数据设备就绪信号(DSR是否有效)。当DSR变为ON状态后,DTE便知道了Modem已准备建立数据链路,于是DTE开始监视载波检测(DCD)信号,以检查数据链路是否已建立。(6)当主叫Modem的载波信号出现在电话线上时,被叫Modem就发出载波检测信号(DCD
12、),通知DTE已建立数据链路。(7)在数据链路连接期间,发送数据(TxD)和接收数据(RxD)线上即开始了全双工通信。同时,DTE仍监视着载波检测(DCD)信号,以确定数据链路是否连接。(8)数据传输结束后,DTE使数据终端就绪信号(DTE无效),Modem撤消载波信号并以载波检测(DCD)和数据设备就绪(DSR)信号无效给予响应。数据链路释放后,Modem和DTE准备下一次接收或作另一次呼叫。10.2.1常用的串行通信操作函数1CreateFileCreateFile创建或打开一下的对象并返回句柄 完整定义:Handle CreateFile(LPCTSTR lpFileName,/文件名D
13、WORD dwDesireAccess,/访问模式(读/写)DWORD dwShareMode, /共享模式LPSECURITY_ATTRIBUTES lpSecurityAttributes,/安全属性10.2串行口API函数DWORD dwCreationDistribution,/文件已经存在或不存在时的处理方法DWORD dwFlagsAndAttributes,/文件属性,对于串口来说有意义的属性只有FILE_FLAG_OVERLAPPED,表示端口的I/O可以在后台进行(后台IO也叫异步IO) HANDLE hDemplateFile/复制制定文件的扩展属性);2CloseHand
14、leCloseHandle函数关闭一个已打开的对象句柄完整定义:BOOL CloseHandle( HANDLE hObject /句柄);3SetupCommSetupComm为通信设备初始化参数(设置通信缓冲区的大小)完整定义:BOOL SetupComm(HANDLE hFile,/句柄DWORD dwInQueue,/输入缓冲区的大小DWORD dwOutQueue/输出缓冲区的大小);4ReadFileReadFile同步或异步从文件读取数据,在读之前可能要调整文件指针的位置完整定义:BOOL ReadFile( HANDLE hFile,/句柄LPVOID lpBuffer,/接收
15、数据的缓冲区地址DWORD nNumberOfBytesToRead,/读取的字节数LPDWORD lpNumberOfBytesRead,/读取字节数的地址LPOVERLAPPED lpOverlapped/当打开文件制定dwFlagsAndAttributes参数为FILE_FLAG_OVERLAPPED时,这个参数就必须应用一个特殊的结构,结构中定义一次异步读操作。否则,该参数应置为空。);5WriteFileWriteFile同步或异步写数据到文件中,在写之前可能要调整文件指针的位置完整定义:BOOL WriteFile(HANDLE hFile,/句柄LPCVIOD lpBuffer
16、,/指向缓冲区的数据DWORD nNumberOfBytesToWrite,/要写的字节数LPDWORD lpNumberOfBuffersWritten,/返回实际写的字节数LPOVERLAPPED lpOverlapped/当打开文件指定dwFlagsAndAttributes参数为FILE_FLAG_OVERLAPPED时,这个参数就必须引用一个特殊的结构,结构中定义一次异步写操作。否则,该参数应置为空。);10.3.1 MSCom安装MSCcomm组件是Microsoft Visual Studio配带的ActiveX组件,一般安装Microsoft Visual Studio后这些文
17、件会自动生成,然后在Delphi XE8中安装MSComm控件。 步骤如下:(1)先打开Delphi XE8集成开发环境,选择菜单“Component”中的“Import ActiveX Control”命令,在“Import AcitiveX”选项卡内选择“Microsoft Comm Control 6.0”项 。(2)单击“Install” 按钮安装MSComm 控件,安装后在“ActiveX”组件板中出现MSComm图标,即可被使用。 MSCOMM32.OCX可以按如下两种方式注册:第一种方式:点击【开始】|【运行】,在运行命令栏中填入如下命令:Regsvr32 c:windowssy
18、stemmscomm32.ocx第二种方式:打开记事本输入以下内容,并且保存未REG的扩展名,双击此文件也可以进行注册REGEDIT4HKEY_CLASSES_ROOTLicenses 4250E830-6AC2-11cf-8ADB-00AA00C00905=” kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun”10.3 MSComm控件10.3.2 MSComm 控件方法MSComm 控件提供下列两种处理通信的方式:(1)事件驱动通信是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知 。(2)在程序的每个关键功能之后,可以通过检查Com
19、mEvent属性的值来查询事件和错误。如果应用程序较少,并且是自保持的,这种方法可能是更可取的。 每个MSComm控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个MSComm控件。可以在Windows “控制面板”中改变端口地址和中断地址。尽管MSComm控件有很多重要的属性,但首先必须熟悉几个属性。CommPort 设置并返回通信端口号。Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。PortOpen 设置并返回通信端口的状态,也可以打开和关闭端口。Input 从接收缓冲区返回和删除字符。Output 向传输缓冲区写一个字符串。10.3.3 MSComm控件属性通信MSComm控件提供了27个关于通信控制方面的属性和5个标准属性 。1Break属性描述:设置或清除中断信号的状态。该属性在设计时无
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 美容院双十一活动方案策划
- 双11小活动策划方案
- 现服科技发展与创新人才培训模式探讨
- 汇报技巧构建高效商业汇报的核心要素
- 国庆节活动方案披萨
- 7 角的初步认识 第二课时(说课稿)-2023-2024学年二年级下册数学苏教版001
- Unit 11 Chinese festivals(period 1)(说课稿)-2023-2024学年沪教牛津版(深圳用)英语五年级下册001
- 16 家乡新变化(说课稿)2023-2024学年统编版道德与法治二年级上册
- 2023四年级数学上册 二 加减法的关系和加法运算律第5课时说课稿 西师大版
- 2023九年级物理下册 第十一章 物理学与能源技术11.3能源说课稿 (新版)教科版
- 《志愿军-存亡之战》观后感小学生
- 统编小学《道德与法治》三年级上下册教材的解读
- 人教版(2024)英语七年级上册单词表
- 产业链竞争关联度
- TTJSFB 002-2024 绿色融资租赁项目评价指南
- 涵洞施工钢筋混凝土圆管涵
- 高考地理一轮复习学案+区域地理填图+亚洲
- 全新车位转让协议模板下载(2024版)
- 高中数学必修一试卷及答案
- 砌筑工考试卷及答案
- 呼吸治疗师进修汇报
评论
0/150
提交评论