SCADA平台驱动开发调试说明文档_第1页
SCADA平台驱动开发调试说明文档_第2页
SCADA平台驱动开发调试说明文档_第3页
SCADA平台驱动开发调试说明文档_第4页
SCADA平台驱动开发调试说明文档_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、信息机电技术研究所驱动开发调试说明文档KingSCADA and KingView岳鹏程2015/4/15驱动程序开发和调试需要用到的接口、结构体以及函数的说明文档目录1. 驱动信息结构22. 接口函数72.1 接口描述7IProtocolImp:StrToDevAddr7XProtocolImp:GetRegisters7XProtocolImp:ConvertUserConfigToVar8XProtocolImp:AddVarToPacket8XProtocolImp:OpenComDevice8XProtocolImp:OpenComDevice( int nDeviceType, L

2、PVOID lpInitData)8XProtocolImp:InitialDevice9XProtocolImp:ProcessPacket9XProtocolImp:CloseComDevice10XProtocolImp:TryConnect10XProtocolImp:GetLastError10XProtocolImp2:GetTrans11XProtocolImp2:SetTrans11XProtocolImp2:ProcessPacket2112.2 接口函数的调用122.2.1 开发环境122.2.2. 运行环境143 程序结构163.1 驱动工程类 (CPro)163.2 设

3、备类 (CDev)173.3 通讯类 (CCom)233.3.1串口通讯类 CSerialCom233.4 调试信息类 (CDebug)253.5 帮助函数类 (CHelper)283.6 数据桢校验类 (CCheck)354. 错误提示信息码371. 驱动信息结构所有的结构都定义在文件“Data类型.h”中。_DevAddr该结构定义了设备地址格式.类型def struct _DevAddr                  

4、;               UINT    nDevAddr;           TCHAR   sDevAddrMAX_DEV_LEN; DEVADDR, * PDEVADDR; 成员:sDevAddr: 用户在组态王中输入的原地址格式字符串。nDevAddr:实际转换后的设备地址数字.ComDevi

5、ce这是串口设置信息的结构体.struct ComDevice                             short nFlag;            WORD  deviceKind;   &

6、#160;    TCHAR  deviceName32;      int   baudRate;         short dataBits;         short stopBits;         short parity;    &

7、#160;      short timeOut;          short failTimes;         short retryInterval;       short isRs232;      ; 成员:nFlag:串口标志,目前没有用到.DeviceKind

8、:设备类型,'1'代表串口设备DeviceName:逻辑名称 =COM1,COM2.BaudRate:波特率,范围是从 110到256000。DataBits:数据位StopBits:停止位.值描述ONESTOPBIT1 停止位ONE5STOPBITS1.5 停止位TWOSTOPBITS2 停止位Parity :校验. 值描述EVENPARITY偶校验MARKPARITY标志校验NOPARITY无校验ODDPARITY奇校验SPACEPARITY空格校验 TimeOut:超时,单位是毫秒FailTimes:失败次数RetryInterval:尝试间隔isRs232:通

9、讯模式,'1'代表RS232, '2'代表RS422, '3'代表RS485.PLCVAR该结构定义了用户变量的属性.类型def struct var                                  &#

10、160;      WORD wVarID;                 WORD wVarType;                 TCHAR szVarName32;          &#

11、160;     short  nDeviceIndex;              short  nUnitNo;                DEVADDR *pDevAddr;          

12、60;   TCHAR   *pszRegName;             short  nRegType;                short  nSubType;          

13、60;    short  nSubType1;               short  nSubType2;              short  nNo;          

14、0;         short  nDataType;                short  nAccessMode;           long   nFrequency;        

15、       long  nTimerCount;                     CWinThread* pComThread;         DDEValue   maxRaw;        &

16、#160;     DDEValue   minRaw;              short      bConvertion;           short      isBad;     &#

