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;