【正文】
. . . .組態(tài)王驅(qū)動開發(fā)包用戶手冊北京亞控科技發(fā)展有限公司1. 版權(quán)本開發(fā)包版權(quán)屬于北京亞控科技發(fā)展有限公司,任何組織、團體、個人,未經(jīng)亞控公司允許,不得擅自拷貝,使用,對于購買本開發(fā)包的組織、團體、個人,只能內(nèi)部使用,不得擅自泄漏給第三方。2. 概述本開發(fā)包采用微軟標(biāo)準(zhǔn)的COM組件技術(shù),采用該技術(shù),在創(chuàng)建接口時,可以創(chuàng)建多個互相獨立對象,每個對象都可以擁有自己的變量。最后的結(jié)果是一個DLL文件。接口中的各函數(shù)。如果這兩個應(yīng)用程序都不啟動,函數(shù)中的代碼將永遠(yuǎn)沒有機會執(zhí)行。組態(tài)王的驅(qū)動程序是組態(tài)王和硬件設(shè)備連接的橋梁,本開發(fā)包用于開發(fā)組態(tài)王的驅(qū)動程序。只要擁有硬件的通訊協(xié)議,即可以使用本開發(fā)包開發(fā)組態(tài)王的驅(qū)動程序。本開發(fā)包只能使用VC++開發(fā)。3. a) 通用版和嵌入版統(tǒng)一到一套代碼中,通用版和嵌入版實現(xiàn)同步更新。b) 生成設(shè)備類,為多設(shè)備型號驅(qū)動提供解決方法。c) 詳盡、穩(wěn)健的基類代碼。d) 完善的功能與向?qū)А) 規(guī)范各類幫助函數(shù)。f) 規(guī)范編碼格式、統(tǒng)一使用英文版。g) 修改部分功能的實現(xiàn)方法。4. 開發(fā)包使用我們提供一個開發(fā)向?qū)Чぞ摺啊?,使用這個工具,能夠自動地生成驅(qū)動代碼框架。運行工具,如下圖:請在下頁輸入您的目標(biāo)文件夾點擊“安裝”,開發(fā)包即安裝完成。使用開發(fā)包向?qū)?chuàng)建驅(qū)動的過程:(1) 啟動Visual 2003。(2) 新建一個工程,“項目類型”選擇“Visual C++項目”,“模板”選擇 “KingView Wizard” ,在下面的編輯框中輸入工程的名字以及存儲路徑,點擊“確定”。(3) 這個創(chuàng)建向?qū)Х?頁,第一頁是“概述”,顯示的是默認(rèn)的設(shè)置信息,如果您不需要改變這些,直接點擊“確定”即可成功的創(chuàng)建驅(qū)動框架。(4)第二頁是“驅(qū)動類型和編譯選項”,包含如下部分:驅(qū)動類型:o 串口驅(qū)動(適用于查詢式設(shè)備)這個類型,是我們一般常用的,適合于普通的上位查詢,設(shè)備應(yīng)答的通訊類型。 o 串口驅(qū)動(適用于實時上發(fā)數(shù)據(jù)的設(shè)備,非重疊IO)這種方式,適用于下位設(shè)備實時上發(fā)數(shù)據(jù)的情況,驅(qū)動中需要創(chuàng)建一個線程來監(jiān)視串口事件的通訊類型,采用非重疊IO方式。 o 串口驅(qū)動(適用于實時上發(fā)數(shù)據(jù)的設(shè)備,重疊IO,WinCE不支持)這種方式,同上一種,也是適用于下位設(shè)備實時上發(fā)數(shù)據(jù)的情況,驅(qū)動中需要創(chuàng)建一個線程來監(jiān)視串口的通訊類型。與前一種不同的是:采用了重疊IO方式。我們不推薦使用這種方式,因為WINCE系統(tǒng)不支持這種方式,使用這種方式開發(fā)的驅(qū)動,將不能在WINCE系統(tǒng)的嵌入式設(shè)備中運行。 o 以太網(wǎng)驅(qū)動(TCP服務(wù)器端)這是針對于TCP方式通訊的驅(qū)動,適用于設(shè)備為客戶端,組態(tài)王為Server,組態(tài)王查詢,設(shè)備應(yīng)答的通訊類型。如果遇到設(shè)備主動實時上發(fā)數(shù)據(jù)的情況,驅(qū)動中提供了相應(yīng)的函數(shù),可以直接調(diào)用函數(shù),啟動線程來監(jiān)聽網(wǎng)絡(luò)事件。 o 以太網(wǎng)驅(qū)動(TCP客戶端) 這是TCP方式通訊客戶端的驅(qū)動,適用于組態(tài)王查詢、設(shè)備應(yīng)答的通訊類型。這種方式需要驅(qū)動主動去連接設(shè)備。如果遇到設(shè)備主動實時上發(fā)數(shù)據(jù)的情況,驅(qū)動中提供了相應(yīng)的函數(shù),可以直接調(diào)用函數(shù),啟動線程來監(jiān)聽網(wǎng)絡(luò)事件。o 以太網(wǎng)驅(qū)動(UDP服務(wù)器端) 目前還沒有實現(xiàn),參考TCP方式,代碼中需要改動的地方有標(biāo)注。o 以太網(wǎng)驅(qū)動(UDP客戶端) 目前還沒有實現(xiàn),參考TCP方式,代碼中需要改動的地方有標(biāo)注。設(shè)備名稱: 默認(rèn)的設(shè)備名稱是“Name1”,可以自由填寫,但須注意應(yīng)該與設(shè)備列表中的設(shè)備名稱保持一致。嘗試連接類型:當(dāng)組態(tài)王與設(shè)備通訊失敗了,組態(tài)王會周期性的嘗試與設(shè)備通訊,這個過程,我們稱之為“嘗試連接”。嘗試連接,目前準(zhǔn)備了如下幾種類型:o 永遠(yuǎn)為True,常用于板卡驅(qū)動。 o 程序員自由定義,常用于網(wǎng)絡(luò)通訊或?qū)崟r上發(fā)數(shù)據(jù)的設(shè)備。 o 使用“PACKET”進行通訊,適用于普通的驅(qū)動。 (5)第三頁是“驅(qū)動基本信息”,包含如下條目:驅(qū)動基本信息o 驅(qū)動名稱 o 版本 o 描述 o 程序員 o 項目經(jīng)理 這些信息將被自動保存到歷史文件()中,同時也是保存在工程的ReadMe文件中,可以隨工程瀏覽。其他支持:o USB 通訊 o ADO 數(shù)據(jù)庫操作 (6)點擊“確定”后,將完成驅(qū)動工程的創(chuàng)建工作。5. 工程轉(zhuǎn)換工具我們要求通用版和嵌入版使用同一套代碼,做到通用版和嵌入版驅(qū)動實現(xiàn)同步更新,這就需要一個工具來將通用版工程文件轉(zhuǎn)換為嵌入版工程文件。同時,考慮到有的開發(fā)者習(xí)慣使用Visual Studio 98進行開發(fā)編譯,我們也要有一個工具來將Visual Studio 2003的工程文件轉(zhuǎn)換成Visual Studio 98的工程文件。我們提供一個轉(zhuǎn)換工具kvdriver(包含3個文件,, ,),使用這個工具,可以根據(jù)Visual Studio 2003的工程文件,創(chuàng)建成Visual Studio 98和EVC的工程文件,開發(fā)者可以在不同的開發(fā)環(huán)境間自由選擇。驅(qū)動開發(fā)包安裝完成后,這個工具存放在目錄KingViewDriver下。在使用的時候,可以把這個工具放在系統(tǒng)文件夾C:\WINDOWS\system32中,這樣可以在命令行中輸入“kvdriver”,然后把需要轉(zhuǎn)換的Visual Studio 2003工程文件拖動過來運行即可,如下所示:6. 驅(qū)動信息結(jié)構(gòu)所有的結(jié)構(gòu)都定義在文件“”中。_DevAddr該結(jié)構(gòu)定義了設(shè)備地址格式.類型def struct _DevAddr { UINT nDevAddr。 TCHAR sDevAddr[MAX_DEV_LEN]。 }DEVADDR, * PDEVADDR。成員:sDevAddr: 用戶在組態(tài)王中輸入的原地址格式字符串。nDevAddr:實際轉(zhuǎn)換后的設(shè)備地址數(shù)字.ComDevice這是串口設(shè)置信息的結(jié)構(gòu)體.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:串口標(biāo)志,目前沒有用到.DeviceKind:設(shè)備類型,39。139。代表串口設(shè)備DeviceName:邏輯名稱 =={COM1,COM2...}BaudRate:波特率,范圍是從 110到256000。DataBits:數(shù)據(jù)位StopBits:停止位.值描述ONESTOPBIT1 停止位ONE5STOPBITS 停止位TWOSTOPBITS2 停止位Parity :校驗. 值描述EVENPARITY偶校驗MARKPARITY標(biāo)志校驗NOPARITY無校驗ODDPARITY奇校驗SPACEPARITY空格校驗TimeOut:超時,單位是毫秒FailTimes:失敗次數(shù)RetryInterval:嘗試間隔isRs232:通訊模式,39。139。代表RS232, 39。239。代表RS422, 39。339。代表RS485.PLCVAR該結(jié)構(gòu)定義了用戶變量的屬性.類型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。