17、160;       short      isUnvalid;       PLCVAR, * PPLCVAR;成员:wvarID:变量IDwVarType:变量类型,为如下几种:Bit, byte, int, uint, BCD, long, float, longbcd, stringszVarName:变量名nDeviceIndex:设备索引nUnitNo:设备地址单元pDevAddr:设备地址pszRegN

18、ame:寄存器名称nRegType;寄存器类型nSubType:nSubType1:nSubType2:子类型,没有用到,如在驱动中有其他需要,可以自己定义使用。nNo:寄存器通道nDataType:数据类型nAccessMode:读写属性nFrequency:采集频率nTimerCount:超时次数pComThread:通讯线程maxRaw:最大原始值minRaw:最小原始值PACKET该结构定义了通讯包的属性  类型def struct Packet            

19、;                        short  nDeviceIndex;          short  nUnitNo;           

20、0; DEVADDR * pDevAddr;         TCHAR    * pszDevName;        TCHAR   *pszRegName;          short  nRegType;         

21、0;  short  nSubType;            short  nSubType1;            short  nSubType2;            int    nStartNo;

22、0;          int    nEndNo;            short  nPacketType;         CPtrList varList;        PACKET,* PPACK

23、ET;     成员:nDeviceIndex:设备索引nUnitNo:设备地址单元pDevAddr:设备地址结构指针pszDevName:设备地址nRegType:寄存器类型nSubType:nSubType1:nSubType2:子类型,没有用到,自己可以使用nStartNo:开始通道nEndNo:结束通道 nPacketType:包读写类型 VarList:变量列表,存储ID_NO和ID_NO2两种类型变量 ID_NO该结构定义了老的接口的变量类型def struct IdNo   

24、60;                   WORD wVarId;         WORD wNo;          WORD wDataType;       BYTE Special4;  

25、     PlcValue  plcValue; ID_NO;成员:wVarId:变量IDwNo:通道wDataType:数据类型Special:目前没有使用plcValue:PLCVAR结构体指针ID_NO2该结构定义了新的接口的变量类型def struct IdNo2                         

26、; WORD wVarId;           WORD wNo;            WORD wDataType;        PlcValue  plcValue;     BYTE Special4;         

27、;WORD wQualities;         FILETIME ftTimeStamps;                   ID_NO2;成员:wVarId:变量ID wNo:通道wDataType:数据类型Special:目前没有用到plcValue:PLCVAR结构体指针wQualities:质量戳,0xc0代表GOOD, 0代表BAD.ftT

28、imeStamps:时间戳,在驱动中一般设置当前的时间DEVICE_INFO该结构定义了设备信息类型def  struct deviceinfo                     TCHAR  sDeviceName32;DEVICE_INFO;成员:SDeviceName:设备名称,最大允许长度是32,使用TCHAR字符REG_INFO该结构定义了寄存器信息类型def  stru

29、ct reginfo                            TCHAR  sRegName8;         int   nLowIndex;        &#

30、160;  int   nUpperIndex;          WORD  wDataType;           int   nData;         REG_INFO;成员:sRegName:寄存器名称nLowIndex:开始通道nUpperIndex:结束通道2.

31、 接口函数2.1 接口描述组态王与驱动交互,包括2个COM接口: IprotocolImp(老接口) 和 IProtocolImp2(新接口)IProtocolImp:StrToDevAddrXProtocolImp:StrToDevAddr(const TCHAR* str, LPVOID lpDevAddr)类型:Public目的:实现对地址输入的整理,判断用户输入的地址是否合法,并将地址的数值传给组态王,如果必要,也可以将地址以字符串的形式传给组态王。返回值:成功返回TRUE,否则返回FALSE参数Str:in 用户输入的地址字符串lpDevAddr:in,out 用于保存地址信息的结构

32、XProtocolImp:GetRegistersXProtocolImp:GetRegisters(const TCHAR* szDeviceName,                             LPVOID * ppRegs, int *pRegNum)类型:Public目的:得到由szDeviceName确定的寄存器的名字和个数

