時間:2009-11-27 15:48:27來源:sunjuan
圖1
在數(shù)據(jù)采集模塊中,基本上由兩部分組成,一部分是和設(shè)備相對應(yīng)的驅(qū)動程序,該程序既是一個COM組件,另有一個控制程序DataComm負(fù)責(zé)調(diào)用驅(qū)動程序以及和其他模塊通信。在上位機和下位機或其他一些板卡進行通信時大致有以下幾種方式:串口,TCP/IP,計算機PCI卡,數(shù)據(jù)采集模塊通過一個統(tǒng)一的接口訪問不同的設(shè)備,設(shè)備驅(qū)動文件只需完成該接口功能即可,這樣在與新設(shè)備通信時DataComm不必修改,只要開發(fā)出與該設(shè)備通信的驅(qū)動組件就能完成上位機與設(shè)備之間的通信,DataComm與驅(qū)動程序之間的關(guān)系如圖2所示:
圖2
4 設(shè)備驅(qū)動的接口設(shè)計與實現(xiàn)
每個COM組件都至少有一個IUnknown接口或繼承IUnknown的子接口,IUnknown接口負(fù)責(zé)查詢該組件的其他接口和維護引用計數(shù),引用計數(shù)與組件對象持久性相關(guān),本文不詳細(xì)闡述。前面說訪問設(shè)備使用統(tǒng)一的接口,那么該接口應(yīng)該具有所有操作設(shè)備通用的功能,如初始化和關(guān)閉設(shè)備,讀寫數(shù)據(jù)等。在C++中使用抽象基類作為接口,其部分定義如下:
class IDeviceAccess : public IUnknown
{
public:
virtual HRESULT __stdcall QueryInterface(REFIID iid, void** ppvObj) = 0;
virtual ULONG __stdcall AddRef() = 0;
virtual ULONG __stdcall Release() = 0;
public:
virtual BOOL __stdcall UnInitialDevice( LPDEVADDR pDevAddr )=0;
virtual BOOL __stdcall InitialDevice( LPDEVINIDATA pInitDat )=0;
virtual BOOL __stdcall ReadData(…… )=0;
virtual BOOL __stdcall WriteData( …… )=0;
…… ……
};
該接口的實現(xiàn)是在COM組件中,因為設(shè)備不同,所以實現(xiàn)也有所不同,但同類設(shè)備也有一些相同之處,比如智能儀表大多都是通過串口進行通信,而對串口的參數(shù)設(shè)置是這類設(shè)備的共同之處,為此我們定義一個類CDevice:public IdeviceAccess,這個類完成初始化等基本的功能,而讀寫數(shù)據(jù)ReadData和WriteData都進行空實現(xiàn),讓所有相關(guān)設(shè)備以CDevice為基類然后重寫ReadData和WriteData即可。世紀(jì)星的驅(qū)動組件是使用MFC開發(fā)的,MFC是通過嵌套類實現(xiàn)COM功能,在世紀(jì)星中我們以繼承CDevice的類作為嵌套類,這個嵌套類完成一些具體功能,它所在的類我們成為外部類,外部類提供一個全局唯一的CLSID,DataComm通過CLSID定位組件,然后使用之前定義的接口完成與設(shè)備的通信,通過圖3描述如下:
圖3
5 小結(jié)
數(shù)據(jù)采集模塊的性能是影響工控軟件的一個重要因素,高效穩(wěn)定的數(shù)據(jù)通信服務(wù)是工控軟件或許更大發(fā)展的基本保證。世紀(jì)星使用COM技術(shù)實現(xiàn)數(shù)據(jù)通信既方便了開發(fā)人員對新設(shè)備驅(qū)動的開發(fā),又便于用戶對驅(qū)動的升級,同時增強了世紀(jì)星本身的可擴展性。標(biāo)簽:
傳動網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:傳動網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為傳動網(wǎng)(connectcrack.com)獨家所有。如需轉(zhuǎn)載請與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個人轉(zhuǎn)載使用時須注明來源“傳動網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。
本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。
產(chǎn)品新聞
更多>2025-12-15
2025-12-12
2025-12-12
2025-12-10
2025-11-20
500kN.m聯(lián)軸器扭矩剛度疲勞試驗系統(tǒng)
2025-11-10