在delphi7中利用mscomm控件串口通信编程

合集下载

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 利用TComm组件 Spcomm 实现串行通信

Delphi 利用TComm组件 Spcomm 实现串行通信

Delphi 利用TComm组件 Spcomm 实现串行通信2010-08-06 09:15:09| 分类:默认分类|举报|字号订阅摘要:利用Delphi开发工业控制系统软件成为越来越多的开发人员的选择,而串口通信是这个过程中必须解决的问题之一。

本文在对几种常用串口通信方法分析比较的基础上,着重讨论了Delphi开发环境下利用Spcomm控件实现PC机与单片机之间串口通信的方法,研究了Spcomm串口通信的关键技术问题,并通过一个实例给出了Spcomm控件在Delphi7.0串口通信中的应用。

1 引言目前, 随着现代信息技术的发展,计算机串口通信技术已日趋成熟。

由于微机性能价格比高、分析处理能力强、处理速度快以及单片机抗干扰能力强、使用灵活等特点,利用PC机作为上位机,单片机作为下位机的主从工作方式在工业控制领域中被广泛采用。

无忧S3C2410 ARM9开发板 S3C44B0 ARM7 开发板350元单片机开发系统498元无忧单片机实验开发板238元PC机与下位机的通信可以采用高级语言编程实现,如Delphi、VC等。

Delphi 是新一代面向对象的可视化开发工具,它具有功能强大、简便易用和代码执行速度快等特点,越来越在构架企业信息系统方面发挥着重要作用。

由于Delphi 这些显著特点,利用Delphi开发工业控制系统软件成为越来越多的开发人员的选择,而实现系统监测控制和信息处理的关键是解决PC机与单片机之间的串口通信问题。

2.Spcomm串口通信组件简介用Delphi 实现串口通信,常用的方法有:使用控件,如Mscomm和Spcomm控件等;使用API函数;在Delphi 中调用其它串口通信程序[1]。

使用API方法的优点是比较适合于编写较为复杂的低层次通信程序,但缺点是编写串口通信程序较为复杂,需要掌握大量通信知识。

Spcomm是Small-Pig Team 开发的一个第三方Delphi串口控件[2],该控件具有丰富的与串口通信密切相关的属性及事件,提供了对串口的各种操作,且编程简单、通用性强、可移植性好。

win7系统delphi7和delphi2010下安装spcomm串口控件(1)(1)

win7系统delphi7和delphi2010下安装spcomm串口控件(1)(1)

一、delphi 7下,spcomm控件的安装。

二、在DELPHI 2010 中安装SPCOMM。

自己在网上找了很久,也没找,好不容易弄出来了,把过程发到网上,希望对大家有所帮助。

先点击file->new->package-delphi
在右侧找到CONTAINS选项
右击出现菜单,选择ADD
在出现的对话框中找到SPCOMM.PAS文件,选中并打开
点击打开后,出现如图所示画面,(由于每个人存放SPCOMM.PAS文件的路径不同,出现的画面也有所不同),在PACKAGE1.BPL上右击
出现快捷菜单
在INSTALL上单击。

出现下面画面,这时什么也不要做
很快编辑完成,出现如下图:
点击两次OK完成安装。

以后在用的时候就会在SYSTEM的面板中找到它,就和使用其它元件一样使用它了。

找到它的方法:
看见了吗,就在这里,呵呵。

delphi7串口通信(spcomm控件)实例

delphi7串口通信(spcomm控件)实例