33、返回值;成功返回TRUE,否则返回FALSE参数szDeviceNamein 设备的唯一名字ppRegout 返回寄存器信息的指针数组的指针。如果szDeviceName无效,则返回NULL。pRegNumout 返回寄存器的个数,如果szDeviceName无效,则返回0。 XProtocolImp:ConvertUserConfigToVarXProtocolImp: ConvertUserConfigToVar( LPVOID lpDbItemItem, LPVOID lpVar)类型Public目的将用户的配置字符串转换为组态王变量结构 返回值WORD:如果转换成功

34、则返回0,否则返回非零的错误代码参数lpDbItemin 指向结构MiniDbItem的指针lpVarin,out 指向结构PLCVAR的指针,返回变量就存放在这里XProtocolImp:AddVarToPacketXProtocolImp: AddVarToPacket( LPVOID lpVar, int nVarAccessType, LPVOID lpPacket)类型Public目的确认变量是否能够与一个包里的其他变量一起进行采集,以进行变量的打包, 如果可以加入,返回TRUE并修改包的起止地址;否则返回FALSE。返回值BOOL:FALSE表示不能打包,否则能 参数lp

35、Var in  变量指针nVarAccessTypein  读写方式lpPacketout 包指针 XProtocolImp:OpenComDeviceXProtocolImp:OpenComDevice( int nDeviceType, LPVOID lpInitData)类型Public目的初始化通讯设备如:(串口或板卡等) 返回值BOOL:成功则返回TRUE,否则返回FALSE 参数nDeviceTypein 设备类型 lpInitDatain 一个指向COMM_CONFIG结构的指针XProtocolImp:InitialDevice

36、XProtocolImp:InitialDevice(const TCHAR*  pDeviceName, int nUnitAddr, LPVOID lpDevAddr) 类型Public 目的初始化设备,设置该设备的初始化状态 返回值BOOL:如果szDeviceName有效,则返回TRUE,否则返回FALSE。参数pDeviceNamein 设备的唯一名字nUnitAddrin 设备地址lpDevAddrin  应将此参数转换为结构- PDEVADDR。此结构详情参阅DATA类型.H文件。XProtocolImp:ProcessPacke

37、tXProtocolImp: ProcessPacket(LPVOID lpPacket) 类型Public 目的根据协议及包状态信息进行相应的处理,例如进行读写处理,如果读成功则把数据写入pPac->varList。 返回值BOOL:如果成功,返回TRUE,否则,返回FALSE。 参数lpPacketIn, out 包指针 XProtocolImp:CloseComDeviceXProtocolImp:CloseComDevice()类型:Public目的:关闭该通讯设备返回值BOOL:成功则返回TRUE,否则返回FALSE。参数Nul

38、l XProtocolImp:TryConnectXProtocolImp:TryConnect(const TCHAR*  pDeviceName, int nUnitAddr, LPVOID lpDevAddr)类型:Public目的:与地址为UnitAddr的设备尝试进行通讯,用于故障侦探及恢复尝试。返回值尝试通讯成功返回TRUE,否则返回FALSE。参数pDeviceNamein 设备的唯一名字nUnitAddrin  需要进行故障侦探及恢复尝试的设备的地址。lpDevAddrin  应将此参数转换为结构- PDEVADDR。此结构详情参阅 &#

39、160;  DATA类型.H文件。 备注当 "ProcessPacket" 失败后, "TryConnect"将被组态王调用2次,如果仍然失败,则该接口将按设定的尝试连接间隔被组态王调用。 XProtocolImp:GetLastErrorXProtocolImp:GetLastError() 类型Public目的返回最近一次的错误信息。返回值将最近一次的错误信息。参数无XProtocolImp2:GetTransXProtocolImp2:GetTrans( LPVOID* pHcomm) 类型Publ

