SPCOMM 控件在 Delphi7.0 串口通信中的应用 2007 年 10 月 09 日 星期二 08:49 摘要:利用 Delphi 开发工业控制系统软件成为越来越多的开发人员的选择,而 串口通信是这个过程中必须解决的问题之一。 本文在对几种常用串口通信方法分 析比较的基础上,着重讨论了 Delphi 开发环境下利用 Spcomm 控件实现 PC 机与 单片机之间串口通信的方法,研究了 Spcomm 串口通信的关键技术问题,并通过 一个实例给出了 Spcomm 控件在 Delphi7.0 串口通信中的应用。 关键词:串口通信;Delphi7.0;Spcomm 控件 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],该控件具有丰富的与串口通信密切相关的属性及事件, 提供了对串口的各种操作,且编程简单、通用性强、可移植性好。在 Delphi 软 件开发中已经成为一个被广泛应用的串口通信开发控件。 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 控件串口通信的实现 控件的基本属性、 3.1 Spcomm 控件的基本属性、方法和事件 Spcomm 串口通信控件的基本属性、方法和事件说明如下: CommName 属性:计算机串口端口号的名字,COM1、COM2……等,在打开串口前, 必须填写好此值。
Parity 属性:校验位 None、Odd、Even、Mark、Space 等。 BaudRate:设定支持串口通信用的波特率 9600,4800 等,根据实际需要来定, 在串口打开后也可更改波特率,实际波特率随之更改。 ByteSize 属性:表示一个字节中,使用多少个数据位收发数据,根据具体情况 设定 5、6、7、8 等。 StopBits 属性: 表示一个字节中, 使用停止位的位数, 根据具体情况设定 1、 1.5、 2 等。 SendDataEmpty 属性:布尔属性,为 True 时表示发送缓存为空,或者发送队列 里没有信息;为 False 时表示表示发送缓存不为空,或者发送队列里有信息。 StartComm 方法:用来打开通信串口,开始通信。如果失败,则会导致串行口错 误。错误类型大致分为串行口己处于打开状态,所以不能打开串行口,不能创建 读写进程,