Delphi7串口通信(spcomm控件)实例最近在用delphi7做串口通信,网上找了很多例程,复制粘贴运行就没有能通过的,再次鄙视一下列位先行者,你们帮人倒是帮到底啊,没一个是拿过来能用的,太坑了,在N天的努力下(鄙人比较笨)终于通过串口接收到数据,希望给后来人予以帮助,程序如下:功能简介功能比较简单,只是从串口接收单片机发送的数据,给memo1unit Unit1;interfaceusesWindows, Messages, SysUtils, Variants, Classes,Graphics, Controls, Forms,Dialogs, SPComm, StdCtrls;typeTForm1 = class(TForm)Button1: TButton;Button2: TButton;Comm1: TComm;Memo1: TMemo;procedure Button1Click(Sender: TObject);procedure Button2Click(Sender: TObject);procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;BufferLength: Word);procedure Comm1ModemStateChange(Sender: TObject; ModemEvent: Cardinal);private{ Private declarations }public{ Public declarations }end;varForm1: TForm1;viewstring:string;i:integer;rbuf,sbuf:array[1..16] of byte;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);beginComm1.OnReceiveData:=Comm1ReceiveData;comm1.StartComm;end;//打开串口procedure TForm1.Button2Click(Sender: TObject);begincomm1.StopComm;end;//关闭串口procedure m1ReceiveData(Sender: TObject; Buffer: Pointer;BufferLength: Word);vari:integer;beginviewstring:='' ;move(buffer^,pchar(@rbuf)^,bufferlength);for i:=1 to bufferlength doviewstring:=viewstring+ inttohex(rbuf[i],2)+'' ;viewstring:='接收'+ viewstring;memo1.lines.add(viewstring);memo1.lines.add('');end;//接收数据procedure m1ModemStateChange(Sender: TObject;ModemEvent: Cardinal);beginend;end.运行测试,顺利通过,接收到单片机发送的数据,感谢百度好友的帮助。

Delphi编写串口通讯方法(转)

Delphi编写串口通讯方法(转)

Delphi编写串⼝通讯⽅法(转)前段时间做了个东西,计算机和单⽚机通讯,⽤到了串⼝编程,上位机⽤的是delphi,下位机⽤ats51,程序也做完了,顺便把Delphi串⼝编程给⼤家介绍以下.Delphi串⼝通讯可以同过以下⼏种⽅式:1.windows API函数。

2.Spocmm组件。

3.PComm库函数。

4.Mscomm控件。

1.windows API函数。

由于API函数实现起来⽐较⿇繁,这⾥就不做介绍了,主要介绍其它三种⽅式 .第三⽅组件或控件封装了API函数,简化了编程的难度,并提供详细帮助。

2.Spocmm组件。

SPcomm是专为delphi开发的组件,虽然它也是封装了windows api,但是我们可以看到它的源代码。

它提供了事件驱动的⽅式接收数据,在编程的时候,我们可以在OnReceiveData函数中接收到数据,并做相应的处理,SPcomm组件的主要属性:CommName:设置通讯端⼝BaudRate:设置端⼝波特率StartComm:打开串⼝StopComm:关闭串⼝WriteCommData:向串⼝写数据函数OnReceiveData:接收数据事件3.PComm库函数。

PComm库函数PComm 库函数是台湾MOXA公司提供的,他为⽤户提供了基于win32 api的开发接⼝。

PComm库函数分为7⼤类控制函数数据输⼊函数数据输出函数状态函数事件驱动函数传输⽂件函数特殊设定函数控制函数主要包括sio_open,sio_close,sio_ioct,sio_flushsio_open(PortNum) 打开串⼝sio_close(PortNum) 关闭串⼝sio_ioct(PortNum, baud, mode)设置串⼝的⼯作模式,包括 波特率,数据位,停⽌位,效验等sio_flush(portNum,func)清除发送,接收缓冲区 其中func 为0清空输⼊ ,为1清空输出,为2清空输⼊输出数据输⼊函数主要包括sio_getch,sio_readsio_getch(PortNum) 从输⼊缓冲区读⼀个字符sio_read(PortNum,buf,len)从输⼊缓冲区读指定个数的字符数据输⼊函数主要包括sio_putch sio_writesio_putch(PortNum) 写⼀个字符到输出缓冲区sio_write(PortNum,buf,len)写指定个数的字符到输出缓冲区状态函数主要包括 sio_lstatus,sio_getbaud,sio_getmodesio_lstatus(portNum)获取串⼝的CTS,DSR,DCD,RI线的状态sio_getbaud(portNum)获取串⼝的波特率sio_getmode(portNum)获取串⼝的⼯作模式。

Delphi环境下利用MSComm控件开发串口通信程序

Delphi环境下利用MSComm控件开发串口通信程序

D e l p h i 环境下利用MS C o m m 控件开发串口通信程序P r o g r a m D e v e l o po f t h e S e r i a l C o m m u n i c a t i o nU s i n gMS C o m m i nD e l p h i汤勃徐立伟饶润生(武汉理工大学武汉430063)【摘要】论述了在D e l p h i 环境下,如何利用V B 的通信控件MS C o m m 实现串行通信,对MS C o m m 控件的原理进行了详细的阐述。