40、ic目的获取驱动打开的设备句柄,以便其他设备可以使用此句柄。返回值成功返回TRUE,否则返回FALSE。参数lpHcommout 接受设备句柄的指针XProtocolImp2:SetTransXProtocolImp2:SetTrans( LPVOID* pHcomm )类型:Public目的:将其他驱动打开的设备句柄传递给驱动。返回值:成功返回TRUE,否则返回FALSE。 参数lpHcommin 其他驱动打开的设备句柄。XProtocolImp2:ProcessPacket2XProtocolImp2: ProcessPacket2(LPVOID lpPacket)类型Public目的根据

41、协议及包状态信息进行相应的处理,例如进行读写处理,如果读成功则把数据写入pPac->varList。返回值BOOL:如果成功,返回TRUE,否则,返回FALSE。参数lpPacketin,out 包指针 2.2 接口函数的调用2.2.1 开发环境 新建设备在向导页输入地址字符串时,程序加载驱动,并调用驱动的StrToDevAddr 当向导页转向下一页,也就是点击下一步时,组态王会调用StrDevToAddr,并将用户输入传递给驱动。驱动的功能是进行地址转换,具体解释参见StrDevToAddr。  新建变量用户在变量字典里面点击新

42、建变量时,会弹出如下建立变量的对话框, 若用户有不是驱动使用域填写有误或者有相关的域(包括驱动使用域)没有填写,组态王将会给出相应的提示,即组态王不调用驱动,直接给出错误提示。当用户点击连接设备完成设备连接或者在设备组合框中选定设备时,组态王会调用GetRegisters,组态王会将设备名称传递给驱动,由驱动返回给组态王寄存器列表。具体解释参见GetRegisters。所有用户必填域填写完毕,切换TAB页或者确定变量时,组态王会调用ConvertUserConfigToVar. 由驱动进行变量校验。  组态王会将驱动域的输入作为MiniDbItem传递给驱动,Co

43、nvertUserConfigToVar将结果返回在组态王建立的变量PLCVAR中。具体解释见ConvertUserConfigToVar。  串口设备测试 若用户使用的设备是串口设备,可以方便的使用串口设备测试工具进行测试.用户进入测试设备对话框,如下图所示:  当用户进入此对话框时,组态王立刻调用GetRegisters获取设备可以使用的寄存器列表。当用户点击添加或者加入变量时,组态王立刻调用ConvertUserConfigToVar进行变量校验。当用户点击读取,组态王就开始变量采集。所有采集步骤与运行环境一致,只是这儿测试只是测试一个设备,而

44、运行环境采集定义的所有的设备。 2.2.2. 运行环境 以下步骤为特殊目的时,组态王对于每个设备都会调用一次此函数。校验设备地址 调用StrToDevAddr,对用户输入的地址字符串进行转换.若StrToDevAddr返回TRUE,转. 否则组态王提示用户地址格式不对,同时中止此设备的采集,不影响使用同一驱动的其他设备。  打开设备  调用OpenComDevice,若是串口设备,则驱动应在此中进行串口初始化.若不是串口驱动,驱动可以在此中完成一次性的初始化工作。若OpenComDevice返回TRUE,组态王会

45、在信息窗口提示打开设备成功,并给出成功的设备名称,同时转。否则组态王会在信息窗口提示打开设备失败,认为设备存在问题,若是串口设备,此串口下连接的所有设备都不能通信,若是其他类型设备,则此种设备全部不能通信。OpenComDevice的参数由用户配置。   设备初始化 调用InitialDevice,对设备进行初始化.若InitialDevice返回TRUE,转.否则组态王在信息提示用户设备初始化失败,同时中止此设备的采集,不影响使用同一驱动的其他设备。  变量校验调用ConvertUserConfi

46、gToVar对所有变量进行变量校验。若一个设备使用的所有变量都成功,转。若某一个设备中有一个变量校验失败,则组态王会在信息窗口提示变量校验无效,同时组态王会中止此设备的采集。  变量打包调用AddVarToPacket对变量进行打包处理.对于属于同一驱动的所有变量进行打包处理,当所有变量打包完成,。  设备通信调用ProcessPacket2进行设备通信,若返回TRUE,则释放中建立的PACKET,同时进行下一个PACKET处理.当按照刷新频率全部处理完毕,转重新打包通信.若返回FALSE,

