用SPCOMM 在 Delphi中实现串口通讯
用Delphi 实现串口通讯,常用的几种方法为:使用控件如MSCOMM和SPCOMM,使用API函数或者在Delphi 中调用其它串口通讯程序。利用API编写串口通信程序较为复杂,需要掌握大量通信知识,其优点是可实现的功能更强大,应用面更广泛,更适合于编写较为复杂 的低层次通信程序。相比较而言,利用SPComm控件则相对较简单,该控件具有丰富的与串口通信密切相关的属性及事件,提供了对串口的各种操作。
使用控件这一方法容易掌握,而SPCOMM支持多线程,所以SPCOMM控件的应用更加广泛。结合实例详细介绍SPCOMM的使用。
一.SPCOMM控件的安装
1.选择下拉菜单Component的第二项Install Component 。
图1
弹出图1所示的窗口,在Unit file name 处填写控件SPCOMM控件所在路径,其它可用默认值,点击OK按纽。
2.安装成功后,system控件面板中将出现一个红色控件COMM。现在使用COMM控件可以象Delphi自带控件一样使用。
二.SPCOMM的主要属性,方法和事件
1.属性
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是收到的数据长�
相关文档:
Delphi动态事件深入分析
2009-2-7
作者:不得闲
核心提示:本实验证明了在类中方法的调用时候,所有的方法都隐含了一个Self参数,并且该参数作为对象方法的第一个参数传递...
首先做一个空窗体,放入一Button。
在implementation下面声明两个方法如下:
//外部方法,只声明一个参数,此时按照标准的对象内部事件方法T ......
消息的处理流程,流程如下:
其派发处理过程详细如下:
注意:TWinControl里面WndProc有调用系统API DefWindowProc,该函数调用缺省的窗口过程来为应用程序没有处理的任何窗口消息提供缺省的处理。而TWinControl里面DefaultHandler又调用了系统API CallWindowProc,该函数CallWindowProc将消息信息传送给指定的窗� ......
技术交流,DH讲解. 之前照着天书夜读,用Delphi来弄了下循环体,现在就来弄一下条件判断吧.
首先肯定是我们经常看见的IF语句咯. Var
I: Integer;
Begin
I:= 99;
If (I> 0)And (I< 0) Then
Writeln('I>0')
Else
If (I> 10)And (I< 100) Then
Writeln('I>10 and I100');
End.
反汇编出来会是 ......
实际上这个名字叫[SDL & Delphi]也不成问题, 因为除了Delphi似乎也没有哪个流行的开发工具用的是Pascal语言。
SDL其实我也只学了不到两星期而已。刚开始我想试图用VC,因为这样资料最全,也很好找,但太久没用VC现在看C的代码有点困难(->这个算符是干吗的来着……)。其实作为一个专业不是计算机的人 ......