说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

初学者高分提问,我在delphi的Timer里,需要每 1 seconds 就对计算机的I/O port执行一次读写操作(example: from 04F0 to 04FF I/O),

编辑:说三道四文库 发布时间:2018-06-19 03:03
HTML文档下载 WORD文档下载 PDF文档下载
我在delphi的Timer里,需要每 1 seconds 就对计算机的I/O port执行一次读、写操作(example: from 04F0 to 04FF I/O),我怎么才能实现呢?
请主要写清楚如何实现读、写I/O port 的详细过程。
兄弟在此谢谢各位大虾了。
用第三方控件,如supertimer,tthreadtimer等
thank you very much !!
时间要求严格吗?
要求严格的话可以用,CreateWaitableTime,加上线程来做,这是内核对象定时器,比较精确。线程可以等待这个对象以实现阻塞,到时间就会活跃,然后再设置状态,再等待。具体看MSDN。

GetTickCount是一个比较精确的计时,但他无法让你的线程阻塞,你只有不听的监视他的变化,这不是一个好的选择。

meica(赵一人) :
你能不能告诉我怎么得到这个控件,以及如何使用?
谢谢!!
在线等待!!!
BlueTrees(蜗牛) :
时间要求不是很精确,每次误差 〈 20ms 都能够接受。我的目标是能够用达到此性能就行了,没有必要去追求高精度!!
你能不能在详细一些,比如说具体到 句柄 ?
谢谢!!!!
再现等待!

UP!
j:=GetTickCount;
while true do
begin
  Application.processMessages;
  i:=GetTickCount;
  if i-j >1000 then
  begin
    j:=i;
    //do your things here
  end;
end;
这个好像有一点问题,就是说在开机很长一端时间后,i-j就小于0了。因此你如果采用这个方法的话,先看看GetTickCount说明。
这个控件太好找了,用google搜索 delphi vcl timer ,就行了
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