47、则转。  尝试恢复设备通信调用TryConnect进行设备尝试恢复,若返回TRUE,则返回进行正常通信处理。若返回失败组态王会再次调用TryConnect,若仍然返回FALSE,组态王认为设备失败,会中止设备采集一段时间,在定义设备时设置。  关闭设备调用CloseComDevice关闭设备,若CloseComDevice返回FALSE或者迟迟不能完成关闭设备动作,将大大影响组态王的退出速度,甚至可能阻止组态王退出。 3 程序结构程序包含如下几个主要的类:驱动工程类 (Cpro): 实现2个接口: Iprot

48、ocolImp 和 IprotocolImp2。 设备类 (CDev):实现COM接口, 包括2个类,设备基类和设备子类。 通讯类 (CCom):实现串口,网卡等的通讯,开发包向导会根据您的设置,自动地产生串口通讯类 (CSerialCom) 或者网络通讯类 (CNetCom), 您也可以根据需要添加USB通讯类(CUSBCom)。 调试信息类 (CDebug):该类实现各种调试信息在组态王信息窗口中的输出,比如错误信息,接口信息,数据信息等。   帮助函数(CHelper):提供了一系列您在开发驱动过程中可能会用到的功能函数。 数据

49、桢校验类 (CCheck):提供了在开发中会遇到的各种校验函数,包括和校验、异或校验、循环冗余校验等。 类的调用与继承关系,如下图:3.1 驱动工程类 (CPro)该类实现2个接口: IprotocolImp 和 IprotocolImp2。关于接口函数目的,见“7.1” 节。 3.2 设备类 (CDev)实现COM接口,包含2个类,设备基类(CDevBase)和设备子类(CDev)。类CDevBase是所有设备子类的父类。属性:m_szDevKind:设备类型.m_pSerialCom:串口通讯类指针m_pCheck:校验类指针m_pPro:工程类指针操作:GetRegi

50、stersBOOL CDev:GetRegisters( LPVOID *ppReg, int *pRegNum )类型Public目的得到由szDeviceName确定的寄存器的名字和个数。返回值成功返回TRUE,否则返回FALSE。参数ppRegout 返回寄存器信息的指针数组的指针。pRegNumout 返回寄存器的个数。GetDevicesBOOL CDev:GetDevices(LPVOID *ppDevice, int *pDeviceNum)类型:Public目的:得到设备的名字和个数。返回值:成功返回TRUE,否则返回FALSE。参数:ppDeviceout 返回设备列表信息的

51、指针。pDeviceNum:out 返回设备的个数。ConvertUserConfigToVarWORD CDev:ConvertUserConfigToVar( LPVOID lpDbItemItem, LPVOID lpVar) 类型:Public目的:将用户的配置字符串转换为组态王变量结构 返回值:WORD:如果转换成功则返回0,否则返回非零的错误代码。参数lpDbItem:in  指向结构MiniDbItem的指针。lpVar:in,out 指向结构PLCVAR的指针,返回变量就存放在这里。AddVarToPacketBOOL CDev:AddVarToP

52、acket( LPVOID lpVar, int nVarAccessType, LPVOID lpPacket)类型Public目的确认变量是否能够与一个包里的其他变量一起进行采集,以进行变量的打包, 如果可以加入,返回TRUE并修改包的起止地址;否则返回FALSE。返回值BOOL:FALSE表示不能打包,否则能。参数lpVar in  变量指针nVarAccessTypein  读写方式lpPacketint 包指针ProcessPacket2BOOL CDev:ProcessPacket2( LPVOID lpPacket )类型Public目的根据协议及包状态信息进

