
eviceControl(KIrp I){?NTSTATUS status;switch (I.IoctlCode())?{?????? ………………………………………? case IOCTL_HIL100_READ_IO_DATA: ????? status = IOCTL_HIL100_READ_IO_DATA _Handler(I);???? case IOCTL_HIL100_WRITE_IO_DATA:???????? status = IOCTL_HIL100_WRITE_IO_DATA _Handler(I);? ? case IOCTL_HIL100_WRITE_DA_DATA:??????? status = IOCTL_HIL100_WRITE_DA_DATA _Handler(I);???? case IOCTL_HIL100_READ_AD_DATA:???? status = IOCTL_HIL100_READ_AD_DATA _Handler(I);???? default:? status = STATUS_INVALID_PARAMETER;? break;?}?………………………….?} 在该函数进行驱动中相应的数据处理与传递,包括从内存中读上层应用程序发送下来的数据或将AD、CAN等外设传递上来的数据送到上层应用程序。API函数主要提供了PCI卡的开关,A/D、D/A、I/O的读写函数,CAN的设置、读写,中断事件消息函数等。API函数与以上控制代码相关联,传递数据和控制参数。如下程序所示:bool WriteDataToIO(unsigned char data)??? //写数据到IO口{??? ……?ULONG BytesReturned;??? if (!DeviceIoControl(hHIL100, IOCTL_HIL100_WRITE_IO_DATA, &data, 1, ? NULL, 0, &BytesReturned, NULL))……}bool ReadDataFromIO(unsigned char *data) //从IO口读数据{?……?ULONG BytesReturned;?if (!DeviceIoControl(hHIL100, IOCTL_HIL100_READ_IO_DATA, &data, 1, ? data, 1, &BytesReturned, NULL))?……}bool WriteDataToDA(unsigned short control,unsigned short freq[4])//写数据到AD{?……?ULONG BytesReturned;?unsigned short pData[16];?pData[0]=control;?pData[1]=freq[0];?pData[2]=freq[1];?pData[3]=freq[2];?pData[4]=freq[3];??? if (!DeviceIoControl(hHIL100, IOCTL_HIL100_WRITE_DA_DATA, pData, 10, ? NULL, 0, &BytesReturned, NULL))?……}bool ReadDataFromAD(unsigned short address[8],unsigned short data[8]) {?????????????????????????????????????????????????????????????? //从AD读数据?……?ULONG BytesReturned;?if (!DeviceIoControl(hHIL100, IOCTL_HIL100_READ_AD_DATA,address,16, ? &data,16, &BytesReturned, NULL))?……}bool ReadDataFromDA (unsigned char address,unsigned short *data)//从DA读数据{?……?ULONG BytesReturned;?if (!DeviceIoControl(hHIL100, IOCTL_HIL100_READ_DA1_DATA,&address,1, ? data, 2, &BytesReturned, NULL))?……}将这些接口函数生成动态链接库的形式,供上层应用程序调用。3?? 结束语由于PCI总线的高速特性,使其被广泛应用于高速数据采集系统和数据传输通信系统中,有效地解决了实时采集、实时传输和实时存储等问题。而PCI总线控制器专用芯片的出现则缩短了PCI总线硬件设备的开发周期,使得硬件设备的可靠性和稳定性都有了较大的提高。在开发过程中,尤其对于高速采样及实时严格的系统,我们实现了对该系统高效率的操作特性,该研究有效的解决了高速实时采集、实时传输和实时存储等的驱动问题。同时该PCI多功能CAN适配卡既实现了CAN总线通信功能,同时也实现了多路通道的数据采集和相应控制。3 本文的创新观点1) 本文将API函数与控制代码建立起关联2) 本文将应用程序集成到对应的API函数里| 欢迎光临 DIY编程器网 (http://www.diybcq.com/) | Powered by Discuz! X3.2 |