Delphi串口通信编程-教程演示课件

合集下载

delphi 串口编程 例程

delphi 串口编程 例程

以下是一个简单的Delphi串口编程例程,用于打开串口、发送数据和接收数据:```delphiunit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,Dialogs, StdCtrls, ComCtrls;typeTForm1 = class(TForm)Button1: TButton;Edit1: TEdit;Button2: TButton;Edit2: TEdit;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;SerialPort: TSerialPort;bytesRead: Integer;buffer: array[0..99] of byte;i: Integer;s: string;procedure ReadFromPort(const Buffer, BufSize: Integer); vari: Integer;beginfor i := 0 to BufSize - 1 doEdit2.Lines.Add(IntToStr(buffer[i]));end;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);vars: string;begins := Edit1.Text;SerialPort.WriteString(s + #0);end;procedure TForm1.Button2Click(Sender: TObject);beginSerialPort.ReadBytes(buffer, 100, 500); // Read up to 100 bytes within 500ms.ReadFromPort(buffer[0], 100); // Display the first 100 bytes. end;initializationSerialPort := TSerialPort.Create(nil); // Create a new serial port object.trySerialPort.Port := 'COM1'; // Set the port number to COM1. Change this if needed.SerialPort.BaudRate := 9600; // Set the baud rate to 9600. Change this if needed.SerialPort.Parity := 'N'; // Set the parity to None. Change this if needed.SerialPort.StopBits := 1; // Set the stop bits to 1. Change this if needed.SerialPort.DataBits := 8; // Set the data bits to 8. Change this if needed.SerialPort.Handshake := 'XON/XOFF'; // Set the handshake to XON/XOFF. Change this if needed.SerialPort.ReadTimeout := 500; // Set the read timeout to 500ms. Change this if needed.SerialPort.WriteTimeout := 500; // Set the write timeout to 500ms. Change this if needed.SerialPort.ReadBufferMax := 1024; // Set the read buffer maximum size to 1024 bytes. Change this if needed.SerialPort.WriteBufferMax := 1024; // Set the write buffer maximum size to 1024 bytes. Change this if needed.SerialPort.Open(); // Open the serial port for communication. This will throw an exception if the portcannot be opened for any reason (e.g., it is in use by another application).excepton E: Exception do beginShowMessage('Error opening serial port: ' + E.Message); // Display an error message if an exception occurs while opening the serial port.Exit; // Exit the program if an exception occurs while opening the serial port.end;end;end.```。

DELPHI7.0及其串口通信

DELPHI7.0及其串口通信

Delphi7.0及其串口通信2.1Delphi7.0简介2.1.1Delphi7.0基本界面Delphi是由Borland公司于1995年推出的快速应用软件开发工具RAD (Rapid Application Development)。

Delphi使用了当今世界上比较先进的很多程序开发思想,使用Delphi开发软件无疑会大大提高软件开发的效率。

本文以Delphi7.0作为平台,进行软件开发。

Delphi7.0打开的主界面如图2.1所示。

图2.1Delphi7.0主界面2.1.2Delphi7.0的特点和优点Delphi7.0是Windows系统下的具有功能强大、简便易用和代码执行速度快等优点的可视化集成开发工具,它提供了强大的可视化组件VCL(Visual Component Library)功能,使程序员可以快速高效的开发出Windows系统下的应用程序。

和其他软件开发工具相比,Delphi在网络编程、数据库编程、程序界面方面更胜一筹,而且增加了对Linux平台下应用程序开发的更强大支持。

而且它在构架企业信息系统方面也发挥着越来越重要的作用,因此许多程序员愿意选择Delphi作为开发工具编制各种应用程序[2]。

(1)可视化的集成开发环境Delphi提供了可视化的集成开发环境IDE(Integrated Development Environment)。

可视化环境是指用户在设计程序界面的时候,无须为程序界面编写代码,只需将相应的组件添加到窗体上,调节其大小和位置即可,Delphi会自动生成相应的代码。

