驱动开发包培训教程详解.ppt

DEVADDR结构体: typedef struct _DevAddr//device address Structure { UINT nDevAddr; TCHAR sDevAddr[MAX_DEV_LEN];//device address name }DEVADDR, * PDEVADDR; 关于打包规则(以下为开发包默认的打包规则) 1、包里的变量最多为200个 2、同一设备、同一寄存器、读写属性相同才能打包 3、写变量不打包 4、对于包队列,写包的优先级高于读包 Thanks! 驱动开发包培训 北京亚控科技 姜伟杰 培训内容 第一部分:驱动介绍 第二部分:通用开发包 第三部分:QA 第一部分 驱动介绍 组态王驱动原理 组态王驱动接口函数 第一部分 驱动介绍 组态王驱动原理 组态王驱动函数是基于Windows标准COM组件 把每一台与之通讯的下位机设备看作是外部设备,设备的驱动程序作为组态王和外部设备的通讯接口 通过驱动接口程序和外部设备交换数据 驱动和组态王构成一个完整的系统 第一部分 驱动介绍 第一部分 驱动介绍 组态王驱动接口函数 1. StrToDevAddr( const TCHAR* str, LPVOID lpDevAddr ) 实现对地址输入的整理,判断用户输入的地址是否合法,并将地址的信息传给组态王; const TCHAR* str 将地址栏中操作员输入的字符传给驱动; LPVOID lpDevAddr 将设备地址信息保存在DEVADDR结构中。 第一部分 驱动介绍 第一部分 驱动介绍 组态王驱动接口函数 2. GetRegisters( const TCHAR* szDeviceName, LPVOID *ppReg, int *pRegNum ) 得到由szDeviceName确定的寄存器的名字和个数。 LPVOID *ppReg 寄存器信息指针; int *pRegNum 寄存器个数 第一部分 驱动介绍 组态王驱动接口函数 3. ConvertUserConfigToVar( LPVOID lpDbItem, LPVOID lpVar ) 将用户的配置字符串转换为组态王变量结构。 LPVOID lpDbItem 指向结构MiniDbItem的指针; LPVOID lpVar 指向结构PLCVAR的指针。 第一部分 驱动介绍 组态王驱动接口函数 4. AddVarToPacket( LPVOID lpVar, int nVarAccessType, LPVOID lpPacket) 确认变量是否能够打进该包。 LPVOID lpVar 变量指针; int nVarAccessType 读写方式; LPVOID lpPacket 包指针。 第一部分 驱动介绍 第一部分 驱动介绍 组态王驱动接口函数 5. OpenComDevice( int nDeviceType, LPVOID lpInitData ) 初始化通讯设备 如串口或板卡等。 int nDeviceType 仪表类型或PLC类型 LPVOID lpInitData 指向ComDevice结构的指针。 第一部分 驱动介绍 组态王驱动接口函数 6. InitialDevice(const TCHAR* pDeviceName, int nUnitAddr, LPVOID lpDevAddr ) 初始化设备,设置该设备的初始化状态。 新开发包中直接返回TRUE。 第一部分 驱动介绍 组态王驱动接口函数 7. ProcessPacket( LPVOID lpPacket ) 根据协议及包状态信息进行相应的处理 LPVOID lpPacket 包指针。 新开发包中该函数未处理,直接返回TRUE。 第一部分 驱动介绍 组态王驱动接口函数 8. CloseComDevice() 关闭该通讯设备 第一部分 驱动介绍 组态王驱动接口函数 9. TryConnect( const TCHAR* pDeviceName, int nUnitAddr, LPVOID lpDevAddr ) 与地址为nUnitAddr的设备尝试进行通讯,用于故障侦探及恢复尝试。 第一部分 驱动介绍 组态王驱动接口函数 10. ProcessPacket2( LPVOID lpPacket ) 根据协议及包状态信息进行相应的处理。 与ProcessPacket( LPVOID lpPacket )的区别:质量戳,时间戳 目

文档评论(0)

1亿VIP精品文档

相关文档