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