首页 组态王驱动开发包用户手册

组态王驱动开发包用户手册

举报
开通vip

组态王驱动开发包用户手册组态王驱动开发包           用户手册                                北京亚控科技发展有限公司       1. 版权  本开发包版权属于北京亚控科技发展有限公司,任何组织、团体、个人,未经亚控公司允许,不得擅自拷贝,使用,对于购买本开发包的组织、团体、个人,只能内部使用,不得擅自泄漏给第三方。 2. 概述 本开发包采用微软标准的COM组件技术,采用该技术,在创建接口时,可以创建多个互相独立对象,每个对象都可以拥有自己的变量。 最后的结果是一个DLL文件。...

组态王驱动开发包用户手册
组态王驱动开发包           用户手册                                北京亚控科技发展有限公司       1. 版权  本开发包版权属于北京亚控科技发展有限公司,任何组织、团体、个人,未经亚控公司允许,不得擅自拷贝,使用,对于购买本开发包的组织、团体、个人,只能内部使用,不得擅自泄漏给第三方。 2. 概述 本开发包采用微软 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 的COM组件技术,采用该技术,在创建接口时,可以创建多个互相独立对象,每个对象都可以拥有自己的变量。 最后的结果是一个DLL文件。接口中的各函数,是被组态王的两个应用程序---TouchExplorer.exe和TouchVew.exe调用的。如果这两个应用程序都不启动,函数中的代码将永远没有机会执行。 组态王的驱动程序是组态王和硬件设备连接的桥梁,本开发包用于开发组态王的驱动程序。只要拥有硬件的通讯协议,即可以使用本开发包开发组态王的驱动程序。  本开发包只能使用VC++开发。 3. 开发包3.0修订目的 a)       通用版和嵌入版统一到一套代码中,通用版和嵌入版实现同步更新。 b)       生成设备类,为多设备型号驱动提供解决 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 。 c)       详尽、稳健的基类代码。 d)       完善的功能与向导。 e)       规范各类帮助函数。 f)       规范编码格式、统一使用英文版。 g)       修改部分功能的实现方法。 4. 开发包使用 我们提供一个开发向导工具“DriverToolKit3.0.0.0.exe”,使用这个工具,能够自动地生成驱动代码框架。 运行工具,如下图: 请在下页输入您的目标文件夹 点击“安装”,开发包即安装完成。  使用开发包向导创建驱动的过程:  (1)       启动Visual Studio.NET 2003。 (2)       新建一个工程,“项目类型”选择“Visual C++项目”,“ 模板 个人简介word模板免费下载关于员工迟到处罚通告模板康奈尔office模板下载康奈尔 笔记本 模板 下载软件方案模板免费下载 ”选择 “KingView Wizard” ,在下面的编辑框中输入工程的名字以及存储路径,点击“确定”。 (3)       这个创建向导分3页,第一页是“概述”,显示的是默认的设置信息,如果您不需要改变这些,直接点击“确定”即可成功的创建驱动框架。   (4)第二页是“驱动类型和编译选项”,包含如下部分:     驱动类型: · 串口驱动(适用于查询式设备) 这个类型,是我们一般常用的,适合于普通的上位查询,设备应答的通讯类型。   · 串口驱动(适用于实时上发数据的设备,非重叠IO) 这种方式,适用于下位设备实时上发数据的情况,驱动中需要创建一个线程来监视串口事件的通讯类型,采用非重叠IO方式。   · 串口驱动(适用于实时上发数据的设备,重叠IO,WinCE不支持) 这种方式,同上一种,也是适用于下位设备实时上发数据的情况,驱动中需要创建一个线程来监视串口的通讯类型。与前一种不同的是:采用了重叠IO方式。我们不推荐使用这种方式,因为WINCE系统不支持这种方式,使用这种方式开发的驱动,将不能在WINCE系统的嵌入式设备中运行。   · 以太网驱动(TCP服务器端) 这是针对于TCP方式通讯的驱动,适用于设备为客户端,组态王为Server,组态王查询,设备应答的通讯类型。如果遇到设备主动实时上发数据的情况,驱动中提供了相应的函数,可以直接调用函数,启动线程来监听网络事件。   · 以太网驱动(TCP客户端) 这是TCP方式通讯客户端的驱动,适用于组态王查询、设备应答的通讯类型。这种方式需要驱动主动去连接设备。如果遇到设备主动实时上发数据的情况,驱动中提供了相应的函数,可以直接调用函数,启动线程来监听网络事件。 · 以太网驱动(UDP服务器端) 目前还没有实现,参考TCP方式,代码中需要改动的地方有标注。  · 以太网驱动(UDP客户端) 目前还没有实现,参考TCP方式,代码中需要改动的地方有标注。  设备名称:     默认的设备名称是“Name1”,可以自由填写,但须注意应该与设备列表中的设备名称保持一致。  尝试连接类型: 当组态王与设备通讯失败了,组态王会周期性的尝试与设备通讯,这个过程,我们称之为“尝试连接”。 尝试连接,目前准备了如下几种类型:  · 永远为True,常用于板卡驱动。 · 程序员自由定义,常用于网络通讯或实时上发数据的设备。 · 使用“PACKET”进行通讯,适用于普通的驱动。   (5)第三页是“驱动基本信息”,包含如下条目:    驱动基本信息 · 驱动名称 · 版本 · 描述 · 程序员 · 项目经理   这些信息将被自动保存到历史文件(History.txt)中,同时也是保存在工程的ReadMe文件中,可以随工程浏览。  其他支持: · USB 通讯 · ADO 数据库操作   (6)点击“确定”后,将完成驱动工程的创建工作。 5. 工程转换工具 我们要求通用版和嵌入版使用同一套代码,做到通用版和嵌入版驱动实现同步更新,这就需要一个工具来将通用版工程文件转换为嵌入版工程文件。 同时,考虑到有的开发者习惯使用Visual Studio 98进行开发编译,我们也要有一个工具来将Visual Studio 2003的工程文件转换成Visual Studio 98的工程文件。 我们提供一个转换工具kvdriver(包含3个文件,kvdriver.exe, vc7tovc6.exe,vc7toevc.exe),使用这个工具,可以根据Visual Studio 2003的工程文件,创建成Visual Studio 98和EVC的工程文件,开发者可以在不同的开发环境间自由选择。  驱动开发包安装完成后,这个工具存放在目录KingViewDriver下。 在使用的时候,可以把这个工具放在系统文件夹C:\WINDOWS\system32中,这样可以在命令行中输入“kvdriver”,然后把需要转换的Visual Studio 2003工程文件拖动过来运行即可,如下所示:         6. 驱动信息结构   所有的结构都定义在文件“Data类型.h”中。 _DevAddr 该结构定义了设备地址格式. 类型def struct _DevAddr         {                           UINT    nDevAddr;               TCHAR   sDevAddr[MAX_DEV_LEN];  }DEVADDR, * PDEVADDR;   成员: sDevAddr: 用户在组态王中输入的原地址格式字符串。 nDevAddr: 实际转换后的设备地址数字.   ComDevice 这是串口设置信息的结构体. struct ComDevice            {                       short nFlag;            WORD  deviceKind;           TCHAR  deviceName[32];      int   baudRate;         short dataBits;         short stopBits;         short parity;           short timeOut;          short failTimes;            short retryInterval;        short isRs232;      };   成员: nFlag: 串口标志,目前没有用到. DeviceKind: 设备类型,'1'代表串口设备 DeviceName: 逻辑名称 =={COM1,COM2...} BaudRate: 波特率,范围是从 110到256000。 DataBits: 数据位 StopBits: 停止位. 值 描述 ONESTOPBIT 1 停止位 ONE5STOPBITS 1.5 停止位 TWOSTOPBITS 2 停止位 Parity :校验. 值 描述 EVENPARITY 偶校验 MARKPARITY 标志校验 NOPARITY 无校验 ODDPARITY 奇校验 SPACEPARITY 空格校验   TimeOut:超时,单位是毫秒 FailTimes:失败次数 RetryInterval:尝试间隔 isRs232:通讯模式,'1'代表RS232, '2'代表RS422, '3'代表RS485. PLCVAR 该结构定义了用户变量的属性. 类型def struct var              {                               WORD wVarID;                   WORD wVarType;                     TCHAR szVarName[32];                short  nDeviceIndex;                short  nUnitNo;                 DEVADDR *pDevAddr;              TCHAR   *pszRegName;                short  nRegType;                    short  nSubType;                    short  nSubType1;                   short  nSubType2;                  short  nNo;                         short  nDataType;                   short  nAccessMode;           long   nFrequency;                 long  nTimerCount;                      CWinThread* pComThread;                 DDEValue   maxRaw;              DDEValue   minRaw;              short      bConvertion;             short      isBad;                   short      isUnvalid;           }PLCVAR, * PPLCVAR; 成员: wvarID:变量ID wVarType:变量类型,为如下几种: Bit, byte, int, uint, BCD, long, float, longbcd, string szVarName:变量名 nDeviceIndex:设备索引 nUnitNo:设备地址单元 pDevAddr:设备地址 pszRegName:寄存器名称 nRegType;寄存器类型 nSubType: nSubType1: nSubType2: 子类型,没有用到,如在驱动中有其他需要,可以自己定义使用。 nNo:寄存器通道 nDataType:数据类型 nAccessMode:读写属性 nFrequency:采集频率 nTimerCount:超时次数 pComThread:通讯线程 maxRaw:最大原始值 minRaw:最小原始值 PACKET 该结构定义了通讯包的属性   类型def struct Packet           {                           short  nDeviceIndex;            short  nUnitNo;             DEVADDR * pDevAddr;         TCHAR    * pszDevName;          TCHAR   *pszRegName;            short  nRegType;                short  nSubType;                short  nSubType1;               short  nSubType2;               int    nStartNo;                int    nEndNo;              short  nPacketType;         CPtrList varList;           }PACKET,* PPACKET;       成员: nDeviceIndex:设备索引 nUnitNo:设备地址单元 pDevAddr:设备地址结构指针 pszDevName:设备地址 nRegType:寄存器类型 nSubType: nSubType1: nSubType2:子类型,没有用到,自己可以使用 nStartNo:开始通道 nEndNo:结束通道  nPacketType:包读写类型  VarList:变量列表,存储ID_NO和ID_NO2两种类型变量  ID_NO 该结构定义了老的接口的变量 类型def struct IdNo     {                       WORD wVarId;            WORD wNo;               WORD wDataType;         BYTE Special[4];            PlcValue  plcValue; }ID_NO; 成员: wVarId:变量ID wNo:通道 wDataType:数据类型 Special:目前没有使用 plcValue:PLCVAR结构体指针 ID_NO2 该结构定义了新的接口的变量 类型def struct IdNo2        {                       WORD wVarId;            WORD wNo;               WORD wDataType;        PlcValue  plcValue;     BYTE Special[4];            WORD wQualities;          FILETIME ftTimeStamps;                        }ID_NO2; 成员: wVarId:变量ID  wNo:通道 wDataType:数据类型 Special:目前没有用到 plcValue:PLCVAR结构体指针 wQualities:质量戳,0xc0代表GOOD, 0代表BAD. ftTimeStamps: 时间戳,在驱动中一般设置当前的时间 DEVICE_INFO 该结构定义了设备信息 类型def  struct deviceinfo  {                       TCHAR  sDeviceName[32]; }DEVICE_INFO; 成员: SDeviceName: 设备名称,最大允许长度是32,使用TCHAR字符 REG_INFO 该结构定义了寄存器信息 类型def  struct reginfo         {                           TCHAR  sRegName[8];         int   nLowIndex;                int   nUpperIndex;          WORD  wDataType;                int   nData;            }REG_INFO; 成员: sRegName:寄存器名称 nLowIndex:开始通道 nUpperIndex:结束通道 7. 接口函数 7.1 接口描述 组态王与驱动交互,包括2个COM接口: IprotocolImp(老接口) 和 IProtocolImp2(新接口) IProtocolImp::StrToDevAddr XProtocolImp::StrToDevAddr(const TCHAR* str, LPVOID lpDevAddr) 类型:Public 目的:实现对地址输入的整理,判断用户输入的地址是否合法,并将地址的数值传给组态王,如果必要,也可以将地址以字符串的形式传给组态王。 返回值:成功返回TRUE,否则返回FALSE 参数 Str:[in] 用户输入的地址字符串 lpDevAddr:[in,out] 用于保存地址信息的结构 XProtocolImp::GetRegisters XProtocolImp::GetRegisters(const TCHAR* szDeviceName,                              LPVOID * ppRegs, int *pRegNum) 类型:Public 目的:得到由szDeviceName确定的寄存器的名字和个数 返回值;成功返回TRUE,否则返回FALSE 参数 szDeviceName [in] 设备的唯一名字 ppReg [out] 返回寄存器信息的指针数组的指针。如果szDeviceName无效,则返回NULL。 pRegNum [out] 返回寄存器的个数,如果szDeviceName无效,则返回0。  XProtocolImp::ConvertUserConfigToVar XProtocolImp:: ConvertUserConfigToVar( LPVOID lpDbItemItem, LPVOID lpVar) 类型 Public 目的 将用户的配置字符串转换为组态王变量结构  返回值 WORD:如果转换成功则返回0,否则返回非零的错误代码 参数 lpDbItem [in] 指向结构MiniDbItem的指针 lpVar [in,out] 指向结构PLCVAR的指针,返回变量就存放在这里 XProtocolImp::AddVarToPacket XProtocolImp:: AddVarToPacket( LPVOID lpVar, int nVarAccessType, LPVOID lpPacket) 类型 Public 目的 确认变量是否能够与一个包里的其他变量一起进行采集,以进行变量的打包, 如果可以加入,返回TRUE并修改包的起止地址;否则返回FALSE。 返回值 BOOL:FALSE表示不能打包,否则能   参数 lpVar [in]  变量指针 nVarAccessType [in]  读写方式 lpPacket [out] 包指针   XProtocolImp::OpenComDevice XProtocolImp::OpenComDevice( int nDeviceType, LPVOID lpInitData) 类型 Public 目的 初始化通讯设备如:(串口或板卡等)  返回值 BOOL:成功则返回TRUE,否则返回FALSE  参数 nDeviceType [in] 设备类型 lpInitData [in] 一个指向COMM_CONFIG结构的指针 XProtocolImp::InitialDevice XProtocolImp::InitialDevice(const TCHAR*  pDeviceName, int nUnitAddr, LPVOID lpDevAddr)  类型 Public  目的 初始化设备,设置该设备的初始化状态  返回值 BOOL:如果szDeviceName有效,则返回TRUE,否则返回FALSE。 参数 pDeviceName [in] 设备的唯一名字 nUnitAddr [in] 设备地址 lpDevAddr [in]  应将此参数转换为结构--- PDEVADDR。此结构详情参阅DATA类型.H文件。 XProtocolImp::ProcessPacket XProtocolImp:: ProcessPacket(LPVOID lpPacket)   类型 Public   目的 根据协议及包状态信息进行相应的处理,例如进行读写处理,如果读成功则把数据写入pPac->varList。   返回值 BOOL:如果成功,返回TRUE,否则,返回FALSE。   参数 lpPacket [In, out] 包指针   XProtocolImp::CloseComDevice XProtocolImp::CloseComDevice() 类型:Public 目的:关闭该通讯设备 返回值 BOOL:成功则返回TRUE,否则返回FALSE。 参数 Null XProtocolImp::TryConnect XProtocolImp::TryConnect(const TCHAR*  pDeviceName, int nUnitAddr, LPVOID lpDevAddr) 类型:Public 目的:与地址为UnitAddr的设备尝试进行通讯,用于故障侦探及恢复尝试。 返回值 尝试通讯成功返回TRUE,否则返回FALSE。 参数 pDeviceName [in] 设备的唯一名字 nUnitAddr [in]  需要进行故障侦探及恢复尝试的设备的地址。 lpDevAddr [in]  应将此参数转换为结构--- PDEVADDR。此结构详情参阅    DATA类型.H文件。  备注 当 "ProcessPacket" 失败后, "TryConnect"将被组态王调用2次,如果仍然失败,则该接口将按设定的尝试连接间隔被组态王调用。  XProtocolImp::GetLastError XProtocolImp::GetLastError()   类型 Public 目的 返回最近一次的错误信息。 返回值 将最近一次的错误信息。 参数 无 XProtocolImp2::GetTrans XProtocolImp2::GetTrans( LPVOID* pHcomm)   类型 Public 目的 获取驱动打开的设备句柄,以便其他设备可以使用此句柄。 返回值 成功返回TRUE,否则返回FALSE。 参数 lpHcomm [out] 接受设备句柄的指针 XProtocolImp2::SetTrans XProtocolImp2::SetTrans( LPVOID* pHcomm ) 类型:Public 目的:将其他驱动打开的设备句柄传递给驱动。 返回值:成功返回TRUE,否则返回FALSE。 参数 lpHcomm [in] 其他驱动打开的设备句柄。 XProtocolImp2::ProcessPacket2 XProtocolImp2:: ProcessPacket2(LPVOID lpPacket) 类型 Public 目的 根据协议及包状态信息进行相应的处理,例如进行读写处理,如果读成功则把数据写入pPac->varList。 返回值 BOOL:如果成功,返回TRUE,否则,返回FALSE。 参数 lpPacket [in,out] 包指针   7.2 接口函数的调用 7.2.1 开发环境 7.2.1.1 新建设备 在向导页输入地址字符串时,程序加载驱动,并调用驱动的StrToDevAddr  当向导页转向下一页,也就是点击下一步时,组态王会调用StrDevToAddr,并将用户输入传递给驱动。 驱动的功能是进行地址转换,具体解释参见StrDevToAddr。  7.2.1.2 新建变量 用户在变量字典里面点击新建变量时,会弹出如下建立变量的对话框,  若用户有不是驱动使用域填写有误或者有相关的域(包括驱动使用域)没有填写,组态王将会给出相应的提示,即组态王不调用驱动,直接给出错误提示。 当用户点击连接设备完成设备连接或者在设备组合框中选定设备时,组态王会调用GetRegisters,组态王会将设备名称传递给驱动,由驱动返回给组态王寄存器列表。具体解释参见GetRegisters。 所有用户必填域填写完毕,切换TAB页或者确定变量时,组态王会调用ConvertUserConfigToVar. 由驱动进行变量校验。    组态王会将驱动域的输入作为MiniDbItem传递给驱动,ConvertUserConfigToVar将结果返回在组态王建立的变量PLCVAR中。 具体解释见ConvertUserConfigToVar。  7.2.1.3 串口设备测试 若用户使用的设备是串口设备,可以方便的使用串口设备测试工具进行测试.用户进入测试设备对话框,如下图所示:    当用户进入此对话框时,组态王立刻调用GetRegisters获取设备可以使用的寄存器列表。 当用户点击添加或者加入变量时,组态王立刻调用ConvertUserConfigToVar进行变量校验。 当用户点击读取,组态王就开始变量采集。所有采集步骤与运行环境一致,只是这儿测试只是测试一个设备,而运行环境采集定义的所有的设备。  7.2.2. 运行环境  以下步骤为特殊目的时,组态王对于每个设备都会调用一次此函数。 7.2.2.1校验设备地址 调用StrToDevAddr,对用户输入的地址字符串进行转换.若StrToDevAddr返回TRUE,转7.2.2.2. 否则组态王提示用户地址格式不对,同时中止此设备的采集,不影响使用同一驱动的其他设备。  7.2.2.2 打开设备  调用OpenComDevice,若是串口设备,则驱动应在此中进行串口初始化.若不是串口驱动,驱动可以在此中完成一次性的初始化工作。 若OpenComDevice返回TRUE,组态王会在信息窗口提示打开设备成功,并给出成功的设备名称,同时转7.2.2.3。否则组态王会在信息窗口提示打开设备失败,认为设备存在问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 ,若是串口设备,此串口下连接的所有设备都不能通信, 若是其他类型设备,则此种设备全部不能通信。 OpenComDevice的参数由用户配置。    7.2.2.3 设备初始化  调用InitialDevice,对设备进行初始化.若InitialDevice返回TRUE,转7.2.2.4.否则组态王在信息提示用户设备初始化失败,同时中止此设备的采集,不影响使用同一驱动的其他设备。  7.2.2.4 变量校验 调用ConvertUserConfigToVar对所有变量进行变量校验。若一个设备使用的所有变量都成功,转7.2.2.5。若某一个设备中有一个变量校验失败,则组态王会在信息窗口提示变量校验无效,同时组态王会中止此设备的采集。  7.2.2.5 变量打包 调用AddVarToPacket对变量进行打包处理.对于属于同一驱动的所有变量进行打包处理,当所有变量打包完成,7.2.2.6。  7.2.2.6 设备通信 调用ProcessPacket2进行设备通信,若返回TRUE,则释放7.2.2.5中建立的PACKET,同时进行下一个PACKET处理.当按照刷新频率全部处理完毕,转7.2.2.5重新打包通信.若返回FALSE,则转7.2.2.7。  7.2.2.7 尝试恢复设备通信 调用TryConnect进行设备尝试恢复,若返回TRUE,则返回7.2.2.6进行正常通信处理。若返回失败组态王会再次调用TryConnect,若仍然返回FALSE,组态王认为设备失败,会中止设备采集一段时间,在定义设备时设置。  7.2.2.8 关闭设备 调用CloseComDevice关闭设备,若CloseComDevice返回FALSE或者迟迟不能完成关闭设备动作,将大大影响组态王的退出速度,甚至可能阻止组态王退出。  8 程序结构 程序包含如下几个主要的类: 驱动工程类 (Cpro): 实现2个接口: IprotocolImp 和 IprotocolImp2。  设备类 (CDev): 实现COM接口, 包括2个类,设备基类和设备子类。  通讯类 (CCom): 实现串口,网卡等的通讯,开发包向导会根据您的设置,自动地产生串口通讯类 (CSerialCom) 或者网络通讯类 (CNetCom), 您也可以根据需要添加USB通讯类(CUSBCom)。  调试信息类 (CDebug): 该类实现各种调试信息在组态王信息窗口中的输出,比如错误信息,接口信息,数据信息等。    帮助函数(CHelper): 提供了一系列您在开发驱动过程中可能会用到的功能函数。  数据桢校验类 (CCheck): 提供了在开发中会遇到的各种校验函数,包括和校验、异或校验、循环冗余校验等。  类的调用与继承关系,如下图: 8.1 驱动工程类 (CPro) 该类实现2个接口: IprotocolImp 和 IprotocolImp2。 关于接口函数目的,见“7.1” 节。  8.2 设备类 (CDev) 实现COM接口,包含2个类,设备基类(CDevBase)和设备子类(CDev)。 类CDevBase是所有设备子类的父类。 属性: m_szDevKind:设备类型. m_pSerialCom:串口通讯类指针 m_pCheck:校验类指针 m_pPro:工程类指针 操作: GetRegisters BOOL CDev::GetRegisters( LPVOID *ppReg, int *pRegNum ) 类型 Public 目的 得到由szDeviceName确定的寄存器的名字和个数。 返回值 成功返回TRUE,否则返回FALSE。 参数 ppReg [out] 返回寄存器信息的指针数组的指针。 pRegNum [out] 返回寄存器的个数。 GetDevices BOOL CDev::GetDevices(LPVOID *ppDevice, int *pDeviceNum) 类型:Public 目的:得到设备的名字和个数。 返回值:成功返回TRUE,否则返回FALSE。 参数:ppDevice [out] 返回设备列表信息的指针。 pDeviceNum:[out] 返回设备的个数。 ConvertUserConfigToVar WORD CDev::ConvertUserConfigToVar( LPVOID lpDbItemItem, LPVOID lpVar)  类型:Public 目的:将用户的配置字符串转换为组态王变量结构  返回值:WORD:如果转换成功则返回0,否则返回非零的错误代码。 参数 lpDbItem:[in]  指向结构MiniDbItem的指针。 lpVar:[in,out] 指向结构PLCVAR的指针,返回变量就存放在这里。 AddVarToPacket BOOL CDev::AddVarToPacket( LPVOID lpVar, int nVarAccessType, LPVOID lpPacket) 类型 Public 目的 确认变量是否能够与一个包里的其他变量一起进行采集,以进行变量的打包, 如果可以加入,返回TRUE并修改包的起止地址;否则返回FALSE。 返回值 BOOL:FALSE表示不能打包,否则能。 参数 lpVar [in]  变量指针 nVarAccessType [in]  读写方式 lpPacket [int] 包指针 ProcessPacket2 BOOL CDev::ProcessPacket2( LPVOID lpPacket ) 类型 Public 目的 根据协议及包状态信息进行相应的处理,例如进行读写处理,如果读成功则把数据写入pPac->varList。(在新接口中调用)。 返回值 BOOL:如果成功,返回TRUE,否则,返回FALSE。 参数 lpPacket [in,out] 包指针。 TryConnect BOOL CDev::TryConnect ( const TCHAR*  szDeviceName, int iUnitAddr, LPVOID lpDevAddr ) 类型 Public  目的 与地址为UnitAddr的设备尝试进行通讯,用于故障侦探及恢复尝试。 返回值 尝试通讯成功返回TRUE,否则返回FALSE。 参数 pDeviceName [in] 设备的唯一名字。 nUnitAddr [in]  需要进行故障侦探及恢复尝试的设备的地址。 lpDevAddr [in]  应将此参数转换为结构--- PDEVADDR。此结构详情参阅 DATATYPE.H文件。 备注 当 "ProcessPacket" 失败后, "TryConnect"将被组态王调用2次,如果仍然失败,则该接口将按设定的尝试连接间隔被组态王调用。 StrToDevAddr BOOL CDevBase::StrToDevAddr(const TCHAR* str, LPVOID lpDevAddr) 类型:Public 目的:实现对地址输入的整理,判断用户输入的地址是否合法,并将地址的数值传给组态王,如果必要,也可以将地址以字符串的形式传给组态王。 返回值:成功返回TRUE,否则返回FALSE。 参数 str [in] 用户输入的地址字符串。 lpDevAddr [in,out] 用于保存地址信息的结构。 SetProPtr void CDevBase::SetProPtr(CProject16Pro* pPro) 类型 Public 目的 设置工程类的指针。 返回值 Null 参数 pPro [in] 工程类的指针。 GetSendTimes int CDevName1::GetSendTimes(PPACKET  pPac) 类型 Public 目的 获取与设备一次交互的次数。 返回值 一个整型数据。 参数 pPac [in,out] 包指针 GetSendString BOOL CDev::GetSendString(PPACKET pPac,int& iLen, int& iRecLen, int iTimes)  类型 Public 目的 根据协议组合成发送桢。 返回值 成功返回TRUE,否则返回FALSE。 参数 pPac [in,out] 指向PACKET结构的指针。 iLen [out] 发送数据的长度。 iRecLen [out] 需要接收的数据的长度。 iTimes [in] 在一次发送过程中调用的次序。 Transmission BOOL CDev::Transmission (int iLen, int iExpectedLen, int& iRecLen) 类型 Public 目的 通讯处理函数。 返回值 成功返回TRUE,否则返回FALSE。 参数 iLen [in] 数据的长度 iExpectedLen [in,out] 期望接收到数据的长度。 iRecLen [in,out] 实际接收到数据的长度。 GetFirstFrame BOOL CDev::GetFirstFrame (int nbyteRead, int nExpectedLen, BYTE chFrameHead) 类型 Public 目的 获取第一个正确的数据桢。 返回值 成功返回TURE,否则,返回FALSE。 参数 nbyteRead [in]  实际接收到的数据的长度。 iExpectedLen [in]   期望接收到的数据的长度。 chFrameHead [in]   第一个正确数据桢的位置。 PreProcessData BOOL CDev::PreProcessData (PPACKET pPac, int nbyteRead ,int nExpectedLen, int iTimes) 类型 Public 目的 检查接收的数据。 返回值 成功返回TURE,否则,返回FALSE。 参数 pPac [in,out] 包指针。 nbyteRead [in] 实际接收到的数据长度。 iExpectedLen [in] 期望接收到的数据长度。 SendDataToKingView BOOL CDev::SendDataToKingView(PPACKET pPac, int iLen) 类型 Public 目的 向组态王传送数据。 返回值 成功返回TRUE,否则,返回FALSE。 参数 pPac [in,out] 包指针。 iLen [Out] 接收到的数据长度。 8.3 通讯类 (CCom) 实现串口,网卡等的通讯,开发包向导会根据您的设置,自动地产生串口通讯类 (CSerialCom) 或者网络通讯类 (CNetCom), 您也可以根据需要添加USB通讯类(CUSBCom)。  如下是串口通讯类(CSerialCom)结构:  8.3.1串口通讯类 CSerialCom   属性: DWORD m_dwTimeOut; 通讯超时变量 HANDLE m_hComm; 串口句柄 bool bUseModem; 是否使用MODEM 操作: OpenCom BOOL OpenCom(const ComDevice& InitData) ; 类型 Public 目的 打开串口。 返回值 成功返回TRUE,否则返回FALSE。 参数 pcc [in] ComDevice 结构指针 CloseCom BOOL CloseCom(); 类型 Public 目的 关闭串口 返回值 成功返回TRUE,否则返回FALSE。 参数 Null ReOpenCom BOOL ReOpenCom(); 类型 Public 目的 重新打开串口。 返回值 成功返回TRUE,否则返回FALSE。 参数 Null PhysicalSend BOOL PhysicalSend(BYTE*pbBuf, DWORD dwWriteLen); 类型 Public 目的 向串口发送一数据桢。 返回值 成功返回TRUE,否则返回FALSE。 参数 pbBuf [in] 发送数据缓冲区指针 dwWriteLen [in] 发送数据长度 PhysicalReceive BOOL PhysicalReceive(BYTE*pbBuf,int iStart, int& iBytesRead); 类型 Public 目的 从串口接收数据。 返回值 成功返回TRUE,否则返回FALSE。   参数 pbBuf [in] 接收缓冲区指针 iBytesRead [in] 接收到的数据长度 8.4 调试信息类 (CDebug) 该类实现各种调试信息在组态王信息窗口中的输出,比如错误信息,接口信息,数据信息等。 目前提供了如下信息输出标志: /IMP_MSG    // 输出接口函数 /FUN_MSG    // 输出功能函数 /DATA_MSG   // 输出发送接收数据 /ERR_MSG    // 输出错误信息 /USER_MSG   // 输出用户定义信息 /ALL_MSG    // 输出所有信息 当用户在设备地址处,输入如上信息,将会在组态王信息窗口中输出相应的信息。 例如,输入 1 /ALL_MSG     在组态王信息窗口中显示: 信息格式: 时间                   精确时钟计数     信息  属性: static bool bShowIMPMsg;    输出接口信息标志 static bool bShowERRMsg; 输出错误信息标志 static bool bShowFUNMsg;    输出功能函数标志 static bool bShowDATAMsg;   输出发送接收数据标志 static bool bShowUSERMsg; 输出自定义信息标志 static bool bShowALLMsg; 输出所有信息标志 Operations: ShowImpMessage void CDebug::ShowImpMessage(TCHAR* szMessage) 类型 Public 目的 输出接口信息标志。 返回值 Null 参数 szMessage  [in]   显示信息 ShowErroMessage void CDebug::ShowErroMessage(TCHAR* szMessage) 类型 Public 目的 输出错误信息。 返回值 Null 参数 szMessage  [in]   显示信息 ShowFunMessage void CDebug::ShowFunMessage(TCHAR* szMessage) 类型 Public 目的 输出功能函数信息。 返回值 Null 参数 szMessage [in]   显示信息 ShowDataMessage void CDebug::ShowDataMessage(TCHAR* szMessage) 类型 Public 目的 输出发送接收数据信息。 返回值 Null 参数 szMessage [in]   显示信息 ShowUserMessage void CDebug::ShowUserMessage(TCHAR* szMessage) 类型 Public 目的 输出自定义信息。 返回值 Null 参数 szMessage [in]   显示信息 8.5 帮助函数类 (CHelper) 提供了一系列您在开发驱动过程中可能会用到的功能函数。   操作: GetWord WORD CHelper::GetWord(BYTE* buf) 类型 Public 目的 从缓冲区中得到整数. 返回值 转换后的整数. 参数 buf [in]   数据缓冲区的指针 GetLong long CHelper::GetLong(BYTE* buf) 类型 Public   目的 从缓冲区中得到长整数。 返回值 转换后的长整数 参数 buf [in]   数据缓冲区的指针 WordToBcd WORD CHelper::WordToBcd(WORD value) 类型 Public 目的 把整数转换BCD码。 返回值 转换后的BCD码 参数 value [in]   要转换的整数. LongToBcd long CHelper::LongToBcd(long value) 类型 Public 目的 把长整数转换BCD码。 返回值 转换后的BCD码 参数 value [in] 要转换的长整数 BcdToWord WORD CHelper::BcdToWord(WORD value) 类型 Public 目的 把BCD码转换整数。 返回值 转换后的整数 参数 value [in]    要转换的BCD码 BcdToLong long CHelper::BcdToLong(long value) 类型 Public 目的 把BCD码转换长整数。 返回值 转换后的长整数 参数 value [in]   要转换的BCD码 SwapWord WORD CHelper::SwapWord(WORD value) 类型 Public 目的 转换整数的高低位字节。 返回值 转换后的长整数 参数 value [in]  要转换的BCD码  SwapLong long CHelper::SwapLong(WORD *value) 类型 Public 目的 转换整数的高低位字节。 返回值 转换后的长整数 参数 value [in]  要转换的BCD码 ByteBufToFloat float CHelper::ByteBufToFloat(BYTE *buf,int mode) 类型 Public 目的 把4个字节的数据按照mode 转换为浮点数FLOAT。 返回值 转换后的浮点数 参数 value [in]  数据缓冲区的指针 mode [in]  数据转换的模式 0 --3210 1 --2301 2 --0123 3 --1032 FloatToByteBuf void CHelper::FloatToByteBuf(BYTE *buf,float data,int mode) 类型 Public 目的 把浮点数FLOAT按照mode 转换为4个字节的数据。 返回值 NA 参数 buf  [out]   数据缓冲区的指针. data  [in]    要转换的浮点数 mode  [in]    数据转换的模式       0 --3210       1 --2301       2 --0123       3 --1032 ByteToASC void CHelper::ByteToASC( BYTE* buf, BYTE data ) 类型 Public 目的 把一个字节的数据转换为两个ASCII码放在buf内。 返回值 NA 参数 buf  [out]   数据缓冲区的指针. data  [out]   要转换的字节数 ASCToByte BYTE CHelper::ASCToByte( BYTE* buf ) 类型 Public 目的 把缓冲区中的两个ASCII码转换为一个字节数据。 返回值 转换后的字节数据 参数 buf [in]   数据缓冲区的指针 WordToASC void CHelper::WordToASC( BYTE* buf, WORD data ) 类型 Public 目的 把一个字的数据转换为4个ASCII码放在buf内。 返回值 Null  参数 buf  [out]   数据缓冲区的指针data  [in]    要转换的整数 ASCToWord WORD CHelper::ASCToWord( BYTE* buf ) 类型 Public 目的 把缓冲区中的4个ASCII码转换为一个字数据。 返回值 转换后的整数 参数 buf [in]   数据缓冲区的指针 LongToASC void CHelper::LongToASC(BYTE *buf ,long data) 类型 Public 目的 把一个双字的数据转换为8个ASCII码放在buf内。 返回值 Null 参数 buf [out]   数据缓冲区的指针 data [in]    要转换的长整数 ASCToLong LONG CHelper::ASCToLong(BYTE *buf) 类型 Public 目的 把缓冲区中的8个ASCII码转换为一个双字数据。 返回值 转换后的长整数 参数 buf [in]   数据缓冲区的指针 BCDToASC void CHelper::BCDToASC( BYTE* buf, WORD data ) 类型 Public 目的 把一个字BCD的数据转换为4个ASCII码放在buf内。 返回值 Null 参数 buf [out]   数据缓冲区的指针 data [in]    要转换的整数 ASCToBCD WORD CHelper::ASCToBCD( BYTE* buf ) 类型 Public 目的 把缓冲区中的4个ASCII码转换为一个字BCD数据。 返回值 转换后的整数 参数 buf [in]   数据缓冲区的指针 KvGetTickCount ULONGLONG CHelper::KvGetTickCount() 类型 Public 目的 获得当前的时钟计数 返回值 一
本文档为【组态王驱动开发包用户手册】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_686486
暂无简介~
格式:doc
大小:2MB
软件:Word
页数:42
分类:互联网
上传时间:2012-08-30
浏览量:110