Delphi的集成开发环境不仅可以非常方便的设计出用户的程序界面,而且程序的界面设计、属性设计、代码编写、程序调试、运行、生成可执行文件等操作都可以在这个集成开发环境中进行,使得软件设计变得非常的快捷、高效。

(2)真正的面向对象面向对象的程序设计OOP(Object Oriented Programming)是Delphi诞生的基础。

Delphi com口编程

Delphi com口编程

delphi中使用spcomm来实现串口通讯最近两天一直在研究spcomm控件的使用,之前也是很不太明白,看了很多的例子,可是按照网上很多的例子它们多少都有点瑕疵,运行不了,鉴于自己在做这方面的项目,也用了645规约试验了下,现在终于明白了一点。

不过要想精通还再要学习!先把我的学习经验跟大家分享下,也让很多新手快点上手。

其实相对于mscomm来讲,spcomm简单明了容易操作,其主要有几个属性要设置和它的方法判断以及事件驱动三大块,掌握了这三个步骤那全盘解决了!一、属性设置-(不过我还没研究好怎么在程序中动态设置)mName:=‘COM1’; //串口号comm1.BaudRate:=1200;//波特率1200 4800 9600 115200当然也可以有范围比方1201 1205comm1.ByteSize:=_8; //数据位 5 6 7 8comm1.Parity:=Even; //检验位Even Odd None Space Markcomm1.StopBits:=_1; //停止位1 1.5 2comm1.OnReceiveData:=Comm1ReceiveData; //这个是你以后写事件驱动时的名称,你可以改成你的名字二、方法comm1.StartComm; //打开串口当然它也有异常捕获共七种::⑴串口已经打开;⑵打开串口错误;⑶文件句柄不是通信句柄;⑷不能够安装通信缓存;⑸不能产生事件;⑹不能产生读进程;⑺不能产生写进程;comm1.StopComm方法用于关闭串口,没有返回值;comm1.WriteCommData(pDataToWrite: PChar;dwSizeofDataToWrite:Word )方法是个带有布尔型返回值的函数,用于将一个字符串发送到写进程,发送成功返回true,发送失败返回false。

执行此函数将立即得到返回值,发送操作随后执行。

该函数有两个参数,其中pDataToWrite是要发送的字符串,dwSizeofDataToWrite是发送字符串的长度。

delphi串口通讯编程

delphi串口通讯编程

delphi串口通讯编程龚建伟评论:本文对在Delphi中使用ActiveX控件,使用行间汇编,用Delphi调用可执行应用程序三种方法实现串口通信进行了阐述。

不过在Delphi中进行串口编程并不象作者所说的那样令人头疼,我就知道几个很好用的串口程序是用Delphi编写的(我不太会用Delp hi)。

Delphi 是新一代可视化开发工具,它具有功能强大、简便易用和代码执行速度快等特点,D elphi系列开发工具在国际各媒体上曾获得过三十多项大奖,是全球公认的快速应用开发工具技术的先驱者,他越来越在构架企业信息系统方面发挥着重要作用。

它的功能很强大,但在对串口通信的控制上Delphi的帮助文档和其他书籍中很少提及,可这是在开发应用系统时会经常遇到却又令人头痛的事情。

下面介绍三种解决方案,以实现接收和发送数据的功能。

一、使用ActiveX控件由于Delphi中没有串口控件可用,所以首先需要把ActiveX控件MSCOMM加到元件选项板上。

这是一个非常好的控件它不仅能对串口进行操作,而且还可以对Modem进行控制。

下面结合一个具体的实例来说明如何用MSCOMM控件开发出串口通信程序。

创建一个Communication.dpr工程,把窗体的Name属性变为CommForm,将标题改为T he Communication Test,选择File/Save As将新的窗体存储为CommFrm.pas,接下来参照图1和图2将控件添加到主窗体中。

