begin
FUsedTime:=FUsedTime+1;
flag:=0; // 数据准备好标志
{由于您在调试程序时没有硬件支持,所以建议您使用下面的这段程序来
模拟硬件的工作,}
for i:=0 to 9000000 do//产生迟延,
flag:=i;
if flag>0 then
begin
CollectData[FUsedTime]:=round(50.0*sin(3.1415/50*FUsedTime));
Synchronize(ShowData); //同步调用数据显示函数
end;
{实际上从硬件中采集数据最常用的是如下形式,但是这段程序正常工作需要
相应的I/O接口设支持,所以它仅共参考}
{repeat
begin
flag:=inportb($341);// 数据是否准备好标志
flag:=flag and $c0;
if (flag=0) then// 如果AD转换的数据准备好
begin
CollectData[FUsedTime]:=inportw($342);
end;
flag:=flag and $10;// 恢复数据准备好标志
end; // end while not flag=0
until(flag=0);
Synchronize(ShowData); //同步调用数据显示函数
}
end; //while FUsedtime<FPresetTime
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事件中加入以下代码:
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-36849-3.html
对中国大部分地区来说问题不是环保
备好导弹时刻准备着
他的声音真的很棒