background image

CommName:填写 COM1,COM2

…等串口的名字,在打开串口前,必须填写好此值。

BaudRate:设定波特率 9600,4800 等,根据实际需要来定,在串口打开后也可更改波特率 ,
实际波特率随之更改。
ParityCheck:奇偶校验。
ByteSize:字节长度_5,_6,_7,_8 等,根据实际情况设定。
Parity:奇偶校验位
pBits:停止位
SendDataEmpty:这是一个布尔属性,为 true 时表示发送缓存为空,或者发送队列里没有信
息;为

False 时表示表示发送缓存不为空,或者发送队列里有信息。

2.方法
  

Startcomm 过程用于打开串口,当打开失败时通常会报错,错误主要有 7 种:

⑴ 串口已经打开 ;
⑵ 打开串口错误 ;
⑶ 文件句柄不是通讯句柄;
⑷ 不能够安装通讯缓存;
⑸ 不能产生事件 ;
⑹ 不能产生读进程;
⑺ 不能产生写进程;
  

StopComm 过程用于关闭串口,没有返回值。

  函数

WriteCommData(pDataToWrite: PChar;dwSizeofDataToWrite:Word ): boolean 用于发

送一个字符串到写线程,发送成功返回

true,发送失败返回 false, 执行此函数将立即得到返

回 值 , 发 送 操 作 随 后 执 行 。 函 数 有 两 个 参 数 , 其 中

  pdatatowrite 是 要 发 送 的 字 符 串 ,

dwsizeofdatatowrite 是发送的长度。
3.事件
OnReceiveData : procedure (Sender: TObject;Buffer: Pointer;BufferLength: Word) of object 
  当输入缓存有数据时将触发该事件,在这里可以对从串口收到的数据进行处理。

Buffer

中是收到的数据,

bufferlength 是收到的数据长度。

OnReceiveError : procedure(Sender: TObject; EventMask : DWORD)
  当接受数据时出现错误将触发该事件。
三.

SPCOMM 的使用

  下面,我们结合一个串口通讯的例子来说明

SPCOMM 的使用。

  为了实现

PC 与单片机 8051 之间的通讯,首先要调通它们之间的握手信号,假定它们

之间的通讯协议是,

PC 到 8051 一帧数据 6 个字节,8051 到 PC 一帧数据也为 6 个字节,当 PC

发出(

F0,01,FF,FF,01,F0)后能收到这样一帧(F0,01,FF,FF,01,F0),表示数据通信握手成

功,两者之间就可以按照协议相互传输数据。在

PC 方要发送及接受数据需要以下步骤:

1.创建一个新的工程 COMM.DPR,把窗体的 NAME 属性改为 FCOMM,把窗体的标题改
为测试通讯,添加控件。
  对

COMM1(黑色矩形围住的控件)进行属性设计,设波特率 4800,校验位无,字节长

_8,停止位_1,串口选择 COM1。Memo1 中将显示发送和接受的数据。选择 File/Save As

将新的窗体存储为

Comm.pas。

2.编写源代码
变量说明
var
FCOMM: TFCOMM;