版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、信息機電技術(shù)研究所驅(qū)動開發(fā)調(diào)試說明文檔KingSCADA and KingView岳鵬程2015/4/15驅(qū)動程序開發(fā)和調(diào)試需要用到的接口、結(jié)構(gòu)體以及函數(shù)的說明文檔目錄1. 驅(qū)動信息結(jié)構(gòu)22. 接口函數(shù)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 接口函數(shù)的調(diào)用122.2.1 開發(fā)環(huán)境122.2.2. 運行環(huán)境143 程序結(jié)構(gòu)163.1 驅(qū)動工程類 (CPro)163.2 設(shè)
3、備類 (CDev)173.3 通訊類 (CCom)233.3.1串口通訊類 CSerialCom233.4 調(diào)試信息類 (CDebug)253.5 幫助函數(shù)類 (CHelper)283.6 數(shù)據(jù)楨校驗類 (CCheck)354. 錯誤提示信息碼371. 驅(qū)動信息結(jié)構(gòu)所有的結(jié)構(gòu)都定義在文件“Data類型.h”中。_DevAddr該結(jié)構(gòu)定義了設(shè)備地址格式.類型def struct _DevAddr
4、; UINT nDevAddr; TCHAR sDevAddrMAX_DEV_LEN; DEVADDR, * PDEVADDR; 成員:sDevAddr: 用戶在組態(tài)王中輸入的原地址格式字符串。nDevAddr:實際轉(zhuǎn)換后的設(shè)備地址數(shù)字.ComDevi
5、ce這是串口設(shè)置信息的結(jié)構(gòu)體.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:串口標(biāo)志,目前沒有用到.DeviceKind
8、:設(shè)備類型,'1'代表串口設(shè)備DeviceName:邏輯名稱 =COM1,COM2.BaudRate:波特率,范圍是從 110到256000。DataBits:數(shù)據(jù)位StopBits:停止位.值描述ONESTOPBIT1 停止位ONE5STOPBITS1.5 停止位TWOSTOPBITS2 停止位Parity :校驗. 值描述EVENPARITY偶校驗MARKPARITY標(biāo)志校驗NOPARITY無校驗ODDPARITY奇校驗SPACEPARITY空格校驗 TimeOut:超時,單位是毫秒FailTimes:失敗次數(shù)RetryInterval:嘗試間隔isRs232:通
9、訊模式,'1'代表RS232, '2'代表RS422, '3'代表RS485.PLCVAR該結(jié)構(gòu)定義了用戶變量的屬性.類型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:設(shè)備索引nUnitNo:設(shè)備地址單元pDevAddr:設(shè)備地址pszRegN
18、ame:寄存器名稱nRegType;寄存器類型nSubType:nSubType1:nSubType2:子類型,沒有用到,如在驅(qū)動中有其他需要,可以自己定義使用。nNo:寄存器通道nDataType:數(shù)據(jù)類型nAccessMode:讀寫屬性nFrequency:采集頻率nTimerCount:超時次數(shù)pComThread:通訊線程maxRaw:最大原始值minRaw:最小原始值PACKET該結(jié)構(gòu)定義了通訊包的屬性 類型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:設(shè)備索引nUnitNo:設(shè)備地址單元pDevAddr:設(shè)備地址結(jié)構(gòu)指針pszDevName:設(shè)備地址nRegType:寄存器類型nSubType:nSubType1:nSubType2:子類型,沒有用到,自己可以使用nStartNo:開始通道nEndNo:結(jié)束通道 nPacketType:包讀寫類型 VarList:變量列表,存儲ID_NO和ID_NO2兩種類型變量 ID_NO該結(jié)構(gòu)定義了老的接口的變量類型def struct IdNo
24、60; WORD wVarId; WORD wNo; WORD wDataType; BYTE Special4;
25、 PlcValue plcValue; ID_NO;成員:wVarId:變量IDwNo:通道wDataType:數(shù)據(jù)類型Special:目前沒有使用plcValue:PLCVAR結(jié)構(gòu)體指針I(yè)D_NO2該結(jié)構(gòu)定義了新的接口的變量類型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:數(shù)據(jù)類型Special:目前沒有用到plcValue:PLCVAR結(jié)構(gòu)體指針wQualities:質(zhì)量戳,0xc0代表GOOD, 0代表BAD.ftT
28、imeStamps:時間戳,在驅(qū)動中一般設(shè)置當(dāng)前的時間DEVICE_INFO該結(jié)構(gòu)定義了設(shè)備信息類型def struct deviceinfo TCHAR sDeviceName32;DEVICE_INFO;成員:SDeviceName:設(shè)備名稱,最大允許長度是32,使用TCHAR字符REG_INFO該結(jié)構(gòu)定義了寄存器信息類型def stru
29、ct reginfo TCHAR sRegName8; int nLowIndex;
30、160; int nUpperIndex; WORD wDataType; int nData; REG_INFO;成員:sRegName:寄存器名稱nLowIndex:開始通道nUpperIndex:結(jié)束通道2.
31、 接口函數(shù)2.1 接口描述組態(tài)王與驅(qū)動交互,包括2個COM接口: IprotocolImp(老接口) 和 IProtocolImp2(新接口)IProtocolImp:StrToDevAddrXProtocolImp:StrToDevAddr(const TCHAR* str, LPVOID lpDevAddr)類型:Public目的:實現(xiàn)對地址輸入的整理,判斷用戶輸入的地址是否合法,并將地址的數(shù)值傳給組態(tài)王,如果必要,也可以將地址以字符串的形式傳給組態(tài)王。返回值:成功返回TRUE,否則返回FALSE參數(shù)Str:in 用戶輸入的地址字符串lpDevAddr:in,out 用于保存地址信息的結(jié)構(gòu)
32、XProtocolImp:GetRegistersXProtocolImp:GetRegisters(const TCHAR* szDeviceName, LPVOID * ppRegs, int *pRegNum)類型:Public目的:得到由szDeviceName確定的寄存器的名字和個數(shù)
33、返回值;成功返回TRUE,否則返回FALSE參數(shù)szDeviceNamein 設(shè)備的唯一名字ppRegout 返回寄存器信息的指針數(shù)組的指針。如果szDeviceName無效,則返回NULL。pRegNumout 返回寄存器的個數(shù),如果szDeviceName無效,則返回0。 XProtocolImp:ConvertUserConfigToVarXProtocolImp: ConvertUserConfigToVar( LPVOID lpDbItemItem, LPVOID lpVar)類型Public目的將用戶的配置字符串轉(zhuǎn)換為組態(tài)王變量結(jié)構(gòu) 返回值WORD:如果轉(zhuǎn)換成功
34、則返回0,否則返回非零的錯誤代碼參數(shù)lpDbItemin 指向結(jié)構(gòu)MiniDbItem的指針lpVarin,out 指向結(jié)構(gòu)PLCVAR的指針,返回變量就存放在這里XProtocolImp:AddVarToPacketXProtocolImp: AddVarToPacket( LPVOID lpVar, int nVarAccessType, LPVOID lpPacket)類型Public目的確認變量是否能夠與一個包里的其他變量一起進行采集,以進行變量的打包, 如果可以加入,返回TRUE并修改包的起止地址;否則返回FALSE。返回值BOOL:FALSE表示不能打包,否則能 參數(shù)lp
35、Var in 變量指針nVarAccessTypein 讀寫方式lpPacketout 包指針 XProtocolImp:OpenComDeviceXProtocolImp:OpenComDevice( int nDeviceType, LPVOID lpInitData)類型Public目的初始化通訊設(shè)備如:(串口或板卡等) 返回值BOOL:成功則返回TRUE,否則返回FALSE 參數(shù)nDeviceTypein 設(shè)備類型 lpInitDatain 一個指向COMM_CONFIG結(jié)構(gòu)的指針XProtocolImp:InitialDevice
36、XProtocolImp:InitialDevice(const TCHAR* pDeviceName, int nUnitAddr, LPVOID lpDevAddr) 類型Public 目的初始化設(shè)備,設(shè)置該設(shè)備的初始化狀態(tài) 返回值BOOL:如果szDeviceName有效,則返回TRUE,否則返回FALSE。參數(shù)pDeviceNamein 設(shè)備的唯一名字nUnitAddrin 設(shè)備地址lpDevAddrin 應(yīng)將此參數(shù)轉(zhuǎn)換為結(jié)構(gòu)- PDEVADDR。此結(jié)構(gòu)詳情參閱DATA類型.H文件。XProtocolImp:ProcessPacke
37、tXProtocolImp: ProcessPacket(LPVOID lpPacket) 類型Public 目的根據(jù)協(xié)議及包狀態(tài)信息進行相應(yīng)的處理,例如進行讀寫處理,如果讀成功則把數(shù)據(jù)寫入pPac->varList。 返回值BOOL:如果成功,返回TRUE,否則,返回FALSE。 參數(shù)lpPacketIn, out 包指針 XProtocolImp:CloseComDeviceXProtocolImp:CloseComDevice()類型:Public目的:關(guān)閉該通訊設(shè)備返回值BOOL:成功則返回TRUE,否則返回FALSE。參數(shù)Nul
38、l XProtocolImp:TryConnectXProtocolImp:TryConnect(const TCHAR* pDeviceName, int nUnitAddr, LPVOID lpDevAddr)類型:Public目的:與地址為UnitAddr的設(shè)備嘗試進行通訊,用于故障偵探及恢復(fù)嘗試。返回值嘗試通訊成功返回TRUE,否則返回FALSE。參數(shù)pDeviceNamein 設(shè)備的唯一名字nUnitAddrin 需要進行故障偵探及恢復(fù)嘗試的設(shè)備的地址。lpDevAddrin 應(yīng)將此參數(shù)轉(zhuǎn)換為結(jié)構(gòu)- PDEVADDR。此結(jié)構(gòu)詳情參閱
39、160; DATA類型.H文件。 備注當(dāng) "ProcessPacket" 失敗后, "TryConnect"將被組態(tài)王調(diào)用2次,如果仍然失敗,則該接口將按設(shè)定的嘗試連接間隔被組態(tài)王調(diào)用。 XProtocolImp:GetLastErrorXProtocolImp:GetLastError() 類型Public目的返回最近一次的錯誤信息。返回值將最近一次的錯誤信息。參數(shù)無XProtocolImp2:GetTransXProtocolImp2:GetTrans( LPVOID* pHcomm) 類型Publ
40、ic目的獲取驅(qū)動打開的設(shè)備句柄,以便其他設(shè)備可以使用此句柄。返回值成功返回TRUE,否則返回FALSE。參數(shù)lpHcommout 接受設(shè)備句柄的指針XProtocolImp2:SetTransXProtocolImp2:SetTrans( LPVOID* pHcomm )類型:Public目的:將其他驅(qū)動打開的設(shè)備句柄傳遞給驅(qū)動。返回值:成功返回TRUE,否則返回FALSE。 參數(shù)lpHcommin 其他驅(qū)動打開的設(shè)備句柄。XProtocolImp2:ProcessPacket2XProtocolImp2: ProcessPacket2(LPVOID lpPacket)類型Public目的根據(jù)
41、協(xié)議及包狀態(tài)信息進行相應(yīng)的處理,例如進行讀寫處理,如果讀成功則把數(shù)據(jù)寫入pPac->varList。返回值BOOL:如果成功,返回TRUE,否則,返回FALSE。參數(shù)lpPacketin,out 包指針 2.2 接口函數(shù)的調(diào)用2.2.1 開發(fā)環(huán)境 新建設(shè)備在向?qū)ы撦斎氲刂纷址畷r,程序加載驅(qū)動,并調(diào)用驅(qū)動的StrToDevAddr 當(dāng)向?qū)ы撧D(zhuǎn)向下一頁,也就是點擊下一步時,組態(tài)王會調(diào)用StrDevToAddr,并將用戶輸入傳遞給驅(qū)動。驅(qū)動的功能是進行地址轉(zhuǎn)換,具體解釋參見StrDevToAddr。 新建變量用戶在變量字典里面點擊新
42、建變量時,會彈出如下建立變量的對話框, 若用戶有不是驅(qū)動使用域填寫有誤或者有相關(guān)的域(包括驅(qū)動使用域)沒有填寫,組態(tài)王將會給出相應(yīng)的提示,即組態(tài)王不調(diào)用驅(qū)動,直接給出錯誤提示。當(dāng)用戶點擊連接設(shè)備完成設(shè)備連接或者在設(shè)備組合框中選定設(shè)備時,組態(tài)王會調(diào)用GetRegisters,組態(tài)王會將設(shè)備名稱傳遞給驅(qū)動,由驅(qū)動返回給組態(tài)王寄存器列表。具體解釋參見GetRegisters。所有用戶必填域填寫完畢,切換TAB頁或者確定變量時,組態(tài)王會調(diào)用ConvertUserConfigToVar. 由驅(qū)動進行變量校驗。 組態(tài)王會將驅(qū)動域的輸入作為MiniDbItem傳遞給驅(qū)動,Co
43、nvertUserConfigToVar將結(jié)果返回在組態(tài)王建立的變量PLCVAR中。具體解釋見ConvertUserConfigToVar。 串口設(shè)備測試 若用戶使用的設(shè)備是串口設(shè)備,可以方便的使用串口設(shè)備測試工具進行測試.用戶進入測試設(shè)備對話框,如下圖所示: 當(dāng)用戶進入此對話框時,組態(tài)王立刻調(diào)用GetRegisters獲取設(shè)備可以使用的寄存器列表。當(dāng)用戶點擊添加或者加入變量時,組態(tài)王立刻調(diào)用ConvertUserConfigToVar進行變量校驗。當(dāng)用戶點擊讀取,組態(tài)王就開始變量采集。所有采集步驟與運行環(huán)境一致,只是這兒測試只是測試一個設(shè)備,而
44、運行環(huán)境采集定義的所有的設(shè)備。 2.2.2. 運行環(huán)境 以下步驟為特殊目的時,組態(tài)王對于每個設(shè)備都會調(diào)用一次此函數(shù)。校驗設(shè)備地址 調(diào)用StrToDevAddr,對用戶輸入的地址字符串進行轉(zhuǎn)換.若StrToDevAddr返回TRUE,轉(zhuǎn). 否則組態(tài)王提示用戶地址格式不對,同時中止此設(shè)備的采集,不影響使用同一驅(qū)動的其他設(shè)備。 打開設(shè)備 調(diào)用OpenComDevice,若是串口設(shè)備,則驅(qū)動應(yīng)在此中進行串口初始化.若不是串口驅(qū)動,驅(qū)動可以在此中完成一次性的初始化工作。若OpenComDevice返回TRUE,組態(tài)王會
45、在信息窗口提示打開設(shè)備成功,并給出成功的設(shè)備名稱,同時轉(zhuǎn)。否則組態(tài)王會在信息窗口提示打開設(shè)備失敗,認為設(shè)備存在問題,若是串口設(shè)備,此串口下連接的所有設(shè)備都不能通信,若是其他類型設(shè)備,則此種設(shè)備全部不能通信。OpenComDevice的參數(shù)由用戶配置。 設(shè)備初始化 調(diào)用InitialDevice,對設(shè)備進行初始化.若InitialDevice返回TRUE,轉(zhuǎn).否則組態(tài)王在信息提示用戶設(shè)備初始化失敗,同時中止此設(shè)備的采集,不影響使用同一驅(qū)動的其他設(shè)備。 變量校驗調(diào)用ConvertUserConfi
46、gToVar對所有變量進行變量校驗。若一個設(shè)備使用的所有變量都成功,轉(zhuǎn)。若某一個設(shè)備中有一個變量校驗失敗,則組態(tài)王會在信息窗口提示變量校驗無效,同時組態(tài)王會中止此設(shè)備的采集。 變量打包調(diào)用AddVarToPacket對變量進行打包處理.對于屬于同一驅(qū)動的所有變量進行打包處理,當(dāng)所有變量打包完成,。 設(shè)備通信調(diào)用ProcessPacket2進行設(shè)備通信,若返回TRUE,則釋放中建立的PACKET,同時進行下一個PACKET處理.當(dāng)按照刷新頻率全部處理完畢,轉(zhuǎn)重新打包通信.若返回FALSE,
47、則轉(zhuǎn)。 嘗試恢復(fù)設(shè)備通信調(diào)用TryConnect進行設(shè)備嘗試恢復(fù),若返回TRUE,則返回進行正常通信處理。若返回失敗組態(tài)王會再次調(diào)用TryConnect,若仍然返回FALSE,組態(tài)王認為設(shè)備失敗,會中止設(shè)備采集一段時間,在定義設(shè)備時設(shè)置。 關(guān)閉設(shè)備調(diào)用CloseComDevice關(guān)閉設(shè)備,若CloseComDevice返回FALSE或者遲遲不能完成關(guān)閉設(shè)備動作,將大大影響組態(tài)王的退出速度,甚至可能阻止組態(tài)王退出。 3 程序結(jié)構(gòu)程序包含如下幾個主要的類:驅(qū)動工程類 (Cpro): 實現(xiàn)2個接口: Iprot
48、ocolImp 和 IprotocolImp2。 設(shè)備類 (CDev):實現(xiàn)COM接口, 包括2個類,設(shè)備基類和設(shè)備子類。 通訊類 (CCom):實現(xiàn)串口,網(wǎng)卡等的通訊,開發(fā)包向?qū)鶕?jù)您的設(shè)置,自動地產(chǎn)生串口通訊類 (CSerialCom) 或者網(wǎng)絡(luò)通訊類 (CNetCom), 您也可以根據(jù)需要添加USB通訊類(CUSBCom)。 調(diào)試信息類 (CDebug):該類實現(xiàn)各種調(diào)試信息在組態(tài)王信息窗口中的輸出,比如錯誤信息,接口信息,數(shù)據(jù)信息等。 幫助函數(shù)(CHelper):提供了一系列您在開發(fā)驅(qū)動過程中可能會用到的功能函數(shù)。 數(shù)據(jù)
49、楨校驗類 (CCheck):提供了在開發(fā)中會遇到的各種校驗函數(shù),包括和校驗、異或校驗、循環(huán)冗余校驗等。 類的調(diào)用與繼承關(guān)系,如下圖:3.1 驅(qū)動工程類 (CPro)該類實現(xiàn)2個接口: IprotocolImp 和 IprotocolImp2。關(guān)于接口函數(shù)目的,見“7.1” 節(jié)。 3.2 設(shè)備類 (CDev)實現(xiàn)COM接口,包含2個類,設(shè)備基類(CDevBase)和設(shè)備子類(CDev)。類CDevBase是所有設(shè)備子類的父類。屬性:m_szDevKind:設(shè)備類型.m_pSerialCom:串口通訊類指針m_pCheck:校驗類指針m_pPro:工程類指針操作:GetRegi
50、stersBOOL CDev:GetRegisters( LPVOID *ppReg, int *pRegNum )類型Public目的得到由szDeviceName確定的寄存器的名字和個數(shù)。返回值成功返回TRUE,否則返回FALSE。參數(shù)ppRegout 返回寄存器信息的指針數(shù)組的指針。pRegNumout 返回寄存器的個數(shù)。GetDevicesBOOL CDev:GetDevices(LPVOID *ppDevice, int *pDeviceNum)類型:Public目的:得到設(shè)備的名字和個數(shù)。返回值:成功返回TRUE,否則返回FALSE。參數(shù):ppDeviceout 返回設(shè)備列表信息的
51、指針。pDeviceNum:out 返回設(shè)備的個數(shù)。ConvertUserConfigToVarWORD CDev:ConvertUserConfigToVar( LPVOID lpDbItemItem, LPVOID lpVar) 類型:Public目的:將用戶的配置字符串轉(zhuǎn)換為組態(tài)王變量結(jié)構(gòu) 返回值:WORD:如果轉(zhuǎn)換成功則返回0,否則返回非零的錯誤代碼。參數(shù)lpDbItem:in 指向結(jié)構(gòu)MiniDbItem的指針。lpVar:in,out 指向結(jié)構(gòu)PLCVAR的指針,返回變量就存放在這里。AddVarToPacketBOOL CDev:AddVarToP
52、acket( LPVOID lpVar, int nVarAccessType, LPVOID lpPacket)類型Public目的確認變量是否能夠與一個包里的其他變量一起進行采集,以進行變量的打包, 如果可以加入,返回TRUE并修改包的起止地址;否則返回FALSE。返回值BOOL:FALSE表示不能打包,否則能。參數(shù)lpVar in 變量指針nVarAccessTypein 讀寫方式lpPacketint 包指針ProcessPacket2BOOL CDev:ProcessPacket2( LPVOID lpPacket )類型Public目的根據(jù)協(xié)議及包狀態(tài)信息進
53、行相應(yīng)的處理,例如進行讀寫處理,如果讀成功則把數(shù)據(jù)寫入pPac->varList。(在新接口中調(diào)用)。返回值BOOL:如果成功,返回TRUE,否則,返回FALSE。參數(shù)lpPacketin,out 包指針。TryConnectBOOL CDev:TryConnect ( const TCHAR* szDeviceName, int iUnitAddr, LPVOID lpDevAddr )類型Public 目的與地址為UnitAddr的設(shè)備嘗試進行通訊,用于故障偵探及恢復(fù)嘗試。返回值嘗試通訊成功返回TRUE,否則返回FALSE。參數(shù)pDeviceNamein 設(shè)備的
54、唯一名字。nUnitAddrin 需要進行故障偵探及恢復(fù)嘗試的設(shè)備的地址。lpDevAddrin 應(yīng)將此參數(shù)轉(zhuǎn)換為結(jié)構(gòu)- PDEVADDR。此結(jié)構(gòu)詳情參閱 DATATYPE.H文件。備注當(dāng) "ProcessPacket" 失敗后, "TryConnect"將被組態(tài)王調(diào)用2次,如果仍然失敗,則該接口將按設(shè)定的嘗試連接間隔被組態(tài)王調(diào)用。StrToDevAddrBOOL CDevBase:StrToDevAddr(const TCHAR* str, LPVOID lpDevAddr)類型:Public目的:實現(xiàn)對地址輸入的整理,判斷用戶
55、輸入的地址是否合法,并將地址的數(shù)值傳給組態(tài)王,如果必要,也可以將地址以字符串的形式傳給組態(tài)王。返回值:成功返回TRUE,否則返回FALSE。參數(shù)strin 用戶輸入的地址字符串。lpDevAddrin,out 用于保存地址信息的結(jié)構(gòu)。SetProPtrvoid CDevBase:SetProPtr(CProject16Pro* pPro)類型Public目的設(shè)置工程類的指針。 返回值Null參數(shù)pProin 工程類的指針。GetSendTimesint CDevName1:GetSendTimes(PPACKET pPac)類型Public目的獲取與設(shè)備一次交互的次數(shù)。返回值一個整
56、型數(shù)據(jù)。參數(shù)pPacin,out 包指針GetSendStringBOOL CDev:GetSendString(PPACKET pPac,int& iLen, int& iRecLen, int iTimes) 類型Public目的根據(jù)協(xié)議組合成發(fā)送楨。返回值成功返回TRUE,否則返回FALSE。參數(shù)pPacin,out 指向PACKET結(jié)構(gòu)的指針。iLenout 發(fā)送數(shù)據(jù)的長度。iRecLenout 需要接收的數(shù)據(jù)的長度。iTimesin 在一次發(fā)送過程中調(diào)用的次序。TransmissionBOOL CDev:Transmission (int iLen, int
57、 iExpectedLen, int& iRecLen)類型Public目的通訊處理函數(shù)。返回值成功返回TRUE,否則返回FALSE。參數(shù)iLenin 數(shù)據(jù)的長度iExpectedLenin,out 期望接收到數(shù)據(jù)的長度。iRecLenin,out 實際接收到數(shù)據(jù)的長度。GetFirstFrameBOOL CDev:GetFirstFrame (int nbyteRead, int nExpectedLen, BYTE chFrameHead)類型Public目的獲取第一個正確的數(shù)據(jù)楨。返回值成功返回TURE,否則,返回FALSE。參數(shù)nbyteReadin 實際接收到的數(shù)
58、據(jù)的長度。iExpectedLenin 期望接收到的數(shù)據(jù)的長度。chFrameHeadin 第一個正確數(shù)據(jù)楨的位置。PreProcessDataBOOL CDev:PreProcessData (PPACKET pPac, int nbyteRead ,int nExpectedLen, int iTimes)類型Public目的檢查接收的數(shù)據(jù)。返回值成功返回TURE,否則,返回FALSE。參數(shù)pPacin,out 包指針。nbyteReadin 實際接收到的數(shù)據(jù)長度。iExpectedLenin 期望接收到的數(shù)據(jù)長度。SendDataToKingViewBOOL
59、CDev:SendDataToKingView(PPACKET pPac, int iLen)類型Public目的向組態(tài)王傳送數(shù)據(jù)。返回值成功返回TRUE,否則,返回FALSE。參數(shù)pPacin,out 包指針。iLenOut 接收到的數(shù)據(jù)長度。3.3 通訊類 (CCom)實現(xiàn)串口,網(wǎng)卡等的通訊,開發(fā)包向?qū)鶕?jù)您的設(shè)置,自動地產(chǎn)生串口通訊類 (CSerialCom) 或者網(wǎng)絡(luò)通訊類 (CNetCom), 您也可以根據(jù)需要添加USB通訊類(CUSBCom)。 如下是串口通訊類(CSerialCom)結(jié)構(gòu): 3.3.1串口通訊類 CSerialCom 屬性:DWOR
60、D m_dwTimeOut;通訊超時變量HANDLE m_hComm;串口句柄bool bUseModem;是否使用MODEM操作:OpenComBOOL OpenCom(const ComDevice& InitData) ;類型Public目的打開串口。返回值成功返回TRUE,否則返回FALSE。參數(shù)pccin ComDevice 結(jié)構(gòu)指針CloseComBOOL CloseCom();類型Public目的關(guān)閉串口返回值成功返回TRUE,否則返回FALSE。參數(shù)NullReOpenComBOOL ReOpenCom();類型Public目的重新打開串口。返回值成功返回TRUE,否則
61、返回FALSE。參數(shù)NullPhysicalSendBOOL PhysicalSend(BYTE*pbBuf, DWORD dwWriteLen);類型Public目的向串口發(fā)送一數(shù)據(jù)楨。返回值成功返回TRUE,否則返回FALSE。參數(shù)pbBufin 發(fā)送數(shù)據(jù)緩沖區(qū)指針dwWriteLenin 發(fā)送數(shù)據(jù)長度PhysicalReceiveBOOL PhysicalReceive(BYTE*pbBuf,int iStart, int& iBytesRead);類型Public目的從串口接收數(shù)據(jù)。返回值成功返回TRUE,否則返回FALSE。 參數(shù)pbBufin 接收緩沖區(qū)指針iBy
62、tesReadin 接收到的數(shù)據(jù)長度3.4 調(diào)試信息類 (CDebug)該類實現(xiàn)各種調(diào)試信息在組態(tài)王信息窗口中的輸出,比如錯誤信息,接口信息,數(shù)據(jù)信息等。目前提供了如下信息輸出標(biāo)志:/IMP_MSG / 輸出接口函數(shù)/FUN_MSG / 輸出功能函數(shù)/DATA_MSG / 輸出發(fā)送接收數(shù)據(jù)/ERR_MSG / 輸出錯誤信息/USER_MSG / 輸出用戶定義信息/ALL_MSG / 輸出所有信息當(dāng)用戶在設(shè)備地址處,
63、輸入如上信息,將會在組態(tài)王信息窗口中輸出相應(yīng)的信息。例如,輸入 1 /ALL_MSG 在組態(tài)王信息窗口中顯示:信息格式:時間 精確時鐘計數(shù) 信息 屬性:static bool bShowIMPMsg; 輸出接口信息標(biāo)志static bool bShowE
64、RRMsg;輸出錯誤信息標(biāo)志static bool bShowFUNMsg; 輸出功能函數(shù)標(biāo)志static bool bShowDATAMsg; 輸出發(fā)送接收數(shù)據(jù)標(biāo)志static bool bShowUSERMsg;輸出自定義信息標(biāo)志static bool bShowALLMsg;輸出所有信息標(biāo)志Operations:ShowImpMessagevoid CDebug:ShowImpMessage(TCHAR* szMessage)類型Public目的輸出接口信息標(biāo)志。返回值Null參數(shù)szMessage in
65、 顯示信息ShowErroMessagevoid CDebug:ShowErroMessage(TCHAR* szMessage)類型Public目的輸出錯誤信息。返回值Null參數(shù)szMessage in 顯示信息ShowFunMessagevoid CDebug:ShowFunMessage(TCHAR* szMessage)類型Public目的輸出功能函數(shù)信息。返回值Null參數(shù)szMessage in 顯示信息ShowDataMessagevoid CDebug:ShowDataMessage(TCHAR* szM
66、essage)類型Public目的輸出發(fā)送接收數(shù)據(jù)信息。返回值Null參數(shù)szMessage in 顯示信息ShowUserMessagevoid CDebug:ShowUserMessage(TCHAR* szMessage)類型Public目的輸出自定義信息。返回值Null參數(shù)szMessage in 顯示信息3.5 幫助函數(shù)類 (CHelper)提供了一系列您在開發(fā)驅(qū)動過程中可能會用到的功能函數(shù)。 操作:GetWordWORD CHelper:GetWord(BYTE* buf)類型Public目的從緩沖區(qū)中得到整數(shù).返回值轉(zhuǎn)換后
67、的整數(shù).參數(shù)buf in 數(shù)據(jù)緩沖區(qū)的指針GetLonglong CHelper:GetLong(BYTE* buf)類型Public 目的從緩沖區(qū)中得到長整數(shù)。返回值轉(zhuǎn)換后的長整數(shù) 參數(shù)buf in 數(shù)據(jù)緩沖區(qū)的指針WordToBcdWORD CHelper:WordToBcd(WORD value)類型Public目的把整數(shù)轉(zhuǎn)換BCD碼。返回值轉(zhuǎn)換后的BCD碼參數(shù)value in 要轉(zhuǎn)換的整數(shù).LongToBcdlong CHelper:LongToBcd(long value)類型Public目的把長整數(shù)轉(zhuǎn)
68、換BCD碼。返回值轉(zhuǎn)換后的BCD碼參數(shù)value in 要轉(zhuǎn)換的長整數(shù)BcdToWordWORD CHelper:BcdToWord(WORD value)類型Public目的把BCD碼轉(zhuǎn)換整數(shù)。返回值轉(zhuǎn)換后的整數(shù)參數(shù)value in 要轉(zhuǎn)換的BCD碼BcdToLonglong CHelper:BcdToLong(long value)類型Public目的把BCD碼轉(zhuǎn)換長整數(shù)。返回值轉(zhuǎn)換后的長整數(shù)參數(shù)value in 要轉(zhuǎn)換的BCD碼SwapWordWORD CHelper:SwapWord(WORD value)類型Public目的
69、轉(zhuǎn)換整數(shù)的高低位字節(jié)。返回值轉(zhuǎn)換后的長整數(shù)參數(shù)value in 要轉(zhuǎn)換的BCD碼 SwapLonglong CHelper:SwapLong(WORD *value)類型Public目的轉(zhuǎn)換整數(shù)的高低位字節(jié)。返回值轉(zhuǎn)換后的長整數(shù)參數(shù)value in 要轉(zhuǎn)換的BCD碼ByteBufToFloatfloat CHelper:ByteBufToFloat(BYTE *buf,int mode)類型Public目的把4個字節(jié)的數(shù)據(jù)按照mode 轉(zhuǎn)換為浮點數(shù)FLOAT。返回值轉(zhuǎn)換后的浮點數(shù)參數(shù)value in 數(shù)據(jù)緩沖區(qū)的指針mode in 數(shù)據(jù)轉(zhuǎn)換的模式 0 -32101 -23012 -01233 -1032FloatToByteBufvoid CHelper:FloatToByteBuf(BYTE *buf,float data,int mode)類型Public目的把浮點數(shù)FLOAT按照mode 轉(zhuǎn)換為4個字節(jié)的數(shù)據(jù)。返回值NA 參數(shù)buf out 數(shù)據(jù)緩沖區(qū)的指針.d
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030全球蒸汽甲烷重整藍氫行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國寵物蔓越莓補充劑行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球可調(diào)節(jié)軌道燈行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國核電用金屬管行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球可見光波段高光譜成像(HSI)設(shè)備行業(yè)調(diào)研及趨勢分析報告
- 2025-2030全球玻璃煙斗行業(yè)調(diào)研及趨勢分析報告
- 2025年全球及中國魚雷泵行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025-2030全球I型陽極氧化服務(wù)行業(yè)調(diào)研及趨勢分析報告
- 2025農(nóng)村買房子合同范本
- 工程汽車租賃合同范本
- 特教教師的教育科研
- ASME B16.5-16.47法蘭尺寸對照表
- 對外漢語詞匯教學(xué)(第二版)PPT完整全套教學(xué)課件
- 產(chǎn)品報價單(5篇)
- 康復(fù)護理練習(xí)題庫(附答案)
- 不銹鋼欄桿施工工藝
- 陜西演藝集團有限公司招聘筆試題庫2023
- 小型餐飲店退股協(xié)議書
- 第九講 全面依法治國PPT習(xí)概論2023優(yōu)化版教學(xué)課件
- 兩淮礦區(qū)地面定向多分支水平井鉆進作業(yè)技術(shù)規(guī)程
- vc約起來史上最全180個知名投資人聯(lián)系方式
評論
0/150
提交評論