收藏 分销(赏)

组态王软件驱动程序开发.doc

上传人:a199****6536 文档编号:3120302 上传时间:2024-06-18 格式:DOC 页数:41 大小:2.22MB 下载积分:12 金币
下载 相关 举报
组态王软件驱动程序开发.doc_第1页
第1页 / 共41页
组态王软件驱动程序开发.doc_第2页
第2页 / 共41页


点击查看更多>>
资源描述
组态王驱动开发包           用户手册                                北京亚控科技发展有限公司       1. 版权  本开发包版权属于北京亚控科技发展有限公司,任何组织、团体、个人,未经亚控公司允许,不得擅自拷贝,使用,对于购买本开发包的组织、团体、个人,只能内部使用,不得擅自泄漏给第三方。 2. 概述 本开发包采用微软标准的COM组件技术,采用该技术,在创建接口时,可以创建多个互相独立对象,每个对象都可以拥有自己的变量。 最后的结果是一个DLL文件。接口中的各函数,是被组态王的两个应用程序---TouchExplorer.exe和TouchVew.exe调用的。如果这两个应用程序都不启动,函数中的代码将永远没有机会执行。 组态王的驱动程序是组态王和硬件设备连接的桥梁,本开发包用于开发组态王的驱动程序。只要拥有硬件的通讯协议,即可以使用本开发包开发组态王的驱动程序。  本开发包只能使用VC++开发。 3. 开发包3.0修订目的 a)       通用版和嵌入版统一到一套代码中,通用版和嵌入版实现同步更新。 b)       生成设备类,为多设备型号驱动提供解决方法。 c)       详尽、稳健的基类代码。 d)       完善的功能与向导。 e)       规范各类帮助函数。 f)       规范编码格式、统一使用英文版。 g)       修改部分功能的实现方法。 4. 开发包使用 我们提供一个开发向导工具“DriverToolKit3.0.0.0.exe”,使用这个工具,能够自动地生成驱动代码框架。 运行工具,如下图: 请在下页输入您的目标文件夹 点击“安装”,开发包即安装完成。  使用开发包向导创建驱动的过程:  (1)       启动Visual Studio.NET 2003。 (2)       新建一个工程,“项目类型”选择“Visual C++项目”,“模板”选择 “KingView Wizard” ,在下面的编辑框中输入工程的名字以及存储路径,点击“确定”。 (3)       这个创建向导分3页,第一页是“概述”,显示的是默认的设置信息,如果您不需要改变这些,直接点击“确定”即可成功的创建驱动框架。   (4)第二页是“驱动类型和编译选项”,包含如下部分:     驱动类型: o 串口驱动(适用于查询式设备) 这个类型,是我们一般常用的,适合于普通的上位查询,设备应答的通讯类型。   o 串口驱动(适用于实时上发数据的设备,非重叠IO) 这种方式,适用于下位设备实时上发数据的情况,驱动中需要创建一个线程来监视串口事件的通讯类型,采用非重叠IO方式。   o 串口驱动(适用于实时上发数据的设备,重叠IO,WinCE不支持) 这种方式,同上一种,也是适用于下位设备实时上发数据的情况,驱动中需要创建一个线程来监视串口的通讯类型。与前一种不同的是:采用了重叠IO方式。我们不推荐使用这种方式,因为WINCE系统不支持这种方式,使用这种方式开发的驱动,将不能在WINCE系统的嵌入式设备中运行。   o 以太网驱动(TCP服务器端) 这是针对于TCP方式通讯的驱动,适用于设备为客户端,组态王为Server,组态王查询,设备应答的通讯类型。如果遇到设备主动实时上发数据的情况,驱动中提供了相应的函数,可以直接调用函数,启动线程来监听网络事件。   o 以太网驱动(TCP客户端) 这是TCP方式通讯客户端的驱动,适用于组态王查询、设备应答的通讯类型。这种方式需要驱动主动去连接设备。如果遇到设备主动实时上发数据的情况,驱动中提供了相应的函数,可以直接调用函数,启动线程来监听网络事件。 o 以太网驱动(UDP服务器端) 目前还没有实现,参考TCP方式,代码中需要改动的地方有标注。  o 以太网驱动(UDP客户端) 目前还没有实现,参考TCP方式,代码中需要改动的地方有标注。  设备名称:     默认的设备名称是“Name1”,可以自由填写,但须注意应该与设备列表中的设备名称保持一致。  尝试连接类型: 当组态王与设备通讯失败了,组态王会周期性的尝试与设备通讯,这个过程,我们称之为“尝试连接”。 尝试连接,目前准备了如下几种类型:  o 永远为True,常用于板卡驱动。 o 程序员自由定义,常用于网络通讯或实时上发数据的设备。 o 使用“PACKET”进行通讯,适用于普通的驱动。   (5)第三页是“驱动基本信息”,包含如下条目:    驱动基本信息 o 驱动名称 o 版本 o 描述 o 程序员 o 项目经理   这些信息将被自动保存到历史文件(History.txt)中,同时也是保存在工程的ReadMe文件中,可以随工程浏览。  其他支持: o USB 通讯 o 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,否则返回FA
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服