|
最近想直接控制主板IO口搞点东西,如并口,串口,,想输出如38K (26us)的方波,或者采集38K的波形输入。 我做了以下尝试,在循环中直接读取IO的状态变化, 发现采集的不是很精确,采集到的波形变化有漏 的,也很随机。说明这种方式达不到精度。 是否可以用中断来采集?
我找了一些资料,发现有这么用句话:“win 不是一个实时系统”,所以对我的想法产生了怀疑。难道windows不能做这样的事情? 想来也是,大都是计算机和芯片通讯,芯片做采集工作。
我也在想在usb线上不接任何芯片,在pc驱动程序上直接控制usb的一根线输出方波, 是否可行?
请高手解惑这方面的疑问、。
我的采集代码如下:
ULONG mCurrStatus,mTemp;
int ircount;
ircount = 0;
mCurrStatus = _inp(0x0379);
while(1)
{
if(ircount == 0)
{
mTemp = _inp(0x0379);
if (mTemp!=mCurrStatus)
{
KeQueryTickCount(&tm1);
mCurrStatus = mTemp;
ircount++;
}
} else
{
mTemp = _inp(0x0379);
if (mTemp!=mCurrStatus)
{
KeQueryTickCount(&tm1);
mCurrStatus = mTemp;
ircount++;
if(ircount>6000)
break;
}else
{
KeQueryTickCount(&tm2);
if((tm2.QuadPart-tm1.QuadPart)>32)
break;
}
}
}
|
|