图1 图2由图1和图2我们可以看出,通过设置页可选定进行数据传输的通信端口和端口的波特率、奇偶校验、数据位和停止位,通信时每传输一个字符都将触发响应事件,在通信页“传输显示”位置可看到当前正在进行传输的数据。

同时当出现回车换行符时将整行内容显示在me mDisplay新的一行中,而全部接收的内容还将存在一个文件中。

部分源代码如下:变量说明varCommForm: TCommForm;ss :string;savef,readf :file of char;i,j :longint;初始化procedure TCommForm.FormCreate(Sender: TObject);beginmport:=1;mscomm.settings:='9600,n,8,1';mscomm.inputlen:=1;mscomm.inbuffercount:=0;mscomm.portopen:=true;ss:='';i:=0;j:=0;assignfile(savef,'save1');rewrite(savef);assignfile(readf,'read1');reset(readf);end;设置确定procedure TCommForm.btnConfirmClick(Sender: TObject); beginif mscomm.portopen thenmscomm.portopen:=false;mport:=strtoint(edtCommport.text); mscomm.settings:=edtCommsetting.Text;end;传输事件procedure TCommForm.MSCommComm(Sender: TObject); varfilenrc :char;buffer :variant;s1:string;c :char;begincase mEvent ofcomEvSend:beginwhile not(eof(readf)) dobeginread(readf,filenrc);mscomm.output:=filenrc;j:=j+1;lblDisplay.caption:=inttostr(j);if mscomm.outbuffercount>=2 thenbreak;end;end;comEvReceive:beginbuffer:=mscomm.Input;s1:=buffer;c:=s1[1];ss:=ss+c;i:=i+1;lblDisplay.caption:=c+inttostr(i);write(savef,c);if (c=chr(10))or(c=chr(13)) thenbeginlblDisplay.caption:='cr'+inttostr(i);memDisplay.lines.add(ss);ss:='';end;end;end;end;当然还有许多串口控制的ActiveX控件,有控件用是方便,但是是否说没有控件就不能用D elphi本身解决问题呢。

Delphi 第10章_串口通信编程

Delphi 第10章_串口通信编程

10.1.2 握手
DTE和DCE之间要实现双向通信,至少需要3条信号线:TxD使数据从
DTE到ECE。RxD使数据从ECE到ETE,SG为信号地。 必须使用握手信号,它提供了一种控制数据流的方法,即接收设备可 以控制发送设备的数据发送。 在异步串行通信中,这称之为握手(handshaking)或流量控制 (flow control)。握手控制可以具体分为硬件握手(硬件流控)和 软件握手(软件流控)。
始了全双工通信。同时,DTE仍监视着载波检测(DCD)信号,以确
定数据链路是否连接。
(8)数据传输结束后,DTE使数据终端就绪信号(DTE无效),Modem撤消 载波信号并以载波检测(DCD)和数据设备就绪(DSR)信号无效给 予响应。数据链路释放后,Modem和DTE准备下一次接收或作另一 次呼叫。
普通的Modem通常都是通过RS-232C串行口信号线与计算机连接。
根据 RS-232C 标准规定,接口 电路采用一对物理 D 型连接器: DTE设备应该有一个D型插头接 口, DCE 设备应该有一个 D 型 插座接口。 D 型 连 接 可 以 是 25 芯 ( 简 称 为 DB25 ),也可以是 9 芯(简称 为 DB9 )。 RS-232C 引脚分配
);
10.3 MSComm控件
10.3.1 MSCom安装
MSCcomm组件是Microsoft Visual Studio配带的ActiveX组件,一般安装Microsoft Visual Studio后 这些文件会自动生成,然后在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:\windows\system\mscomm32.ocx 第二种方式:打开记事本输入以下内容,并且保存 未REG的扩展名,双击此文件也可以进行注册 REGEDIT4 [HKEY_CLASSES_ROOT\Licenses\ 4250E830-6AC2-11cf-8ADB-00AA00C00905] @=” kjljvjjjoquqmjjjvpqqkqmqykypoqjquoun”

