delphi多线程_delphi为什么没人用了_delphi hook(2)

电脑杂谈  发布时间:2017-03-10 14:23:13  来源:网络整理

DoTerminate;//时间到后线程终止

end;

// 在指定的画布上显示采集到的数据;

procedure TCollectDataThread.ShowData;

begin

FCanvas.Pixels[2*FUsedTime,80+CollectData[FUsedTime]]:=clRed;

end;

end.

3) 在Form的单元文件中声明变量CollTestThread:TCollectDataThread,并在Form的OnCreate事件中加入以下代码:

CollTestThread:= TCollectDataThread.Create(500,PaintBox1.Canvas);

4)在“开始采集”按钮的OnClick事件中加入以下代码:

CollTestThread.Resume;

5) 在“暂停采集”按钮的OnClick事件中加入以下代码:

CollTestThread.Suspend;

用户可以利用前面所提到的Synchronize函数来窗体,或者使用定时器定期刷新屏幕,这两

种方式都可以间隔一定时间显示采集数据情况。delphi多线程delphi多线程

6、结束语

采用上面所述的方法,笔者实现了对心电谱数据的采集和显示,达到了很好的效果。本方法尤其适用于那些利用计算机I/O插槽来实现数据采集的硬件设备,串口通信中的采集方法也与上述思想相类似。鉴于笔者的水平有限,欢迎读者批评指正文章中的不足之处。

Delphi 多线程实例

下面笔者将介绍一个简单的实例,解释和说明前面所述的内容。

1) 建立Form,在其中建立两个按钮“开始采集” 和“停止采集”,添加一个PaintBox1。

2) 建立一个新的单元,在其中输入以下代码:

unit CollectThread;

intece

uses

Classes,SysUtils,stdctrls,Graphics;

type

TCollectDataThread = class(TThread)

private

FPreSetTime:Word;

FUsedTime:integer;

FCanvas:TCanvas;

protected

procedure Execute; override;

procedure ShowData;

public

CollectData:array[0..1023]of integer;

constructor Create(PresetTime:Word;Canvas:TCanvas);

end;

implementation

{TCollectDataThread}

constructor TCollectDataThread.Create(PreSetTime:Word;Canvas:TCanvas);

var i:integer;

begin

for i:=0 to 1023 do CollectData[i]:=0;// 给数据赋初值

FCanvas:=Canvas;

FPreSetTime:=PreSetTime; // 预置采集次数

FUsedTime:=0;// 已经采集的次数

inherited Create(true);

FreeOnTerminate := True; //当线程终止时自动释放该线程

end;

procedure TCollectDataThread.Execute;

var

flag:Byte;

address:Byte;

i:integer;

begin

while FUsedTime < FPresetTime do


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-36849-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...