并介绍了它在管道压力监控中的应用。

【关键词】串口通信,D e l p h i ,MS C o m m ,管道压力A B S T R A C T I nt h ep a p e r ,t h ea u t h o r se x p l a i nh o w t or e a l i z et h es e r i a l c o m m u n i c a t i o nw i t hMS C o m m o f V B o nw i n d o w s 98i n D e l p h i ,a n di n t r o d u c e i t 's r e a l i z a t i o ni nt h e c o n t r o l l i n gp r o g r a m o f p i p e l i n e p r e s s u r e .K E Y WO R D S s e r i a l c o m m u n i c a t i o n ,D e l p h i ,MS C o m m ,p i p e l i n e p r e s s u r e在工业控制中,经常要组成上位机为P C 机而下位机为单片机的二级系统,通过R S 232通信接口进行通信。

例如,在三相流管道阻力机理的实验研究中,我们可以组成这样的二级系统进行通信,以便进行数据处理,进而分析数据,得到实验结论。

Delphi环境下利用SPComm控件实现计算机与PLC的串行通信

Delphi环境下利用SPComm控件实现计算机与PLC的串行通信
Absr t tac So e m me h s t e ie s i c t od o r al er z al omm unca i un r te n r men l i e umm a ie i t i pa r a i ta d i t on de h e vi on tofDeph ar s rz d n hs pe tfr ,n s itodu es h c ar t it o SP nr c t e h acer i f sc Com m c om p en . on tMea whi ho n l e w t r al e er c m m u iat n et e PC a d o e i s i z al o nc i b w en o n PLC
可 完成 大部 分 通 信 功 能 。编 程 人 员 从 大 量 繁 琐 的底 层 编 程 工作
图 1 S Co P mm 控 件 安 装 界 面
中解 脱 出来 。 本 文 以 OMR ON公 司 的 C M1 P A小 型 P C 为 例 , L 详 细 讨 论 了 在 D lh . 境 下 如 何 利 用 S Co ep i0环 7 P mm 控 件 实 现 P C 与 计 算 机 的 串行 通 信 问题 。 L
摘 要
首 先概 述 了 D lh 环境 下 实现 串行 通 信 的 几 种 方 法 ,接 着介 绍 了 S Co ep i P mm 控 件 的特 性 并 详 述 了如 何 使 用 S Co P mm
控 件 实现 计 算 机 与 P C 之 间 的 串行 通 信 , 后 给 出 了通 信 实例 。 L 最 关键词 : 串行 通 信 , ep i L S C mm 控 件 D lh, C,P o P
罗 贤 东 ’ 张 民 赵 卫 华 ’ 张雅 娟 。

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本身解决问题呢。

MSComm控件进行串口编程的基本步骤

MSComm控件进行串口编程的基本步骤

MSComm控件进⾏串⼝编程的基本步骤Visual C++为我们提供了⼀种好⽤的ActiveX控件Microsoft Communications Control(即MSComm)来⽀持应⽤程序对串⼝的访问,在应⽤程序中插⼊MSComm控件后就可以较为⽅便地实现对通过计算机串⼝收发数据。

要使⽤ActiveX控件MSComm,程序员必须将其添加⼊⼯程,其⽅法是: (1)单击主菜单project的⼦菜单Add To project的Components and Controls选项; (2)在弹出的"Components and Controls Gallery"对话框中选择Registered ActiveX Controls⽂件夹中的"Microsoft Communications Control,version 6.0"选项 单击其中的"Insert"按钮,MSComm控件就被增加到⼯程中了。

与此同时,类CMSComm的相关⽂件mscomm.h和mscomm.cpp也⼀并被加⼊Project的Header Files和Source Files中。

当然,程序员可以⾃⼰修改⽂件名1在建⽴的⼯程中插⼊MSComm控件2添加MSComm控件ID的控制变量或对象3对串⼝进⾏初始化,设置MSComm控件的属性4添加串⼝事件的消息处理函数OnComm()函数,在函数中根据应⽤需要,编写数据处理代码5编写串⼝发送等其他代码6关闭串⼝⼀个MSComm控件只能对应⼀个串⼝,如果应⽤程序需要访问多个串⼝,必须使⽤多个MSComm控件。

