- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ISA总线数据采集卡驱动开发及应用
ISA总线数据采集卡驱动开发及应用
[收藏此页] [打印]
作者:IT168 老实和尚??2007-07-10 网友评论 6 条
内容导航:
软件设计
第1页: WinDriver与LabWindows简介 第2页: 硬件设计 第3页: 软件设计
文本Tag: 图形,多媒体 软件开发 Embedded 微软 Windows开发 移动,嵌入式
??? 4.软件设计???? WinDriver开发驱动程序一般分以下几个步骤:安装、选择硬件、测试硬件、生成驱动框架代码、编译及运行。???? ISA板卡与PC机接口采用8位ISA总线结构,控制方式为I/O空间访问,与外部设备的连接采用62针D型插座。电路板的I/O基地址,采用8位DOP开关(U5)设置。出厂时设置为0X200H。
??? 打开WinDriver软件新建一个工程,选择ISA CARD设备,弹出定义设备资源窗口,如图所示,由于我们的板卡只访问IO空间,寻址空间为0-7,无内存、中断和寄存器。假设基地址为0x200,则定义IO范围为0x200~0x207。然后点击Next,然后选择需要WinDriver生成何种开发环境的框架代码。在这里我们选择微软的Microsoft Visual C++ 6.0,WinDriver自动生成一个Dll工程框架代码。用户只需要简单的在框架代码基础上稍微修改,即可生成自己需要的驱动接口,主要函数及其功能如下:
??? ?设置板卡基地址函数
extern C __declspec(dllexport) void __stdcall DO_SetAdd(WORD ADDR)
??? 用户在调用任何驱动函数前先调用此函数设置板卡的基地址,地址范围为:0100H~03FFH,需要跟板卡的实际拨码开关相一致,否则板卡不会被片选。???? 此函数声明表明导出函数采用__stdcall(pascal)调用方式,由调用者负责参数从右往左入栈,被调用者清理堆栈。函数命名方式为C标准的命名方式,用Depends.exe观察导出函数的名称实际上就是“DO_SetAdd”,这对于C++编译器中调用此接口函数的时候,声明函数原型特别重要,否则会导致连接函数错误,因为C++为了重载函数的需要,所有的函数编译后的函数名称都进行了修饰。 ????? ?设备初始化函数
extern C __declspec(dllexport) int _stdcall DO_Device_Initialize(DO_HANDLE *hDO)
??? 用户调用此dll导出函数来初始化硬件资源,并返回一个指向设备的句柄,DO_HANDLE *hDO是一个双指针,在函数内部动态分配一个设备句柄对象,返回该设备句柄的指针给用户,传递给后面其它函数使用。此函数中仅仅是调用两个内部函数DO_RegisterWinDriver和DO_Open,来完成软件的注册、版本冲突检测,板卡资源的分配、注册等。????? ?关闭设备
extern C __declspec(dllexport) void _stdcall DO_Close(DO_HANDLE hDO)
??? 调用此函数来关闭设备句柄,释放初始化的时候动态分配的设备资源。????? ?获取最近一次操作失败的原因
extern C __declspec(dllexport) char * _stdcall DO_GetErrStr()
??? 如果调用任何函数时候发生错误,可以通过此函数获取错误的详细说明。
????? ?读取IO空间或者内存空间的内部函数
void DO_ReadWriteBlock(DO_HANDLE hDIDO, DO_ADDR addrSpace, DWORD dwOffset, BOOL fRead, PVOID buf, DWORD dwBytes, DO_MODE mode)
??? 所有的对IO口线的读写或者内存的读写都是通过此内部函数来完成的。addrSpace表明需要使用空间,该空间可以是IO空间也可以是一个内存空间,在板卡初始化的时候就会注册这些空间,dwOffset表明基于该空间的偏移量,fRead表明是读还是写,buf需要传输的数据缓冲区地址,dwBytes需要传输的数据长度,DO_MODE表明一次是传输1Byte传输,2Byte传输还是4Byte。???? 基本驱动框架生成后,用户可以再此基础上添加自己的函数,来实现自己的特定功能,比如向IO通道写控制字或者读IO通道的数字开关量或者AD值。 ? ?自定义写IO的函数
extern C __declspec(dllexport) void _stdcall DO_WriteByte
您可能关注的文档
- 新课标数学卷子.doc
- 2010届高三英语阅读理解冲刺精练系列21 含解析 .doc
- 修改Unit5Topic3SectionA.ppt
- 4.6互感和自感比赛课件金焰.ppt
- 354欧姆定律总复习.doc
- 04级医药数统试卷.doc
- 1、监理资料用表样式.doc
- 幕墙工程的资料.doc
- 初一地理教学工作反思.doc
- Z390ABC–introduction.ppt
- 2024至2030年中国粘弹性保护剂数据监测研究报告.docx
- 2024至2030年中国窗护栏行业投资前景及策略咨询研究报告.docx
- 2024年04月应急管理部宣传教育中心招考聘用笔试历年典型考题与考点剖析含答案详解.docx
- 2024年04月上海市城市规划设计研究院招考聘用笔试历年典型考题与考点剖析含答案详解.docx
- 2024年04月天津市和平区教育系统事业单位招考聘用145人笔试历年典型考题与考点剖析含答案详解.docx
- 2024年火车锻件项目可行性研究报告.docx
- 2024至2030年喷漆遮蔽胶带项目投资价值分析报告.docx
- 2024至2030年酒石酸氢钠项目投资价值分析报告.docx
- 2024至2030年中国彩板卷帘门轧机数据监测研究报告.docx
- 2024至2030年中国枸杞胶囊男士礼盒装行业投资前景及策略咨询研究报告.docx
文档评论(0)