53、行相应的处理,例如进行读写处理,如果读成功则把数据写入pPac->varList。(在新接口中调用)。返回值BOOL:如果成功,返回TRUE,否则,返回FALSE。参数lpPacketin,out 包指针。TryConnectBOOL CDev:TryConnect ( const TCHAR*  szDeviceName, int iUnitAddr, LPVOID lpDevAddr )类型Public 目的与地址为UnitAddr的设备尝试进行通讯,用于故障侦探及恢复尝试。返回值尝试通讯成功返回TRUE,否则返回FALSE。参数pDeviceNamein 设备的

54、唯一名字。nUnitAddrin  需要进行故障侦探及恢复尝试的设备的地址。lpDevAddrin  应将此参数转换为结构- PDEVADDR。此结构详情参阅 DATATYPE.H文件。备注当 "ProcessPacket" 失败后, "TryConnect"将被组态王调用2次,如果仍然失败,则该接口将按设定的尝试连接间隔被组态王调用。StrToDevAddrBOOL CDevBase:StrToDevAddr(const TCHAR* str, LPVOID lpDevAddr)类型:Public目的:实现对地址输入的整理,判断用户

55、输入的地址是否合法,并将地址的数值传给组态王,如果必要,也可以将地址以字符串的形式传给组态王。返回值:成功返回TRUE,否则返回FALSE。参数strin 用户输入的地址字符串。lpDevAddrin,out 用于保存地址信息的结构。SetProPtrvoid CDevBase:SetProPtr(CProject16Pro* pPro)类型Public目的设置工程类的指针。 返回值Null参数pProin 工程类的指针。GetSendTimesint CDevName1:GetSendTimes(PPACKET  pPac)类型Public目的获取与设备一次交互的次数。返回值一个整

56、型数据。参数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

57、 iExpectedLen, int& iRecLen)类型Public目的通讯处理函数。返回值成功返回TRUE,否则返回FALSE。参数iLenin 数据的长度iExpectedLenin,out 期望接收到数据的长度。iRecLenin,out 实际接收到数据的长度。GetFirstFrameBOOL CDev:GetFirstFrame (int nbyteRead, int nExpectedLen, BYTE chFrameHead)类型Public目的获取第一个正确的数据桢。返回值成功返回TURE,否则,返回FALSE。参数nbyteReadin  实际接收到的数

58、据的长度。iExpectedLenin   期望接收到的数据的长度。chFrameHeadin   第一个正确数据桢的位置。PreProcessDataBOOL CDev:PreProcessData (PPACKET pPac, int nbyteRead ,int nExpectedLen, int iTimes)类型Public目的检查接收的数据。返回值成功返回TURE,否则,返回FALSE。参数pPacin,out 包指针。nbyteReadin 实际接收到的数据长度。iExpectedLenin 期望接收到的数据长度。SendDataToKingViewBOOL

59、CDev:SendDataToKingView(PPACKET pPac, int iLen)类型Public目的向组态王传送数据。返回值成功返回TRUE,否则,返回FALSE。参数pPacin,out 包指针。iLenOut 接收到的数据长度。3.3 通讯类 (CCom)实现串口,网卡等的通讯,开发包向导会根据您的设置,自动地产生串口通讯类 (CSerialCom) 或者网络通讯类 (CNetCom), 您也可以根据需要添加USB通讯类(CUSBCom)。 如下是串口通讯类(CSerialCom)结构: 3.3.1串口通讯类 CSerialCom 属性:DWOR

60、D 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,否则

61、返回FALSE。参数NullPhysicalSendBOOL PhysicalSend(BYTE*pbBuf, DWORD dwWriteLen);类型Public目的向串口发送一数据桢。返回值成功返回TRUE,否则返回FALSE。参数pbBufin 发送数据缓冲区指针dwWriteLenin 发送数据长度PhysicalReceiveBOOL PhysicalReceive(BYTE*pbBuf,int iStart, int& iBytesRead);类型Public目的从串口接收数据。返回值成功返回TRUE,否则返回FALSE。 参数pbBufin 接收缓冲区指针iBy

