- 设备名称:GPIO,设备驱动文件名是GPIOnnnnxxxxxx.dll, nnnn是产品型号,xxxxxx是驱动文件生成日期
- 本驱动能够管理DI、DO、AI、AO、PI、PO、运行指示灯、告警指示灯、蜂鸣器。运行指示灯、告警指示灯、蜂鸣器的IO类型是IO_TYPE_SYS,编号为1-3.
- 驱动需要在应用程序中动态加载
- 驱动操作主要通过填充IO_CMD结构数据进行。IO_CMD结构详见设备驱动头文件。
- IO__CMD结构变量通过GIO_IOControl接口写入和读取
- 函数原型:GIO_IOControl(DWORD hOpenContext,DWORD dwCode,PBYTE pBufIn,DWORD dwLenIn,PBYTE pBufOut,DWORD dwLenOut,PDWORD pdwActualOut);
- 参数说明:
- hOpenContext,设备句柄,执行CreateFile时得到
- dwCode,操作代码
- pBufIn,dwLenIn:写入驱动的数据
- pBufOut,dwLenOut:读取驱动的数据
- pdwActualOut,不使用。
- 初始化
- IO使用前必须先进行初始化,以便建立正确的IO功能配置
- 初始化步骤
- 声明操作数据结构
- 填写IO类型、通道号、初始变量值到IO_CMD结构变量
- 调用IOControl命令将数据写入驱动
- 编程示例(初始化AI1):
- struct IO_CMD BufIn;
- BufIn.type=IO_TYPE_AI;
- BufIn.channel=1;
- GIO_IOControl(hOpenContext,IOCTL_CMD_INIT,&BufIn,sizeof(BufIn),NULL,NULL,NULL);
- 数据读取编程示例,读取DI2电平
- struct IO_CMD BufIn;
- BufIn.type=IO_TYPE_DI;
- BufIn.channel=2;
- GIO_IOControl(hOpenContext,IOCTL_CMD_READ,&BufIn,sizeof(BufIn),&BufIn,sizeof(BufIn),NULL);
- BufIn.value即为返回值
- IO设置编程示例,设置AO3输出为5V
- struct IO_CMD BufIn;
- BufIn.type=IO_TYPE_AO;
- BufIn.channel=3;
- BufIn.value=0x7fff; //AO满幅输出为0xffff
- GIO_IOControl(hOpenContext,IOCTL_CMD_READ,&BufIn,sizeof(BufIn),NULL,NULL,NULL);