DELPHI串行通信编程技术与实现

DELPHI串行通信编程技术与实现

第25卷第6期 2006年6月实验室研究与探索RESE ARCH AND EXP LORATI ON I N LABORAT ORYV ol.25N o.6 Jun.2006 DE LPHI 串行通信编程技术与实现欧青立, 沈洪远, 徐光远, 李 文(湖南科技大学信息与电气工程学院,湖南湘潭411201)摘 要:介绍了基于DE LPHI 环境的多种串行通信编程方法及编程技术,着重讨论了采用MSC omm 控件实现串行通信的基本方法、技巧,并探讨了微机与多单片机系统间实时远程通信的编程实现。

关键词:串行通信;MSC omm 控件;API 函数;程序设计;Delphi 中图分类号:TP273文献标识码:A 文章编号:100627167(2006)0620638205Programming Technology of Serial Communication in DelphiOU Qing 2li , SHEN Hong 2yuan , XU Guang 2yuan , LI Wen(C ollege of In formation and Electric Eng.,Hunan Univ.of Science and T echnology ,X iangtan 411201,China )Abstract :This paper introduced the methods and technology of serial communication in Delphi ,and explained how to realize the serial communication with MSC omm com ponent in programming with Delphi.It als o put forward a real 2time and long 2distance communication means between upper 2com puter and multi 2microcontroller system.K ey w ords :serial communication ;MSC omm com ponent ;API function ;program design ;Delphi收稿日期:2005212220基金项目:湖南省自然科学基金项目(04JJ40041);湖南省教育厅科研项目(04C198).作者简介:欧青立(1962-),男,教授,主要研究领域:计算机控制.E 2mail :qlou @.1 引 言在工业控制领域,如DCS 系统、远程控制系统,经常涉及串行通信问题。

Delphi串口通信的实现

Delphi中串口通信的实现Delphi是一种具有功能强大、简便易用和代码执行速度快等优点的可视化快速应用开发工具,它在构架企业信息系统方面发挥着越来越重要的作用,许多程序员愿意选择Delphi作为开发工具编制各种应用程序。

但是,美中不足之处是 Delphi没有自带的串口通信控件,在它的帮助文档里也没有提及串口通信,这就给编制通信程序的开发人员带来许多不便。

目前,利用 Delphi实现串口通信的常用的方法有3种:一是利用控件,如MSCOMM控件和 SPCOMM控件;二是使用 API函数;三是调用其他串口通信程序。

其中利用 API编写串口通信程序较为复杂,需要掌握大量的通信知识。

相比较而言,利用 SPCOMM控件则相对较简单,并且该控件具有丰富的与串口通信密切相关的属性及事件,提供了对串口的各种操作,而且还支持多线程。

下面本文结合实例详细介绍SPCOMM控件的使用。

SPCOMM的安装1.选择下拉菜单 Component中的 Install Component选项,在 Unit file name处填写SPCOMM控件所在的路径,其他各项可用默认值,点击 OK按钮。

2.安装后,在 System控件面板中将出现一个红色控件 COM。

现在就可以像 Delphi 自带控件一样使用 COM控件了。

SPCOMM的属性、方法和事件1.属性●CommName:表示 COM1、 COM2等串口的名字;●BaudRate:根据实际需要设定的波特率,在串口打开后也可更改此值,实际波特率随之更改;●ParityCheck:表示是否需要奇偶校验;●ByteSize:根据实际情况设定的字节长度;●Parity:奇偶校验位;●StopBits:停止位;●SendDataEmpty:这是一个布尔型属性,为 true时表示发送缓存为空,或者发送队列里没有信息;为 false时表示发送缓存不为空,或者发送队列里有信息。

