Delphi使用(yòng)spcomm

Delphi使用(yòng)spcomm实现串口通信 基础知识及(两个实例)



學(xué)习下载专區(qū) 【2019-11-16 10:42】


心得

转自:https://www.cnblogs.com/beeone/archive/2010/08/12/1798280.html

如果你已经会使用(yòng)SPCOMM且出现10个以上的串口问题

请改一下串口名(míng)

COM1.CommName='\\.\com18';

就这样 加'\\.\'就行了我也不知道什么回事.......

以下為(wèi)抄录不知道是谁的

Delphi 是新(xīn)一代可(kě)视化开发工(gōng)具(jù),它具(jù)有(yǒu)功能(néng)强大、简便易用(yòng)和代码执行速度快等特点,是全球公(gōng)认的快速应用(yòng)开发工(gōng)具(jù)技(jì )术的先驱者,它越来越在构架企业信息系统方面发挥着重要作(zuò)用(yòng)。由于Delphi 这些显著特点,许多(duō)程序员选择Delphi作(zuò)為(wèi)开发工(gōng)具(jù)编制各种应用(yòng)程序。但是,令人惋惜的是Delphi没有(yǒu)自带串口通讯的控件,在它的帮助文(wén)档里也没有(yǒu)提及串口通讯,这就给编制通讯程序的开发人员带来众多(duō)麻烦,影响了开发进度,下面就这一技(jì )术进行讨论。  用(yòng)Delphi 实现串口通讯,常用(yòng)的几种方法為(wèi):使用(yòng)控件如MSCOMM和SPCOMM,使用(yòng)API函数或者在Delphi 中(zhōng)调用(yòng)其它串口通讯程序。利用(yòng)API编写串口通信程序较為(wèi)复杂,需要掌握大量通信知识,其优点是可(kě)实现的功能(néng)更强大,应用(yòng)面更广泛,更适合于编写较為(wèi)复杂的低层次通信程序。相比较而言,利用(yòng)SPComm控件则相对较简单,该控件具(jù)有(yǒu)丰富的与串口通信密切相关的属性及事件,提供了对串口的各种操作(zuò)。  使用(yòng)控件这一方法容易掌握,而SPCOMM支持多(duō)線(xiàn)程,所以SPCOMM控件的应用(yòng)更加广泛。结合实例详细介绍SPCOMM的使用(yòng)。一.SPCOMM控件的安(ān)装(zhuāng)

1.选择下拉菜单Component的第二项Install Component 。

在Unit file name 处填写控件SPCOMM控件所在路径,其它可(kě)用(yòng)默认值,点击OK按纽。

2.安(ān)装(zhuāng)成功后,system控件面板中(zhōng)将出现一个红色控件COMM。现在使用(yòng)COMM控件可(kě)以象Delphi自带控件一样使用(yòng).。

二.SPCOMM的主要属性,方法和事件

1.属性CommName:填写COM1,COM2…等串口的名(míng)字,在打开串口前,必须填写好此值。

 BaudRate:设定波特率9600,4800等,根据实际需要来定,在串口打开后也可(kě)更改波特率,实际波特率随之更改。

ParityCheck:奇偶校验。

ByteSize:字节長(cháng)度_5,_6,_7,_8等,根据实际情况设定。

Parity:奇偶校验位StopBits:停止位SendDataEmpty:这是一个布尔属性,為(wèi)true时表示发送缓存為(wèi)空,或者发送队列里没有(yǒu)信息;為(wèi)False时表示表示发送缓存不為(wèi)空,或者发送队列里有(yǒu)信息。

2.方法   Startcomm过程用(yòng)于打开串口,当打开失败时通常会报错,错误主要有(yǒu)7种:

⑴串口已经打开 ;

⑵打开串口错误 ;

⑶文(wén)件句柄不是通讯句柄;

⑷不能(néng)够安(ān)装(zhuāng)通讯缓存;

⑸不能(néng)产(chǎn)生事件 ;

⑹不能(néng)产(chǎn)生读进程;

⑺不能(néng)产(chǎn)生写进程;  

StopComm过程用(yòng)于关闭串口,没有(yǒu)返回值。  

函数WriteCommData(pDataToWrite: PChar;dwSizeofDataToWrite:Word ): boolean 用(yòng)于发送一个字符串到写線(xiàn)程,发送成功返回true,发送失败返回false, 执行此函数将立即得到返回值,发送操作(zuò)随后执行。函数有(yǒu)两个参数,其中(zhōng) pdatatowrite是要发送的字符串,dwsizeofdatatowrite 是发送的長(cháng)度。

3.事件OnReceiveData : procedure (Sender: TObject;Buffer: Pointer;BufferLength: Word) of object   

当输入缓存有(yǒu)数据时将触发该事件,在这里可(kě)以对从串口收到的数据进行处理(lǐ)。Buffer中(zhōng)是收到的数据,bufferlength是收到的数据長(cháng)度。

OnReceiveError : procedure(Sender: TObject; EventMask : DWORD)   

当接受数据时出现错误将触发该事件。

三.SPCOMM的使用(yòng)  下面,我们结合一个串口通讯的例子来说明SPCOMM的使用(yòng)。  

為(wèi)了实现PC与单片机8051之间的通讯,首先要调通它们之间的握手信号,假定它们之间的通讯协议是,

PC到8051一帧数据6个字节,8051到PC一帧数据也為(wèi)6个字节,当PC发出(F0,01,FF,FF,01,F0)后能(néng)收到这样一帧(F0,01,FF,FF,01,F0),表示数据通信握手成功,两者之间就可(kě)以按照协议相互传输数据。在PC方要发送及接受数据需要以下步骤:1.创建一个新(xīn)的工(gōng)程COMM.DPR,把窗體(tǐ)的NAME属性改為(wèi)FCOMM,把窗體(tǐ)的标题改為(wèi)测试通讯,添加控件。  对COMM1(黑色矩形围住的控件)进行属性设计,设波特率4800,校验位无,字节長(cháng)度_8,停止位_1,串口选择COM1。Memo1中(zhōng)将显示发送和接受的数据。选择File/Save As将新(xīn)的窗體(tǐ)存储為(wèi)Comm.pas。




download spcomm :
static/file/SPCOMMXE-XE10.1FULLSOURCE.rar
友情链接:
sql修复专家
  • 关注微博
    联系QQ
  • 二维码
  • 扫一扫加关注

——信阳市速全网络科(kē)技(jì )有(yǒu)限公(gōng)司——

版权所有(yǒu):信阳市速全网络科(kē)技(jì )有(yǒu)限公(gōng)司

京ICP证000000号