




免费预览已结束,剩余37页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
组态王驱动开发包用户手册北京亚控科技发展有限公司1. 版权本开发包版权属于北京亚控科技发展有限公司,任何组织、团体、个人,未经亚控公司允许,不得擅自拷贝,使用,对于购买本开发包的组织、团体、个人,只能内部使用,不得擅自泄漏给第三方。2. 概述本开发包采用微软标准的COM组件技术,采用该技术,在创建接口时,可以创建多个互相独立对象,每个对象都可以拥有自己的变量。最后的结果是一个DLL文件。接口中的各函数,是被组态王的两个应用程序-TouchExplorer.exe和TouchVew.exe调用的。如果这两个应用程序都不启动,函数中的代码将永远没有机会执行。组态王的驱动程序是组态王和硬件设备连接的桥梁,本开发包用于开发组态王的驱动程序。只要拥有硬件的通讯协议,即可以使用本开发包开发组态王的驱动程序。本开发包只能使用VC+开发。3. 开发包3.0修订目的a) 通用版和嵌入版统一到一套代码中,通用版和嵌入版实现同步更新。b) 生成设备类,为多设备型号驱动提供解决方法。c) 详尽、稳健的基类代码。d) 完善的功能与向导。e) 规范各类帮助函数。f) 规范编码格式、统一使用英文版。g) 修改部分功能的实现方法。4. 开发包使用我们提供一个开发向导工具“DriverToolKit.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:WINDOWSsystem32中,这样可以在命令行中输入“kvdriver”,然后把需要转换的Visual Studio 2003工程文件拖动过来运行即可,如下所示:6. 驱动信息结构所有的结构都定义在文件“Data类型.h”中。_DevAddr该结构定义了设备地址格式.类型def struct _DevAddr UINT nDevAddr; TCHAR sDevAddrMAX_DEV_LEN; DEVADDR, * PDEVADDR;成员:sDevAddr: 用户在组态王中输入的原地址格式字符串。nDevAddr:实际转换后的设备地址数字.ComDevice这是串口设置信息的结构体.struct ComDevice short nFlag; WORD deviceKind; TCHAR deviceName32; 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:停止位.值描述ONESTOPBIT1 停止位ONE5STOPBITS1.5 停止位TWOSTOPBITS2 停止位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 szVarName32; 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:变量IDwVarType:变量类型,为如下几种:Bit, byte, int, uint, BCD, long, float, longbcd, stringszVarName:变量名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 Special4; PlcValue plcValue;ID_NO;成员:wVarId:变量IDwNo:通道wDataType:数据类型Special:目前没有使用plcValue:PLCVAR结构体指针ID_NO2该结构定义了新的接口的变量类型def struct IdNo2 WORD wVarId; WORD wNo; WORD wDataType; PlcValue plcValue; BYTE Special4; WORD wQualities; FILETIME ftTimeStamps; ID_NO2;成员:wVarId:变量IDwNo:通道wDataType:数据类型Special:目前没有用到plcValue:PLCVAR结构体指针wQualities:质量戳,0xc0代表GOOD, 0代表BAD.ftTimeStamps:时间戳,在驱动中一般设置当前的时间DEVICE_INFO该结构定义了设备信息类型def struct deviceinfo TCHAR sDeviceName32;DEVICE_INFO;成员:SDeviceName:设备名称,最大允许长度是32,使用TCHAR字符REG_INFO该结构定义了寄存器信息类型def struct reginfo TCHAR sRegName8; int nLowIndex; int nUpperIndex; WORD wDataType; int nData; REG_INFO;成员:sRegName:寄存器名称nLowIndex:开始通道nUpperIndex:结束通道7. 接口函数7.1 接口描述组态王与驱动交互,包括2个COM接口: IprotocolImp(老接口) 和 IProtocolImp2(新接口)IProtocolImp:StrToDevAddrXProtocolImp:StrToDevAddr(const TCHAR* str, LPVOID lpDevAddr)类型:Public目的:实现对地址输入的整理,判断用户输入的地址是否合法,并将地址的数值传给组态王,如果必要,也可以将地址以字符串的形式传给组态王。返回值:成功返回TRUE,否则返回FALSE参数Str:in 用户输入的地址字符串lpDevAddr:in,out 用于保存地址信息的结构XProtocolImp:GetRegistersXProtocolImp:GetRegisters(const TCHAR* szDeviceName, LPVOID * ppRegs, int *pRegNum)类型:Public目的:得到由szDeviceName确定的寄存器的名字和个数返回值;成功返回TRUE,否则返回FALSE参数szDeviceNamein 设备的唯一名字ppRegout 返回寄存器信息的指针数组的指针。如果szDeviceName无效,则返回NULL。pRegNumout 返回寄存器的个数,如果szDeviceName无效,则返回0。XProtocolImp:ConvertUserConfigToVarXProtocolImp: ConvertUserConfigToVar( LPVOID lpDbItemItem, LPVOID lpVar)类型Public目的将用户的配置字符串转换为组态王变量结构返回值WORD:如果转换成功则返回0,否则返回非零的错误代码参数lpDbItemin 指向结构MiniDbItem的指针lpVarin,out 指向结构PLCVAR的指针,返回变量就存放在这里XProtocolImp:AddVarToPacketXProtocolImp: AddVarToPacket( LPVOID lpVar, int nVarAccessType, LPVOID lpPacket)类型Public目的确认变量是否能够与一个包里的其他变量一起进行采集,以进行变量的打包, 如果可以加入,返回TRUE并修改包的起止地址;否则返回FALSE。返回值BOOL:FALSE表示不能打包,否则能参数lpVar in 变量指针nVarAccessTypein 读写方式lpPacketout 包指针XProtocolImp:OpenComDeviceXProtocolImp:OpenComDevice( int nDeviceType, LPVOID lpInitData)类型Public目的初始化通讯设备如:(串口或板卡等)返回值BOOL:成功则返回TRUE,否则返回FALSE参数nDeviceTypein 设备类型 lpInitDatain 一个指向COMM_CONFIG结构的指针XProtocolImp:InitialDeviceXProtocolImp:InitialDevice(const TCHAR* pDeviceName, int nUnitAddr, LPVOID lpDevAddr)类型Public目的初始化设备,设置该设备的初始化状态返回值BOOL:如果szDeviceName有效,则返回TRUE,否则返回FALSE。参数pDeviceNamein 设备的唯一名字nUnitAddrin 设备地址lpDevAddrin 应将此参数转换为结构- PDEVADDR。此结构详情参阅DATA类型.H文件。XProtocolImp:ProcessPacketXProtocolImp: ProcessPacket(LPVOID lpPacket)类型Public目的根据协议及包状态信息进行相应的处理,例如进行读写处理,如果读成功则把数据写入pPac-varList。返回值BOOL:如果成功,返回TRUE,否则,返回FALSE。参数lpPacketIn, out 包指针XProtocolImp:CloseComDeviceXProtocolImp:CloseComDevice()类型:Public目的:关闭该通讯设备返回值BOOL:成功则返回TRUE,否则返回FALSE。参数Null XProtocolImp:TryConnectXProtocolImp:TryConnect(const TCHAR* pDeviceName, int nUnitAddr, LPVOID lpDevAddr)类型:Public目的:与地址为UnitAddr的设备尝试进行通讯,用于故障侦探及恢复尝试。返回值尝试通讯成功返回TRUE,否则返回FALSE。参数pDeviceNamein 设备的唯一名字nUnitAddrin 需要进行故障侦探及恢复尝试的设备的地址。lpDevAddrin 应将此参数转换为结构- PDEVADDR。此结构详情参阅 DATA类型.H文件。备注当 ProcessPacket 失败后, TryConnect将被组态王调用2次,如果仍然失败,则该接口将按设定的尝试连接间隔被组态王调用。XProtocolImp:GetLastErrorXProtocolImp:GetLastError()类型Public目的返回最近一次的错误信息。返回值将最近一次的错误信息。参数无XProtocolImp2:GetTransXProtocolImp2:GetTrans( LPVOID* pHcomm)类型Public目的获取驱动打开的设备句柄,以便其他设备可以使用此句柄。返回值成功返回TRUE,否则返回FALSE。参数lpHcommout 接受设备句柄的指针XProtocolImp2:SetTransXProtocolImp2:SetTrans( LPVOID* pHcomm )类型:Public目的:将其他驱动打开的设备句柄传递给驱动。返回值:成功返回TRUE,否则返回FALSE。 参数lpHcommin 其他驱动打开的设备句柄。XProtocolImp2:ProcessPacket2XProtocolImp2: ProcessPacket2(LPVOID lpPacket)类型Public目的根据协议及包状态信息进行相应的处理,例如进行读写处理,如果读成功则把数据写入pPac-varList。返回值BOOL:如果成功,返回TRUE,否则,返回FALSE。参数lpPacketin,out 包指针7.2 接口函数的调用7.2.1 开发环境 新建设备在向导页输入地址字符串时,程序加载驱动,并调用驱动的StrToDevAddr当向导页转向下一页,也就是点击下一步时,组态王会调用StrDevToAddr,并将用户输入传递给驱动。驱动的功能是进行地址转换,具体解释参见StrDevToAddr。 新建变量用户在变量字典里面点击新建变量时,会弹出如下建立变量的对话框,若用户有不是驱动使用域填写有误或者有相关的域(包括驱动使用域)没有填写,组态王将会给出相应的提示,即组态王不调用驱动,直接给出错误提示。当用户点击连接设备完成设备连接或者在设备组合框中选定设备时,组态王会调用GetRegisters,组态王会将设备名称传递给驱动,由驱动返回给组态王寄存器列表。具体解释参见GetRegisters。所有用户必填域填写完毕,切换TAB页或者确定变量时,组态王会调用ConvertUserConfigToVar. 由驱动进行变量校验。组态王会将驱动域的输入作为MiniDbItem传递给驱动,ConvertUserConfigToVar将结果返回在组态王建立的变量PLCVAR中。具体解释见ConvertUserConfigToVar。 串口设备测试 若用户使用的设备是串口设备,可以方便的使用串口设备测试工具进行测试.用户进入测试设备对话框,如下图所示:当用户进入此对话框时,组态王立刻调用GetRegisters获取设备可以使用的寄存器列表。当用户点击添加或者加入变量时,组态王立刻调用ConvertUserConfigToVar进行变量校验。当用户点击读取,组态王就开始变量采集。所有采集步骤与运行环境一致,只是这儿测试只是测试一个设备,而运行环境采集定义的所有的设备。7.2.2. 运行环境以下步骤为特殊目的时,组态王对于每个设备都会调用一次此函数。校验设备地址 调用StrToDevAddr,对用户输入的地址字符串进行转换.若StrToDevAddr返回TRUE,转. 否则组态王提示用户地址格式不对,同时中止此设备的采集,不影响使用同一驱动的其他设备。 打开设备 调用OpenComDevice,若是串口设备,则驱动应在此中进行串口初始化.若不是串口驱动,驱动可以在此中完成一次性的初始化工作。若OpenComDevice返回TRUE,组态王会在信息窗口提示打开设备成功,并给出成功的设备名称,同时转。否则组态王会在信息窗口提示打开设备失败,认为设备存在问题,若是串口设备,此串口下连接的所有设备都不能通信,若是其他类型设备,则此种设备全部不能通信。OpenComDevice的参数由用户配置。 设备初始化调用InitialDevice,对设备进行初始化.若InitialDevice返回TRUE,转.否则组态王在信息提示用户设备初始化失败,同时中止此设备的采集,不影响使用同一驱动的其他设备。 变量校验调用ConvertUserConfigToVar对所有变量进行变量校验。若一个设备使用的所有变量都成功,转。若某一个设备中有一个变量校验失败,则组态王会在信息窗口提示变量校验无效,同时组态王会中止此设备的采集。 变量打包调用AddVarToPacket对变量进行打包处理.对于属于同一驱动的所有变量进行打包处理,当所有变量打包完成,。 设备通信调用ProcessPacket2进行设备通信,若返回TRUE,则释放中建立的PACKET,同时进行下一个PACKET处理.当按照刷新频率全部处理完毕,转重新打包通信.若返回FALSE,则转。 尝试恢复设备通信调用TryConnect进行设备尝试恢复,若返回TRUE,则返回进行正常通信处理。若返回失败组态王会再次调用TryConnect,若仍然返回FALSE,组态王认为设备失败,会中止设备采集一段时间,在定义设备时设置。 关闭设备调用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:工程类指针操作:GetRegistersBOOL CDev:GetRegisters( LPVOID *ppReg, int *pRegNum )类型Public目的得到由szDeviceName确定的寄存器的名字和个数。返回值成功返回TRUE,否则返回FALSE。参数ppRegout 返回寄存器信息的指针数组的指针。pRegNumout 返回寄存器的个数。GetDevicesBOOL CDev:GetDevices(LPVOID *ppDevice, int *pDeviceNum)类型:Public目的:得到设备的名字和个数。返回值:成功返回TRUE,否则返回FALSE。参数:ppDeviceout 返回设备列表信息的指针。pDeviceNum:out 返回设备的个数。ConvertUserConfigToVarWORD CDev:ConvertUserConfigToVar( LPVOID lpDbItemItem, LPVOID lpVar)类型:Public目的:将用户的配置字符串转换为组态王变量结构返回值:WORD:如果转换成功则返回0,否则返回非零的错误代码。参数lpDbItem:in 指向结构MiniDbItem的指针。lpVar:in,out 指向结构PLCVAR的指针,返回变量就存放在这里。AddVarToPacketBOOL CDev:AddVarToPacket( LPVOID lpVar, int nVarAccessType, LPVOID lpPacket)类型Public目的确认变量是否能够与一个包里的其他变量一起进行采集,以进行变量的打包, 如果可以加入,返回TRUE并修改包的起止地址;否则返回FALSE。返回值BOOL:FALSE表示不能打包,否则能。参数lpVar in 变量指针nVarAccessTypein 读写方式lpPacketint 包指针ProcessPacket2BOOL CDev:ProcessPacket2( LPVOID lpPacket )类型Public目的根据协议及包状态信息进行相应的处理,例如进行读写处理,如果读成功则把数据写入pPac-varList。(在新接口中调用)。返回值BOOL:如果成功,返回TRUE,否则,返回FALSE。参数lpPacketin,out 包指针。TryConnectBOOL CDev:TryConnect ( const TCHAR* szDeviceName, int iUnitAddr, LPVOID lpDevAddr )类型Public目的与地址为UnitAddr的设备尝试进行通讯,用于故障侦探及恢复尝试。返回值尝试通讯成功返回TRUE,否则返回FALSE。参数pDeviceNamein 设备的唯一名字。nUnitAddrin 需要进行故障侦探及恢复尝试的设备的地址。lpDevAddrin 应将此参数转换为结构- PDEVADDR。此结构详情参阅 DATATYPE.H文件。备注当 ProcessPacket 失败后, TryConnect将被组态王调用2次,如果仍然失败,则该接口将按设定的尝试连接间隔被组态王调用。StrToDevAddrBOOL CDevBase:StrToDevAddr(const TCHAR* str, LPVOID lpDevAddr)类型:Public目的:实现对地址输入的整理,判断用户输入的地址是否合法,并将地址的数值传给组态王,如果必要,也可以将地址以字符串的形式传给组态王。返回值:成功返回TRUE,否则返回FALSE。参数strin 用户输入的地址字符串。lpDevAddrin,out 用于保存地址信息的结构。SetProPtrvoid CDevBase:SetProPtr(CProject16Pro* pPro)类型Public目的设置工程类的指针。 返回值Null参数pProin 工程类的指针。GetSendTimesint CDevName1:GetSendTimes(PPACKET pPac)类型Public目的获取与设备一次交互的次数。返回值一个整型数据。参数pPacin,out 包指针GetSendStringBOOL CDev:GetSendString(PPACKET pPac,int& iLen, int& iRecLen, int iTimes)类型Public目的根据协议组合成发送桢。返回值成功返回TRUE,否则返回FALSE。参数pPacin,out 指向PACKET结构的指针。iLenout 发送数据的长度。iRecLenout 需要接收的数据的长度。iTimesin 在一次发送过程中调用的次序。TransmissionBOOL CDev:Transmission (int iLen, int iExpectedLen, int& iRecLen)类型Public目的通讯处理函数。返回值成功返回TRUE,否则返回FALSE。参数iLenin 数据的长度iExpectedLenin,out 期望接收到数据的长度。iRecLenin,out 实际接收到数据的长度。GetFirstFrameBOOL CDev:GetFirstFrame (int nbyteRead, int nExpectedLen, BYTE chFrameHead)类型Public目的获取第一个正确的数据桢。返回值成功返回TURE,否则,返回FALSE。参数nbyteReadin 实际接收到的数据的长度。iExpectedLenin 期望接收到的数据的长度。chFrameHeadin 第一个正确数据桢的位置。PreProcessDataBOOL CDev:PreProcessData (PPACKET pPac, int nbyteRead ,int nExpectedLen, int iTimes)类型Public目的检查接收的数据。返回值成功返回TURE,否则,返回FALSE。参数pPacin,out 包指针。nbyteReadin 实际接收到的数据长度。iExpectedLenin 期望接收到的数据长度。SendDataToKingViewBOOL CDev:SendDataToKingView(PPACKET pPac, int iLen)类型Public目的向组态王传送数据。返回值成功返回TRUE,否则,返回FALSE。参数pPacin,out 包指针。iLenOut 接收到的数据长度。8.3 通讯类 (CCom)实现串口,网卡等的通讯,开发包向导会根据您的设置,自动地产生串口通讯类 (CSerialCom) 或者网络通讯类 (CNetCom), 您也可以根据需要添加USB通讯类(CUSBCom)。如下是串口通讯类(CSerialCom)结构:8.3.1串口通讯类 CSerialCom属性:DWORD m_dwTimeOut;通讯超时变量HANDLE m_hComm;串口句柄bool bUseModem;是否使用MODEM操作:OpenComBOOL OpenCom(const ComDevice& InitData) ;类型Public目的打开串口。返回值成功返回TRUE,否则返回FALSE。参数pccin ComDevice 结构指针CloseComBOOL CloseCom();类型Public目的关闭串口返回值成功返回TRUE,否则返回FALSE。参数NullReOpenComBOOL ReOpenCom();类型Public目的重新打开串口。返回值成功返回TRUE,否则返回FALSE。参数NullPhysicalSendBOOL PhysicalSend(BYTE*pbBuf, DWORD dwWriteLen);类型Public目的向串口发送一数据桢。返回值成功返回TRUE,否则返回FALSE。参数pbBufin 发送数据缓冲区指针dwWriteLenin 发送数据长度PhysicalReceiveBOOL PhysicalReceive(BYTE*pbBuf,int iStart, int& iBytesRead);类型Public目的从串口接收数据。返回值成功返回TRUE,否则返回FALSE。参数pbBufin 接收缓冲区指针iBytesReadin 接收到的数据长度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:ShowImpMessagevoid CDebug:ShowImpMessage(TCHAR* szMessage)类型Public目的输出接口信息标志。返回值Null参数szMessage in 显示信息ShowErroMessagevoid CDebug:ShowErroMessage(TCHAR* szMessage)类型Public目的输出错误信息。返回值Null参数szMessage in 显示信息ShowFunMessagevoid CDebug:ShowFunMessage(TCHAR* szMessage)类型Public目的输出功能函数信息。返回值Null参数szMessage in
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 离婚财产公正协议书范本
- 注塑机设备租赁协议合同
- 永嘉专业会计代理协议书
- 汽车挂靠合同解除协议书
- 艺人签约合同之终止协议
- 电动摩托车租赁合同协议
- 混凝土浇灌施工合同范本
- 渡资产使用权合同或协议
- 腾讯产品包销合同协议书
- 汕尾打印机租赁协议合同
- 北京联合大学微观经济学期末试卷
- 2024版《供电营业规则》学习考试题库500题(含答案)
- 物业电梯困人应急处理
- 广东省初级中学学生学籍表
- 液压滑模施工资料
- 2024-2029全球及中国苯丙酮尿症(PKU)行业市场发展分析及前景趋势与投资发展研究报告
- 学术期刊推广方案
- 2023年保定市蠡县教师招聘考试真题
- T-SZHW 001-2024 深圳市城市管家服务管理规范(试行)
- 三废环保管理培训
- 《分娩方式的选择》课件
评论
0/150
提交评论