62、tesReadin 接收到的数据长度3.4 调试信息类 (CDebug)该类实现各种调试信息在组态王信息窗口中的输出,比如错误信息,接口信息,数据信息等。目前提供了如下信息输出标志:/IMP_MSG    / 输出接口函数/FUN_MSG    / 输出功能函数/DATA_MSG   / 输出发送接收数据/ERR_MSG    / 输出错误信息/USER_MSG   / 输出用户定义信息/ALL_MSG    / 输出所有信息当用户在设备地址处,

63、输入如上信息,将会在组态王信息窗口中输出相应的信息。例如,输入 1 /ALL_MSG    在组态王信息窗口中显示:信息格式:时间                   精确时钟计数     信息 属性:static bool bShowIMPMsg;    输出接口信息标志static bool bShowE

64、RRMsg;输出错误信息标志static bool bShowFUNMsg;    输出功能函数标志static bool bShowDATAMsg;   输出发送接收数据标志static bool bShowUSERMsg;输出自定义信息标志static bool bShowALLMsg;输出所有信息标志Operations:ShowImpMessagevoid CDebug:ShowImpMessage(TCHAR* szMessage)类型Public目的输出接口信息标志。返回值Null参数szMessage  in 

65、  显示信息ShowErroMessagevoid CDebug:ShowErroMessage(TCHAR* szMessage)类型Public目的输出错误信息。返回值Null参数szMessage  in   显示信息ShowFunMessagevoid CDebug:ShowFunMessage(TCHAR* szMessage)类型Public目的输出功能函数信息。返回值Null参数szMessage in   显示信息ShowDataMessagevoid CDebug:ShowDataMessage(TCHAR* szM

66、essage)类型Public目的输出发送接收数据信息。返回值Null参数szMessage in   显示信息ShowUserMessagevoid CDebug:ShowUserMessage(TCHAR* szMessage)类型Public目的输出自定义信息。返回值Null参数szMessage in   显示信息3.5 帮助函数类 (CHelper)提供了一系列您在开发驱动过程中可能会用到的功能函数。 操作:GetWordWORD CHelper:GetWord(BYTE* buf)类型Public目的从缓冲区中得到整数.返回值转换后

67、的整数.参数buf in   数据缓冲区的指针GetLonglong CHelper:GetLong(BYTE* buf)类型Public 目的从缓冲区中得到长整数。返回值转换后的长整数 参数buf in   数据缓冲区的指针WordToBcdWORD CHelper:WordToBcd(WORD value)类型Public目的把整数转换BCD码。返回值转换后的BCD码参数value in   要转换的整数.LongToBcdlong CHelper:LongToBcd(long value)类型Public目的把长整数转

68、换BCD码。返回值转换后的BCD码参数value in 要转换的长整数BcdToWordWORD CHelper:BcdToWord(WORD value)类型Public目的把BCD码转换整数。返回值转换后的整数参数value in    要转换的BCD码BcdToLonglong CHelper:BcdToLong(long value)类型Public目的把BCD码转换长整数。返回值转换后的长整数参数value in   要转换的BCD码SwapWordWORD CHelper:SwapWord(WORD value)类型Public目的

69、转换整数的高低位字节。返回值转换后的长整数参数value in  要转换的BCD码 SwapLonglong CHelper:SwapLong(WORD *value)类型Public目的转换整数的高低位字节。返回值转换后的长整数参数value in  要转换的BCD码ByteBufToFloatfloat CHelper:ByteBufToFloat(BYTE *buf,int mode)类型Public目的把4个字节的数据按照mode 转换为浮点数FLOAT。返回值转换后的浮点数参数value in  数据缓冲区的指针mode in  数据转换的模式 0 -32101 -23012 -01233 -1032FloatToByteBufvoid CHelper:FloatToByteBuf(BYTE *buf,float data,int mode)类型Public目的把浮点数FLOAT按照mode 转换为4个字节的数据。返回值NA 参数buf  out   数据缓冲区的指针.d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论