收藏 分享(赏)

Delphi 多线程实例.doc

上传人:gnk289057 文档编号:6213130 上传时间:2019-04-02 格式:DOC 页数:3 大小:32KB
下载 相关 举报
Delphi 多线程实例.doc_第1页
第1页 / 共3页
Delphi 多线程实例.doc_第2页
第2页 / 共3页
Delphi 多线程实例.doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

1、Delphi 多线程实例下面笔者将介绍一个简单的实例,解释和说明前面所述的内容。1) 建立 Form,在其中建立两个按钮“开始采集” 和“停止采集” ,添加一个PaintBox1。2) 建立一个新的单元,在其中输入以下代码:unit CollectThread;interfaceusesClasses,SysUtils,stdctrls,Graphics;typeTCollectDataThread = class(TThread)privateFPreSetTime:Word;FUsedTime:integer;FCanvas:TCanvas;protectedprocedure Execu

2、te; override;procedure ShowData;publicCollectData:array01023of integer;constructor Create(PresetTime:Word;Canvas:TCanvas);end;implementationTCollectDataThreadconstructor TCollectDataThread.Create(PreSetTime:Word;Canvas:TCanvas);var i:integer;beginfor i:=0 to 1023 do CollectDatai:=0; / 给数据赋初值FCanvas:

3、=Canvas;FPreSetTime:=PreSetTime; / 预置采集次数FUsedTime:=0; / 已经采集的次数inherited Create(true);FreeOnTerminate := True; /当线程终止时自动释放该线程end;procedure TCollectDataThread.Execute;varflag:Byte;address:Byte;i:integer;beginwhile FUsedTime 0 thenbeginCollectDataFUsedTime:=round(50.0*sin(3.1415/50*FUsedTime);Synchro

4、nize(ShowData); /同步调用数据显示函数end;实际上从硬件中采集数据最常用的是如下形式,但是这段程序正常工作需要相应的 I/O 接口设支持,所以它仅共参考 repeatbeginflag:=inportb($341); / 数据是否准备好标志flag:=flag and $c0;if (flag=0) then / 如果 AD 转换的数据准备好beginCollectDataFUsedTime:=inportw($342);end;flag:=flag and $10; / 恢复数据准备好标志end; / end while not flag=0until(flag=0);Sy

5、nchronize(ShowData); /同步调用数据显示函数end; /while FUsedtimeFPresetTimeDoTerminate; /时间到后线程终止end;/ 在指定的画布上显示采集到的数据;procedure TCollectDataThread.ShowData;beginFCanvas.Pixels2*FUsedTime,80+CollectDataFUsedTime:=clRed; end;end.3) 在 Form 的单元文件中声明变量 CollTestThread:TCollectDataThread,并在 Form 的OnCreate 事件中加入以下代码:

6、CollTestThread:= TCollectDataThread.Create(500,PaintBox1.Canvas);4)在“开始采集”按钮的 OnClick 事件中加入以下代码:CollTestThread.Resume;5) 在“暂停采集”按钮的 OnClick 事件中加入以下代码:CollTestThread.Suspend;用户可以利用前面所提到的 Synchronize 函数来窗体,或者使用定时器定期刷新屏幕,这两种方式都可以间隔一定时间显示采集数据情况。6、结束语采用上面所述的方法,笔者实现了对心电谱数据的采集和显示,达到了很好的效果。本方法尤其适用于那些利用计算机 I/O 插槽来实现数据采集的硬件设备,串口通信中的采集方法也与上述思想相类似。鉴于笔者的水平有限,欢迎读者批评指正文章中的不足之处。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > Delphi/Perl

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报