处理通信问题的⽅式:事件驱动⽅式(与中断原理类似,触发⼀个事件处理函数),查询⽅式。

MSComm控件的重要属性中的⼀部分CommPort设置并返回通信端⼝号Settings以字符串的形式设置并返回波特率、奇偶校验、数据位、停⽌位。

Delphi编程中用MSComm控件实现串行通讯

Delphi编程中用MSComm控件实现串行通讯

Delphi编程中用MSComm控件实现串行通讯
张立材
【期刊名称】《微计算机信息》
【年(卷),期】2001(017)003
【摘要】本文介绍了MSComm控件在Delphi中的注册方法,以及在Delphi程序设计中用MSComm控件实现串行通讯的编程方法.
【总页数】2页(P26-27)
【作者】张立材
【作者单位】710055,西安市雁塔路13号,西安建筑科技大学信控学院
【正文语种】中文
【中图分类】TP31
【相关文献】
1.MSComm控件实现PC与PLC串行通讯 [J], 杨久红;王小增
2.VB中如何利用MSComm控件实现串行通讯 [J], 张晓红;闫东升
3.利用Visual C++6.0的MSComm控件实现计算机与变频器的串行通讯 [J], 杨玲
4.应用MSComm控件实现计算机与PLC间的串行通讯 [J], 赵晴
5.基于MSComm控件的数字万用表与计算机串行通讯设计及实现 [J], 陈格因版权原因,仅展示原文概要,查看原文内容请购买。

Delphi7.0及其串口通信

Delphi7.0及其串口通信

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

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

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

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

图2.1 Delphi7.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诞生的基础。

SPCOMM控件在Delphi串口通信中的应用

SPCOMM控件在Delphi串口通信中的应用

SPCOMM控件在Delphi串口通信中的应用2008年03月10日星期一下午01:03关键词:Delphi,串口通信,Spcomm控件目前, 随着现代信息技术的进展,运算机串口通信技术已日趋成熟。

由于微机性能价格比高、分析处理能力强、处理速度快以及单片机抗干扰能力强、使用灵活等特点,利用PC机作为上位机,单片机作为下位机的主从工作方式在工业操纵领域中被广泛采纳。

PC机与下位机的通信能够采纳高级语言编程实现,如Delphi、VC等。

Delphi 是新一代面向对象的可视化开发工具,它具有功能强大、简便易用和代码执行速度快等特点,越来越在构架企业信息系统方面发挥着重要作用。

由于Delphi 这些明显特点,利用Delphi 开发工业操纵系统软件成为越来越多的开发人员的选择,而实现系统监测操纵和信息处理的关键是解决PC机与单片机之间的串口通信咨询题。

Spcomm共实现了三个类:串口类Tcomm、读线程类TreadThread以及写线程类TwziteThread[1]。

Tcomm的某个实例在方法StartComm中打开串口,并实例化了一个读线程ReadThread和一个写线程WriteThread,它们和主线程之间进行消息的传递,实现串口通信。

在Delphi7.0中安装Spcomm串口通信控件的方法为:选择Delphi7.0的“Component”菜单,点击“Install Component...”菜单项,然后在弹出的Into existing package 属性页中Unit file name输人框中选择SPCOMM.pas文件,单击两次“OK”按钮后,就能够将Spcomm控件安装到Delphi7.0的System组件页上。

3 Spcomm控件串口通信的实现CommName属性:运算机串口端口号的名字,COM1、COM2……等,在打开串口前,必须填写好此值。

Parity属性:校验位 None、Odd、Even、Mark、Space等。

在delphi7中利用mscomm控件编程

在delphi7中利用mscomm控件编程

MSCOmm是微软一个强大的串口通讯的控件,其强大,简单的特点今我们不舍,在Delphi中我们也可以使用它。

下面这些代码是针对发送和接收为16进制处理的。

