|
ECC工控组态软件 - 简单3个步骤完成驱动开发
为了简化驱动的开发工作,本开发包对驱动接口和驱动进行了封装,使开发者专注于驱动本身功能的实现,抛开接口的定义,大大提高了驱动开发的效率和可靠性。
开发包的文件在ecdrv目录下。结合本开发包提供的modbus驱动例子讲解。驱动开发包和modbus例子下载
驱动开发步骤:
1、 用VC6创建MFC正规DLL,将开发包cpp文件加入工程,填写输出def文件



def输出文件函数导出定义直接从modbus例子复制过来:
; modbus.def : Declares the module parameters for the DLL.
LIBRARY "modbus"
DESCRIPTION 'modbus Windows Dynamic Link Library'
EXPORTS
; Explicit exports can go here
ECD_GetDriverInfo
ECD_CreateDriver
ECD_GetConfigBlkSize
ECD_GetConfigBlk
ECD_EnumVarDef
ECD_EnumBlkVarDef
ECD_GetVarDef
ECD_KillDriver
ECD_Start
ECD_Stop
ECD_GetStatus
ECD_GetErrInfo
ECD_Config
ECD_WriteVar
ECD_WriteBlkVar
ECD_AsynReadBlkVar
ECD_SetCallBack_T
只拷贝斜体部分
2、 从CEcdDrv派生建立一个具体的驱动类,实现从CEcdDrv重载的虚函数,并实现具体的功能。
// modbusdrv.h
#pragma once
#include "../ecdrv/ecdclass.h"
class CModDrv : public CEcdDrv //Modbus 驱动类,必须从CEcdDrv继承而来
{
//….
};
3、 实现类工厂,类工厂只有两个静态函数,很简单,一个是new一个具体的对象,另一个是填写驱动信息。
// CDrvFactory 驱动类工厂
CEcdDrv* CDrvFactory::NewDrv()
{
return new CModDrv();
}
DWORD CDrvFactory::GetDriverInfo(LPECDINFO lpecdinfo) //获取驱动信息
{
lpecdinfo->dwEcdVer = 0x101; //驱动规范版本Ver1.01
sprintf(lpecdinfo->szVersion,"V2.0");
sprintf(lpecdinfo->szCategory,"ECD MODBUS");
sprintf(lpecdinfo->szProducer,"www. kipway.com by Jiang Yong");
sprintf(lpecdinfo->szDriverName,"ECD MODBUS");
sprintf(lpecdinfo->szCommDesc,"TCP/485,RTU");
sprintf(lpecdinfo->szDriverFileName,"modbus");//驱动程序文件名(不要.dll后缀)
sprintf(lpecdinfo->szNote,"Modbus TCP/485 rtu driver For ECD");
return RESULT_OK;
}
开发包文件说明:
ecdriver.h 驱动回调函数和结构定义
ecdunit.h
ecdunit.cpp 一些工具
ecdclass.h
ecdclass.cpp 驱动基类和类厂定义
interface.cpp 接口定义
蒋勇
2008.11.03
www.kipway.com
|