软件注册站
热情软件屋

 
inp和outp能否用于实时数据采集
编号: QA000781    
建立日期: 1999年4月9日 最后修改日期: 2004年8月25日
所属类别: C/C++ - DDK与硬件设备
   
    Visual C++ 5.0
    windows 95
    我用_inp() and _outp()函数不实时采集数据是可以的,但一进行实时数据采集,就出问题。 过程如下:
     信号:10Hz的正弦波。
     端口:0x299
     采样频率:1ms
     操作方式:查询
     延迟函数:Sleep(1)
    结果:按理论每个周期我应得到100个数据,实际上,根据采集数据的变化情况,每个周期只有20个左右,甚至更少。我想请教李海老师,是我的程序没有编好,还是_inp() and _outp()不能用于实时数据采集。(liuyue)
   
    inp和outp本身可以用于实时处理,因为这两个函数所用的指令周期非常短。但是你的采样周期是1ms,使用Sleep(1)就不太合适了,因为Sleep()精确不到1ms,大概只能精确55ms左右,在加上你的读写之间还有一些代码,所以会丢一下采样。在Windows中,只有QueryPerformanceCounter才能获得低于1ms的时间精度。但考虑你的采样间隔很小,建议你采用空循环延时。具体执行多少个循环,需要根据不同的机器的实际情况估算一下。参考:QA002554 "如何根据计算机的速度不同,确定延时循环次数"QA004842 "timeGetTime函数延时不准"

    

此问题由李海回答。

附加关键字:编程, 源程序, programming, source code, C/C++, MFC, C++ Builder, Borland C++, Turbo C, C, BCB, DDK与硬件设备, hardware, ddk, vtoolsd, driver studio, winrt

   
 
把这个问题推荐给朋友
   
 
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio