dolphin
驱动中牛
驱动中牛
  • 注册日期2001-04-30
  • 最后登录2013-03-08
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望23点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1981回复:6

各位高手就我,5555....55555.........

楼主#
更多 发布于:2001-05-24 16:19
 就下面着短短的代码,困扰我很旧了,中断总是不能触发。
Why, 555.....5555.....


// ADCARD.h - include file for VxD ADCARD

#include <vtoolscp.h>

#define DEVICE_CLASS AdcardDevice
#define ADCARD_DeviceID UNDEFINED_DEVICE_ID
#define ADCARD_Init_Order UNDEFINED_INIT_ORDER
#define ADCARD_Major 1
#define ADCARD_Minor 0
#define MY_IRQ                  7

class MyHwInt : public VHardwareInt
{
public:
MyHwInt():VHardwareInt(MY_IRQ,0,0,0){};
virtual VOID OnHardwareInt(VMHANDLE);
};

class AdcardDevice : public VDevice
{
public:
virtual BOOL OnSysDynamicDeviceInit();
virtual BOOL OnSysDynamicDeviceExit();
MyHwInt* pMyIRQ;
};

class AdcardVM : public VVirtualMachine
{
public:
AdcardVM(VMHANDLE hVM);
};

class AdcardThread : public VThread
{
public:
AdcardThread(THREADHANDLE hThread);
};




// ADCARD.cpp - main module for VxD ADCARD

#define DEVICE_MAIN
#include "adcard.h"
Declare_Virtual_Device(ADCARD)
#undef DEVICE_MAIN
#define Num    20
#define nBase_Addr 0x100

int nChannel;
int HighFourBit,
LowFourBit;
int nResult[Num];


AdcardVM::AdcardVM(VMHANDLE hVM) : VVirtualMachine(hVM) {}

AdcardThread::AdcardThread(THREADHANDLE hThread) : VThread(hThread) {}

BOOL AdcardDevice::OnSysDynamicDeviceInit()
{
pMyIRQ = new MyHwInt();
if(pMyIRQ&&pMyIRQ->hook())
{
pMyIRQ->physicalUnmask();
_outp(0x100+1,0);  //启动A/D转换;(该ISA卡现被设为软件触发)
                     dprintf("I have triggered A/D!");


return TRUE;
}
else return FALSE;

}

BOOL AdcardDevice::OnSysDynamicDeviceExit()
{
if(pMyIRQ) delete pMyIRQ;
return TRUE;
}


VOID MyHwInt::OnHardwareInt(VMHANDLE hVM)
{
dprintf("The int run!");
sendPhysicalEOI();
}

[dolphin 编辑于 2001-05-25 16:06]
[dolphin 编辑于 2001-05-25 16:06]
[b]弃我去者昨日之日不可留,乱我心者今日之日多烦忧。[/b]
dolphin
驱动中牛
驱动中牛
  • 注册日期2001-04-30
  • 最后登录2013-03-08
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望23点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2001-05-24 17:09
     现在我大声的向全世界郑重宣布,本人在测试的时候是绝对有将那张破卡(PC_6313)插到ISA槽上,如不信,你再问我,我也是这么说。^-^
     并且,例程\Vtoolsd\example\cpp\hwint 经我测试也不能触发IRQ8。清华出的"Win9x虚拟设备驱动程序编程指南" 上的类似的例程也不行。
    。。。。。救我。。。。我。。。。。。。。
[dolphin 编辑于 2001-05-24 17:16]
[b]弃我去者昨日之日不可留,乱我心者今日之日多烦忧。[/b]
dazzy
驱动中牛
驱动中牛
  • 注册日期2001-03-23
  • 最后登录2008-08-12
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望10点
  • 贡献值1点
  • 好评度10点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2001-05-24 17:22
IRQ 8是cmos 时钟中断,好像不行, 你换一个中断试一试。个人看法!
dolphin
驱动中牛
驱动中牛
  • 注册日期2001-04-30
  • 最后登录2013-03-08
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望23点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
地板#
发布于:2001-05-24 17:36
    你误会我的意思了,例程\Vtoolsd\example\cpp\hwint 本来就是利用内部时钟引发中断发声。你可以看看该例。
[b]弃我去者昨日之日不可留,乱我心者今日之日多烦忧。[/b]
无心化语
禁止发言
禁止发言
  • 注册日期2001-03-23
  • 最后登录2018-06-01
  • 粉丝0
  • 关注0
  • 积分-103分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2001-05-25 16:30
用户被禁言,该主题自动屏蔽!
dolphin
驱动中牛
驱动中牛
  • 注册日期2001-04-30
  • 最后登录2013-03-08
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望23点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2001-05-28 08:24
    No,俺现在最不能确定的问题就是这张破卡是否工作正常,不过A/D转换到还正常,通过查询方式可以得到数据,但指导老师保证说中断触发是正常的。
[b]弃我去者昨日之日不可留,乱我心者今日之日多烦忧。[/b]
azure
驱动牛犊
驱动牛犊
  • 注册日期2001-03-29
  • 最后登录2007-03-11
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2001-06-02 20:04
这样,你最好先写个DOS的程序,验证中断和数据输入输出是否正常。以前我用了一张湾湾造的卡,驱动都快写完了才发现这卡有先天缺陷,只好换别的。
当然,验证是否产生中断的最简单办法就是用SoftICE拦截8号中断。
游客

返回顶部