2.方法●Startcomm方法用于打开串口,当打开失败时通常会报错。

Delphi实现串口通信

procedure Button2Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
end;
TCommThread = Class(TThread)
protected
procedure Execute;override;
public
constructor Create;
end;
var
CommForm: TCommForm;
DCB.BaudRate := 9600;
DCB.ByteSize := 8;
DCB.Parity := NOPARITY;
DCB.StopBits := ONESTOPBIT;
fRetVal := SetCommState(CommHandle, DCB);
if (fRetVal) then begin
Delphi串口通讯的监听
串口程序我后来研究了好久,写了下面的代码,后台生成一个线程监听串口,不影响前台工作。效果很好,一直用于GPS仪器的数据接收。
unit frmComm;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
CloseHandle(CommHandle);
{终止线程}

如何用DELPHI开发串口通信程序

如何用Delphi开发串口通信程序Delphi是新一代可视化开发工具,它具有功能强大、简便易用和代码执行速度快等特点,Delphi系列开发工具在国际各媒体上曾获得过三十多项大奖,是全球公认的快速应用开发工具技术的先驱者,他越来越在构架企业信息系统方面发挥着重要作用。

它的功能很强大,但在对串口通信的控制上Delphi的帮助文档和其他书籍中很少提及,可这是在开发应用系统时会经常遇到却又令人头痛的事情。

下面介绍三种解决方案,以实现接收和发送数据的功能。

一、使用ActiveX控件由于Delphi中没有串口控件可用,所以首先需要把ActiveX控件MSCOMM加到元件选项板上。

这是一个非常好的控件它不仅能对串口进行操作,而且还可以对Modem进行控制。

下面结合一个具体的实例来说明如何用MSCOMM控件开发出串口通信程序。

创建一个Communication.dpr工程,把窗体的Name属性变为CommForm,将标题改为The Communication Test,选择File/Save As将新的窗体存储为CommFrm.pas,接下来参照图1和图2将控件添加到主窗体中。

图1图2由图1和图2我们可以看出,通过设置页可选定进行数据传输的通信端口和端口的波特率、奇偶校验、数据位和停止位,通信时每传输一个字符都将触发响应事件,在通信页“传输显示”位置可看到当前正在进行传输的数据。

同时当出现回车换行符时将整行内容显示在memDisplay新的一行中,而全部接收的内容还将存在一个文件中。

部分源代码如下:变量说明varCommForm:TCommForm;ss:string;savef,readf:file of char;i,j:longint;初始化procedure TCommForm.FormCreate(Sender:TObject);beginmport:=1;mscomm.settings:='9600,n,8,1';mscomm.inputlen:=1;mscomm.inbuffercount:=0;mscomm.portopen:=true;ss:='';i:=0;j:=0;assignfile(savef,'save1');rewrite(savef);assignfile(readf,'read1');reset(readf);end;设置确定procedure TCommForm.btnConfirmClick(Sender:TObject); beginif mscomm.portopen thenmscomm.portopen:=false;mport:=strtoint(edtCommport.text); mscomm.settings:=edtCommsetting.Text;end;传输事件procedure TCommForm.MSCommComm(Sender:TObject); varfilenrc:char;buffer:variant;s1:string;c:char;begincase mEvent ofcomEvSend:beginwhile not(eof(readf))dobeginread(readf,filenrc);mscomm.output:=filenrc;j:=j+1;lblDisplay.caption:=inttostr(j);if mscomm.outbuffercount>=2thenbreak;end;end;comEvReceive:beginbuffer:=mscomm.Input;s1:=buffer;c:=s1[1];ss:=ss+c;i:=i+1;lblDisplay.caption:=c+inttostr(i);write(savef,c);if(c=chr(10))or(c=chr(13))thenbeginlblDisplay.caption:='cr'+inttostr(i);memDisplay.lines.add(ss);ss:='';end;end;end;end;当然还有许多串口控制的ActiveX控件,有控件用是方便,但是是否说没有控件就不能用Delphi本身解决问题呢。

