Delphi程序如何影响系统时钟?(100分)

  • 主题发起人 主题发起人 nanjian
  • 开始时间 开始时间
N

nanjian

Unregistered / Unconfirmed
GUEST, unregistred user!
本人在windows95下编写了七个Delphi程序,让它们同时运行,每个程序均有
一个定时器,其中五个为十秒触发,两个为一秒触发。运行时发现计算机系统
时钟变慢了,一旦我的程序停止运行,时钟就正常。此问题让我百思不得其解。
不知哪位高手能指教一二。
 
; 你是用Timer控件来做的吗?还是用的多媒体定时器,如果用

Timer应该不会发生这种情况....

你的Delphi程序有什么低级的操作吗?....
 
Timer是用控件实现,低级操作是调用了第三方提供的串口通信程序(Api232.lib)。
 
你一定是想用串口收发数据吧。
你给串口的数据最好是次数多,但每次字节要少。
因为有的串口控件会一次性将你传的字节发完后,才
交出CPU控制权。我想你的程序是一次给串口的数据太多,
以到于在1秒内以不完,而使时钟延后。
 
呆非4说的有点道理,多数是RS232通讯造成的问题。
这和DOS下差不多
 
这应该是95本身的毛病,也就是说它的抢先多任务做的不好造成的。
用NT应该没问题。
 
同意呆非4。
应该所以利用TTime控件的应用程序都应保证每一次触发所引起的过程在
一个触发周期完成超过肯定会造成系统时钟不准。因为系统在等你的程序
给他说句话呢。
 
;个位高手的分析都有道理,可能是Win95的原因。但想和各位探讨的问题是:
由于怕在定时间隔内无法执行完串口的接收和发送,我设计的十秒触发的程序
在十秒内肯定能完成;而两个一秒触发的程序一般处于监听状态,这是两个串口
接收程序,在影响系统时钟运行过程中,我并未产生串口数据;
另外同各位说明的是我采用的是台湾的MOXA卡多串口控制器,PC机的串口数
据是通过和MOXA卡的缓冲区交换数据的,最后是由MOXA卡和MODEM打交道,我的
程序只是占用了和MOXA卡缓冲区交换数据的时间,这一时间非常短。
哪位高手能告诉我,即使定时间隔内程序无法完成而影响系统运行,但是怎样
影响了系统时钟,系统时钟是时钟芯片产生的,不受系统运行的影响(除非执行
修改系统时钟命令)。那么只可能是我的程序影响了系统读取时钟,也就是说当
前系统显示的不是真正的时钟芯片的时间。如果是这样,我的程序一旦停止,系
统时钟会恢复到受影响前的正常时间;但情况并非如此,我的程序停止后,系统
时钟按影响后的时钟运行,说明我的程序影响了时钟芯片的时间。
 
Hehe, when your DOS, Win9x WinNT etc starts,
it get the control of real time from the chip
you said.

After shutdown the machine, the chip will take
control again.
 
接受答案了.
 
后退
顶部