varsenddata:array[1..10] of char;reData:array of Variant;sendstr:string;restr:string;i:longint;beginmPort := 1; //指定端口mscomm1.Settings := '9600,N,8,1'; //其它参数mscomm1.InBufferSize := 1024; //接收缓冲区mscomm1.OutBufferSize := 1024; //发送缓冲区mscomm1.InputMode := comInputModeBinary; //接收模式mscomm1.InputLen := 0; //一次读取所有数据mscomm1.SThreshold := 0; //一次发送所有数据mscomm1.InBufferCount := 0; //清空读取缓冲区mscomm1.OutBufferCount := 0; //清空发送缓冲区mscomm1.PortOpen:=true; //打开端口MSComm1.RThreshold := 16; //设置接收多少字节开产生oncomm事件senddata[1]:=chr($06); //要发送的数据senddata[2]:=chr($03);senddata[3]:=chr($00);senddata[4]:=chr($03);senddata[5]:=chr($10);sendstr:='';for i:=1 to 5 dosendstr:=sendstr + senddata[i];mscomm1.output:=sendstr; //发送数据i:=0;bzw:=false;repeatsleep(10);Application.ProcessMessages;i := i + 1;If i > 30000 Thenbeginshowmessage('发送超时!');break;end;Until bzw = true;redata:=mscomm1.Input; 接收数据restr:='';for i:=0 to vararrayhighbound(redata,1) dorestr:=restr + inttohex(redata[i],2)+' '; mscomm1.PortOpen:=false;flatmemo1.Text:=restr;end;//oncomm事件procedure TForm1.MSComm1Comm(Sender: Tobject); begincase mEvent ofcomEvReceive: bzw := true;end;end;最后,记事发布软件时要带上Mscomm32.ocx文件。

基于Delphi7.0 的上位机与PLC 的通信

基于Delphi7.0 的上位机与PLC 的通信

基于Delphi7.0 的上位机与PLC 的通信安宪军1 , 黄尔烈1 , 贾少锐1 , 张常全2(1.河北工程大学信息与电气工程学院, 河北邯郸056038 2.邯郸职业技术学院, 河北邯郸056001)摘要:本文介绍在将计算机与PLC 结合起来,组成高性能价格比的小型集散控制系统―热电厂循环水过程控制系统中,在基于Delphi7.0 上位机监控软件开发环境中如何实现上位机与S7-200 系列PLC 之间通信。

关键词:上位机; S7-200 PLC; 串行通信; Delphi7.0中图分类号:TP273 文献标识码: B1、引言随着微电子技术、计算机技术以及自动控制技术的迅猛发展,PLC(Programmable Logic Controller)作为新一代工业控制器,以其高性能价格比在工业测控系统中获得了广泛的应用。

在由PLC构成的小型集散控制系统中,PLC具有使用简单方便,故障率低,对现场环境要求不高等优点;但它也有一些缺点,即数据的计算处理与管理能力较弱,特别是不能提供良好的人机界面。

将计算机与PLC结合起来,可使两者优势互补,既可以充分利用PLC的高可靠性、开发周期短、编程容易等特点;又可充分利用计算机友好的人机界面,实现人机对话和监控功能,并可进行一定的辅助决策,组成高性能价格比的控制系统。

实现计算机与PLC结合的控制系统的关键之一是二者之间的通信。

本文以热电厂循环水过程控制的监控系统为基础,详细介绍了基于Delphi7.0的监控软件开发环境中上位机与S7-200系列PLC之间通信的实现。

2、S7-200系列PLC与PC的通信及通信协议2.1、S7-200系列PLC的通信协议S7-200系列PLC的通信协议有以下四种。

⑴、PPI(点到点接口)协议:该通信协议是一个主/从协议,是西门子公司专为S7-200 系列PLC开发的一个通信协议,用于PLC与其编程器或其它西门子公司的人机接口产品之间的通信,一般不对外公开。

在Delphi中用CPort组件开发串口通信程序