基于Delphi串行通信编程的原理和编程方法


备在收到计算 机指令后执行设备 控制并将反馈信 息发
( nt lS d u e; — c s o p n B f r w d
fnt n T y o m. i C m u ci M C m Wre o m o t B ts0 i :W0 D : ola; yeT Wre t D R )B oen
传送到 B设备 中时,数据首先会 送到 B设 备 的接收 缓
冲 区 . 设 备 B的 C U再 到 接 收 缓 冲 区 中将 数 据 读 取 而 P
出 来 并 进 行 处 理
收稿 日期 :0 2 0 —0 21— 5 8 修 稿 日期 :0 2 0 —0 21- 6 8
作 者 简介 : 慧 (97 , , 苏 常 州人 , 士 , 究 方 向 为 软 件 工 程 、 李 17 一)女 江 硕 研 系统控 制
现 计 机 21o 中 @ 代 算 0. 26
() 4 设置传输速度等参数 () 5 发送数据 wi fe读取数据 R a Fl re l t , i ed i e
/ / 向通 信 口发 送 数 据 函数
为 后 台 通 信 。最 常用 的 串 口通 信 方 法 是计 算 机 作 为 主 动 , 备作为被 动。由计算机主动发送 指令到设备 , 设 设
Va r
送到计算机 。
D lh 下 进 行 多 线 程 编 程 主要 引 用 了一 个 T p . ep i y e
W ftStt :BOOL; i e ae By e W rte t s itn:DW ORD;
T ra hed类 . 型 如 下 : 模
u iT pT ra; nt y e h e d
T cn hed=cas Fra) Sa T ra ls( hed T
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

通信参数
数据的传送速度 数据的传送单位
数据的传送速度
波特率:每秒所能产生的最大电压状态改变率(一秒 钟可以振荡的次数)bps 通信双方必须要取得一样的通信速度。原始信号经过 不一样的波特率取样后,所得的结果完全不一样,如 取样速度只有原来一半时,信号被跳着取样,数据因 此错误。
数据的传送单位
一般串行通信端口所传送的数据是字符类 型,若用来传输文件,则会使用二进制 的数据类型。
Delphi串口通信编程 Delphi串口通信编程
第一章 基本概念
1. 2. 3. 4. 5. 6. 通信 串行通信 硬件基础知识 模式及流量 接线和错误预防 错误排除
1、通信
通信:不同的独立系统通过线路互相交换数据 数据通信:终端与计算机之间的通信或计算机与 计算机之间的通信 网络:构成整个通信的线路
串行数据的流动方式
当数据要由A设备传送至B设备前,数据会 先被送到A设备的数据输出缓冲区,接着 再由此缓冲区将数据由RS-232线路传送到 B设备;同样地,当数据通过硬件线路传送 到B设备时,数据首先会送到接收缓冲区, 而设备B的CPU再到接收缓冲区将数据读取 并进行处理。
握手
握手信号:提供一种控制数据流的方法,即接收设备可 以控制发送设备的数据发送。 如果接收设备速度比发送速度快,握手信号可以略去。 在异步串行通信中,这称之为握手(handshaking)或流 量控制(flow control)。 流量控制:保证传输双方都能正确地传送和接收数据而 不会漏失。 握手控制可以具休分为硬件握手和软件握手。
USB( USB(Universal Serial Bus)接口 Bus)接口
集成一般计算机所使用的外围设备的连接方式, 而且其所采用的信号传输方式也是串行通信。 USB特性:低价位,热连接,单一的连接头方式,连接数 多,线上供电,不占系统资源,错误检测与复原,节省 能源,支持四种传输(巨量、实时、中断及控制4种传输 模式),速度较快(12M bps/RS-232最快115bps)
非文本编码
某些可执行指令文件和图形图像文件就是 以二进制形式而不是ASCII码形式存储的。 一个数据可用二进制形式存储,可以占多 个字节。 在通信领域,常常把这种类型的资料叫做 二进制数据。

帧:在串行异步通信情况下,构成一个字 节的那些数据单元被称为数据位,在数 据位的前、后要加上起始位、停止位和 奇偶校验位。 一个字符所使用的位数根据协议而不同。 称这些位数为字符位数据长或字长。 通常不是8位就是7位。
DCE准备就绪,可以 接收
信号地
数据设备就绪
请求发送 清除发送 振铃指示
DTE通知DCE请求 发送
CTS(Clear to Send)DCE已切换到接收 模式 RI(Ring Indicator) 通知DTE有远程呼 叫
一次应答呼叫过程
Modem从接收到振铃信号开始,到数据传 输结束Modem和DTE恢复到原来的空闲 状态为止的过程。
数据传送 通信的类型 字符传输
数据传送
完整的通信系统包括发送端、接收端、转换数据 的接口以及传送数据的实际信道或媒体
DTE(Data Terminal Equipment):发送与接收的节点 DSE(Data Switching Equipment):中间节点,负责数据转送工作 DCE(Data Communication Equipment ):负责数据与电气信号转换 的设备 DTE与DCE间的数据传输线路通常使用RS-232 DTE与DSE间的媒体则包括了双绞线、同轴电缆、光纤或无线电等
起始位及停止位
异步串行传输时需要 当发送端要开始传送数据时,便将传输 线上的电压由低电位提升至高电位,而 当传送结束后,再将电压降至低电压。 接收端会因起始位的触发(因电压由低 电位升至高电位)而开始接收数据;并 因停止位的通知(因电压维持在低电位) 而确节知道数据的字符已经结束。
校验位的检查
用来检查所传送数据正确性的一种核对 码,其中又分成奇校验(Odd)及偶校验 (Even) 串行通信上的字符数据格式 起始位+传送字符+校验位+停止位
字符传输
位和字节 文本编码 非文本编码 帧
位和字节
二进制中的每一位0和1,被叫做一个位 每8个位构成一个字节 一个字节中最右面的位被称为第0位,最 左面的位被称为第7位。
文本编码
文本(字符字母、标点符号等)在计算机 中存储时,每个不同的字符都用不同的 数值来表示。这些数值的范围通常在0127或0-255范围。 7位:ASCII码,每个字节留一个备用位 8位:前128个遵循ASCII码规则,其余的 128个用来做扩展字符、数字符号、图形 字符等编码。
4、模式及流量
工作模式 硬件握手 软件握手
工作模式
当计算机在进行数据的传送与接收时,传输线上的数据 流动情况可分为3种: 单工:传输线上的数据流动只有一个方向 半双工:数据流动是双向,但同一时间只能一个方向 行进 全双工:传输线同时具有两个方向的传输能力 RS-485属于半双工,RS-232属于全双工(引脚在设计时 就是接收与传送是分属两个不同的引脚与线路。)
RS-485的通信方式可有效地防止噪声信号的干扰。 RS-485的信号将被发送出去时会先分成正负的两条线路, 当到达接收端后,再将信号相减还原来原来的信号; 如果将原始的信号记为(DT),而被分成后的信号分 别记为(D+)及(D-),则原始的信号与离散的信号 在由发送端发送出去时: (DT)= (D+)- (D-) 如果此线路受干扰,则两条传输线上的信号会分别成为 (D+)+Noise及(D-)+Noise (DT)= [(D+) +Noise]- [(D-) +Noise] = (D+)- (D-)
跳线
跳线的实际意义就是一个传送的信号必须到达对方的接 收引脚,如此才能形成一个完整的通路。 跳线:欲将数据从一个地方传送至另一个地方,其实只 要使用第2引脚、第3引脚与第5引脚就可以形成一个最 简单的通信线路。实际制作:将RS-232线的一端接头 拆掉,将里面的第2引脚和第3引脚对调即可。 跳线的意义:甲方传送的数据必定到乙方的接收信道; 而乙方的传送数据则会到达甲方的接收信道,双方的 传送与接收形成一个完整的回路。
IEEEIEEE-1394
IEEE-1394(也称FireWire,火线)与USB一 样拥有即插即用的功能,也是用于解决 计算机与外围设备复杂的连接问题,并 且也是使用串行通信的传输方式。 IEEE-1394的传输速度是400Mbps,而且速 度还向1000Mbps迈进
USB与IEEE-1394的比较 USB与IEEE-1394的比较
软件握手
以数据线上的数据信号来代替实际的硬件线路 最常见的是XON/XOFF协议: 若接收端欲使发送端暂停数据的传送时,它便向发送端 送出ASCII第19号字符(十六进制是13);而欲恢复传送 时,便向发送端送出ASCII第17号字符(十六进制是11), 两个字符的交互使用,便可控制发送端的传送操作了。 其操作流程与硬件握手类似。
2、串行通信
RS-232串行通信 RS-485串行通信 USB接口 IEEE-1394
RS-232串行通信 RS-232串行通信
RS-232的通信端口是每台计算机上的必要配置, 通常含有COM!和COM2两个端口。 计算机上的RS-232均是公头 一般有两种:9引脚和25引脚
RS-485串行通信 RS-485串行通信
传送的方式
并行传送(Parallel ):一次的传输量为8个位(1字节) 通过并行端口,如打印机 串行传送(Serial ):一次只传输1个位 通过串行端口,如RS-232
通信的同步方式:接收设备能自动与发送计算机同步,接收 字符有规则的分割开来,以块为单位,没有起始位和 停止位,效率高。 异步方式:以字符为传送单位,传送的字符之间有无 规律的间隔,这样可能使接收设备不能正常接收数据, 因为每接收完一个字符都不能确切地知道下一个接收 的字符从何时开始。(通过加开始位和停止位实现) 传输效率低,成本也低。
设备设备->计算机
1. 计算机将DTR引脚降为低电压 2. 设备检测到DTR引脚为低电压后,暂停数据 的传输;同时计算机也会继续处理位于缓冲 区的数据 3. 待计算机的接收缓冲区中数据量下降到一定 程度后,计算机将DTR引脚的标准电压升高 4. 设备一检测到DTR引脚为高电压后,随即继 续传送数据给计算机
5、接线和错误预防
接线方法 错误预防
接线方法
RS-232口特点:
– 9引脚或25引脚 – 公头(区别于打印机接头)
1 2 3 4 5 6 7 8 9 5 4 3 2 1 9 8 7 6
计算机上为公头
连线上为公头
当使用RS-232与Modem进行连接时,直 接连接即可 当使用RS-232和其他的设备进行连接时, 有时就必须做必要的跳线
比较项目 USB IEEE-1394 高速设备
100,200,400
应用 低速设备 带宽( Mbps) 1.5,12 电缆长度 5米 电缆 4线 即插即用 支持
4.5米 6线 支持
3、硬件基础知识
PC机的RS-232接口名称尚未统一,有多个 名称:RS-232口、串口、通信口、COM 口、异步口等。
硬件握手
使用专门的握手电路去控制数据的传输。 当接收设备准备好之后,就通过专用的握手电路传送一 个正电压给发送设备,指示发送设备发送数据。如果接 收设备传送一个负电压给发送设备,则指示发送设备停 止发送数据。 硬件握手用到DSR、CTS、DTR、RTS4条硬件线路,其 中DTR、RTS指的是计算机上的RS-232端;而DSR、 CTS则是指被控制的设备端。
1 2 3 4 5 6 7 8 9
常用的9 RS-232信号线 常用的9条RS-232信号线
相关文档
最新文档