qdyangjing
驱动小牛
驱动小牛
  • 注册日期2003-02-26
  • 最后登录2005-11-16
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1000回复:12

20分或再加:在应用程序处理共享区数据时,驱动程序是否应该停止操作该缓冲区?

楼主#
更多 发布于:2003-08-11 12:17
在应用程序处理共享区数据时,驱动程序是否应该停止操作该缓冲区?
我试过,没有停止驱动时,会出现错误.
大家的意见呢?

谢谢关注.
***************************** *********向军旗敬礼!******** ********向给分者微笑!******* *****************************
qdyangjing
驱动小牛
驱动小牛
  • 注册日期2003-02-26
  • 最后登录2005-11-16
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-08-11 13:26
如果应该停止驱动程序,会不会丢失数据呢?
***************************** *********向军旗敬礼!******** ********向给分者微笑!******* *****************************
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
板凳#
发布于:2003-08-11 14:07
看你的处理方式了。
grant
驱动老牛
驱动老牛
  • 注册日期2001-05-14
  • 最后登录2007-04-13
  • 粉丝0
  • 关注0
  • 积分350分
  • 威望35点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
地板#
发布于:2003-08-11 14:19
做乒乓缓存,
把一块缓存分成两等份,
当驱动写一块时,应用程序读另一块。
设置标志位,禁止同时读写。
助人乃快乐之本 有人给分就更快乐了 :-)
qdyangjing
驱动小牛
驱动小牛
  • 注册日期2003-02-26
  • 最后登录2005-11-16
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-08-11 14:29
能做到不丢失数据吗?数据太宝贵了,
***************************** *********向军旗敬礼!******** ********向给分者微笑!******* *****************************
grant
驱动老牛
驱动老牛
  • 注册日期2001-05-14
  • 最后登录2007-04-13
  • 粉丝0
  • 关注0
  • 积分350分
  • 威望35点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2003-08-11 15:08
你的数据速度是多少?
记得你原来是做ISA卡的驱动是吧。
助人乃快乐之本 有人给分就更快乐了 :-)
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2003-08-11 22:01
或者是一头进数据,一头出数据的形式 :D
buffer弄大些,防止数据来的太快取不走。

设置标志位,我觉得。。。数据来的时候不应该阻止它被保存。

速度到底有多快?
qdyangjing
驱动小牛
驱动小牛
  • 注册日期2003-02-26
  • 最后登录2005-11-16
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-08-12 18:02
不快,2100bytes/s
就算是2kb/s
我用一个共享缓冲区,驱动写一头,通知接受线程拷贝另一头.
可是发觉居然还是响应不过来,共享缓冲区1000bytes,够了?
很奇怪的问题.
isa+VToolsD+VC6
***************************** *********向军旗敬礼!******** ********向给分者微笑!******* *****************************
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
8楼#
发布于:2003-08-12 20:51
中断频率是?
在ISR干太多事了?
qdyangjing
驱动小牛
驱动小牛
  • 注册日期2003-02-26
  • 最后登录2005-11-16
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-08-12 21:17
中断频率2100Hz
我现在接收到字节后,马上写到来自APP的共享缓冲区里,乒乓方式通过VMIN32_PulseWin32Event()通知APP的接收线程来取,取的方式是直接读共享的数组(因为数组就在APP中),
结果发觉中断来不及响应,丢了一些连续的中断,主要是卡的缓冲区有限,64字节,刚好丢连续的64次.
问题好像是没来得及响应.
高手有何建议和意见?
是不是必须主程序用DeviceIOControl把地址传给驱动,有驱动拷贝?

急得上火了
***************************** *********向军旗敬礼!******** ********向给分者微笑!******* *****************************
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
10楼#
发布于:2003-08-12 22:25
2100Hz,一次就读一个byte呀,不快呀,而且还有64字节的卡上的buffer。
qdyangjing
驱动小牛
驱动小牛
  • 注册日期2003-02-26
  • 最后登录2005-11-16
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2003-08-13 11:37
但是我的中断服务程序总是响应不过来,看看我的代码:
BOOL XXX::OnSharedHardwareInt(VMHANDLE hCM)
{
    byte300h = _inp(0x300);//用于判断是否是自己的中断.
    if(0x00 == (byte300h & 0x01))  //自己的中断
    {  
        byte301h = _inp(0x301); //读数据
        ++counter;  //调试
        if(counter >= 60)
        {
            counter = 0;
        }
        dprintf(\"\\ncounter=%d val=%d\",counter,byte301h);
    }
    sendPhysicalEOI();
    return FALSE;
}

老大,我错在哪里了?

***************************** *********向军旗敬礼!******** ********向给分者微笑!******* *****************************
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
12楼#
发布于:2003-08-13 13:31
if(NOT_your_INT)
{
return FALSE;
}
//then your INT
...
return TRUE;
游客

返回顶部