在Delphi中用CPort组件开发串口通信程序
编 程 要 点 : ̄ C o mP o r t 组 件提 供 两 种 通 讯处 理方 式 ,即查 询 方 式 和 事 件驱 动方 式 。查 询 方 式 ,就 是 在 程 序 中 反复 查 询 串 口 状态 ( 如 接 收缓 冲区 的 字 节数 I n p u t C o u n t ),根据 状 态 进行 处 理
F l o w C o n t r o l 的子 属 性 X o n X o f I n 和Xo n Xo f f O u t 的值 都 自动设 置 为 f a l s e 。 自己设 计控 制 协议 ,对 串 口通信 过程 进 行控 制 。
Mo d e m的通信。开发 一般 的串口通信程序时 ,特 别是开发二进
制 数 据 传 送 的 通 信 程 序 ,可 以 选 择 无 控 制 方 式 ,即 选 择 属 性
F l o wC o n t r o l 的 子 属 性 F l o w C o n t r o l 取值 为f c N o n e 。这 时 ,
化开 发工具 ,具有开发效率 高 、容易使用和功能强大等特 点。 在此 ,设计一个简单的字符 串接收和发送程序 ,论述在D r e l p h i 7 中 用C o mP o r t 组 件 开发 串 口通 信 程序 的 方法 。
1 Co mPo r t 组 件 介绍
C o m P o r t 控件 ;②初始化并打开串口;③捕捉串口事件或查询串 口;④对串口进行读写;⑤关闭串口。
开串口/ 关闭串口。@B a u d R a t e 属性 :波特率。@Da t a B i t s  ̄性 : 数据位数 。@S t o p B i t s 屙 性:停止位位数。@P a r i t y 属性 :校验 ,
其 中子 属性 B i t s  ̄ 定 校 验 位 ,当 为 p r No n e 时 , 无 校 验 位 ; 当 p r E v e n 时 采 用偶 校 验 ;当 为p r O d d 时 采用 奇 校 验 。@ F l o w C o n t r o l

MSComm控件在串口编程中的使用

MSComm控件在串口编程中的使用

MSComm控件在串口编程中的使用MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。

MSComm 控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。

Microsoft Communications Control(以下简称MSComm)是 Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。

具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。

1. MSComm控件两种处理通讯的方式MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。

1.1 事件驱动方式事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。

在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者 Carrier Detect (CD) 或 Request To Send (RTS) 线上一个字符到达或一个变化发生时。

在这些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。

OnComm 事件还可以检查和处理通讯错误。

所有通讯事件和通讯错误的列表,参阅 CommEvent 属性。

在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。

这种方法的优点是程序响应及时,可靠性高。

每个MSComm 控件对应着一个串行端口。

如果应用程序需要访问多个串行端口,必须使用多个 MSComm 控件。

1.2 查询方式查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。

在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误,只要MSComm 属性值发送了变化,就表明一个通信事件或一个错误发生。

如果应用程序较小,并且是自保持的,这种方法可能是更可取的。

Delphi的MSCOMM实现上位机与PLC间的串行通信

Delphi的MSCOMM实现上位机与PLC间的串行通信

一上位机与PLC间的串行通信随着现代信息技术的发展以及计算机网络的广泛应用,计算机通信技术已经日趋成熟。

作为传统的计算机通信方式的串行通信,由于具有线路简单、应用灵活、可靠性高等一系列优点长期以来获得了广泛的应用。

计算机串行通信在数据财经、数据通信、故障检测、计算机远程监控等方面有广泛的实用价值,特别在Windows下的串口通信可以充分利用Windows下的软件资源优势,实现多任务条件下对外部的数据传输、信息收集和处理。

在本系统中,我们采用了性能/价格比较高的计算机构成厂级的监控工作站。

在PLC与上位计算机之间采用RS-485和RS-232C标准通信接口进行通信。

在两级计算机控制系统中,最不稳定的环节就是上位机。

为了保证系统的稳定性,避免因上位机的故障导致系统控制失灵,所有采集到的信号都反馈到PLC当中。

上位机需要通过串行通信取得所需的数据信息,并通过串行通信将必要的控制信息和参数设置信息写入PLC的数据存储区。

因此,串行通信作为上位机和下位机联系的唯一方式,在整个系统中具有非常重要的作用。

1.1上位机与PLC间的串行通信计算机与计算机或计算机与外部设备之间的数据传输和交换的方式主要有串行通信和并行通信两种方式,其中串行通信指的是数据逐位传输的方式。

由于串行通信方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。

1.1.1串行通信串行通信方式又可分为两种:同步串行通信方式和异步串行通信方式。

1.同步串行通信方式:同步串行通信是以数据块(字符块)为信息单位传送,每帧信息可以包含很多字符。

同步通信要求通信双方以相同的速率进行,而且要准证确协调,通常通过共享一个时钟或定时脉冲源保发送方和接收方准确同步。

这种通信方式的效率较高,但是对时钟同步要求非常严格,成本较高。

2.异步串行通信方式:异步串行通信以字符为信息单位传送。

双方需要遵守异步通信协议,以字符为数据单位,发送方传送字符的时间间隔不确定。

基于Delphi与MSCOMM的串口通信程序设计

基于Delphi与MSCOMM的串口通信程序设计

基于Delphi与MSCOMM的串口通信程序设计柴锁柱;柴华【摘要】讨论在Delphi开发环境下,使用MSCOMM控件开发Windows串行通信程序的方法,分析了MSCOMM的常用属性和事件,总结了用MSCOMM控件开发Windows串行通信程序的主要步骤和编程要点。

%This paper described Windows programming method of serial communication based on MSCOMM ActiveX in Delphi development environment, and then analyzed the common attributes and events of MSCOMM ActiveX, and finally summarized the main programming steps and key points of Windows serial communication using MSCOMM ActiveX.【期刊名称】《农业网络信息》【年(卷),期】2015(000)006【总页数】3页(P40-42)【关键词】串口通信;MSCOMM控件;Delphi【作者】柴锁柱;柴华【作者单位】南京工业职业技术学院,江苏南京 210023;上海硌矽电子科技有限公司,上海 200001【正文语种】中文【中图分类】TP315目前,计算机串口通信技术已经成熟。

由于个人计算机的性价比高、处理能力强,单片机抗干扰能力强、使用灵活方便。

所以用PC 机作为上位机,单片机作为下位机,构成主从工作方式的控制系统被广泛用于工业控制领域[1,2]。

编写PC 机与下位机的通信程序,可以采用高级语言实现,如Visual C++、Visual C#.NET、 Delphi等[3,4]。

Delphi 是面向对象的高效可视化开发工具,具有开发效率高、容易使用和功能强大等特点,利用Delphi 开发工业控制系统软件被越来越多的开发人员所选择。

SPCOMM实现串口编程

SPCOMM实现串口编程

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

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

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

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

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

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

SPCOMM的安装1.选择下拉菜单 Component中的 Install Component选项,弹出如图 1所示的窗口。

图 1在 Unit file name处填写 SPCOMM控件所在的路径,其他各项可用默认值,点击 OK按钮。

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

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

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

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
sleep(10);
Application.ProcessMessages;
i := i + 1;
If i > 30000 Then
begin
showmessage('发送超时!');
break;
end;
Until bzw = true;
redata:=mscomm1.Input; 接收数据
restr:='';
for i:=0 to vararrayhighbound(redata,1) do
restr:=restr + inttohex(redata[i],2)+' ';
sendstr:='';
for i:=1 to 5 do
sendstr:=sendstr + senddata[i];
mscomm1.output:=sendstr; //发送数据
i:=0;
bzw:考人民邮电《DELPHI串口通信编程》
-其他例子均是网络搜索。
:在delphi7中利用mscomm控件编程
Mscomm是微软一个强大的串口通讯的控件,其强大,简单的特点今我们不舍,在delphi中我们也可以使用它。下面这些代码是针对发送和接收为16进制处理的。
var
senddata:array[1..10] of char;
end;
end;
mscomm1.PortOpen:=false;
flatmemo1.Text:=restr;
end;
//oncomm事件
procedure TForm1.MSComm1Comm(Sender: TObject);
begin
case mEvent of
comEvReceive: bzw := true;
reData:array of Variant;
sendstr:string;
restr:string;
i:longint;
begin
mPort := 1; //指定端口
mscomm1.Settings := '9600,N,8,1'; //其它参数
mscomm1.InBufferSize := 1024; //接收缓冲区
mscomm1.OutBufferSize := 1024; //发送缓冲区
mscomm1.InputMode := comInputModeBinary; //接收模式
mscomm1.InputLen := 0; //一次读取所有数据
mscomm1.SThreshold := 0; //一次发送所有数据
mscomm1.InBufferCount := 0; //清空读取缓冲区
senddata[1]:=chr($06); //要发送的数据
senddata[2]:=chr($03);
senddata[3]:=chr($00);
senddata[4]:=chr($03);
senddata[5]:=chr($10);
mscomm1.OutBufferCount := 0; //清空发送缓冲区
mscomm1.PortOpen:=true; //打开端口
MSComm1.RThreshold := 16; //设置接收多少字节开产生oncomm事件
相关文档
最新文档