RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

英創(chuàng)信息技術(shù)ARM9工控板在遠(yuǎn)程監(jiān)控領(lǐng)域的應(yīng)用

英創(chuàng)信息技術(shù) ? 來源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2019-11-12 10:04 ? 次閱讀

英創(chuàng)ARM9工控主板的數(shù)據(jù)采集功能通常采用板上的GPIO實現(xiàn)數(shù)字輸入輸出、通過精簡ISA總線擴展相應(yīng)的AD或DA實現(xiàn)模擬數(shù)據(jù)的輸入輸出。在英創(chuàng)ARM9工控主板提供的基本開發(fā)資料中對GPIO和精簡ISA總線的驅(qū)動均以C的靜態(tài)庫的形式提供,對部分使用C#、LabView等其他開發(fā)工具的客戶來說,不能直接使用C的API函數(shù)。針對這一部分客戶的應(yīng)用需求,我們把相關(guān)C函數(shù)庫封裝成標(biāo)準(zhǔn)COM組件,使客戶能方便使用主板的數(shù)據(jù)采集功能。本文將詳細(xì)介紹數(shù)據(jù)采集COM組件的相關(guān)技術(shù)要點,供廣大客戶使用時參考。
COM(Component Object Model),即組件對象模型,是微軟公司開發(fā)的一種新的軟件開發(fā)技術(shù),提出了組件之間進(jìn)行交互的規(guī)范,也提供了實現(xiàn)交互的環(huán)境,因為組件對象之間交互的規(guī)范不依賴于任何特定的語言,所以COM也可以是不同語言協(xié)作開發(fā)的一種標(biāo)準(zhǔn),如VB、C#、LabView可以使用同一個COM組件來進(jìn)行軟件開發(fā)。COM組件的整體結(jié)構(gòu)大概分為三個層次:組件、接口、方法函數(shù),它們的關(guān)系如下圖所示:

COM組件與我們常用的C++類的關(guān)系,可以簡單的理解為:
COM組件名:即C++庫文件名稱
COM組件接口:即C++庫中的類
COM組件實現(xiàn)方法函數(shù):即C++中的類的成員函數(shù)
下面以EM9000的EM9000_ISA_API.LIB靜態(tài)庫為例,介紹在EVC開發(fā)環(huán)境,如何在EM9000_ISA_API.LIB靜態(tài)庫的基礎(chǔ)上構(gòu)建相應(yīng)的COM組件,該方法也可同樣應(yīng)用于英創(chuàng)公司的其他ARM9工控主板產(chǎn)品。
1、新建一個工程,在新建工程中選擇WCE ATL COM AppWizard,并給工程命名為“EM9000_ISA_API_COM”,工程會自動生成一個文件來。在工程編譯后,將生成“EM9000_ISA_API_COM.DLL”庫文件。這個文件就是要用的COM組件的目標(biāo)文件。


2、設(shè)置好以后,點擊“OK”進(jìn)入工程的類型選項,在這里,選擇動態(tài)鏈接庫并將對MFC的支持選擇上。即完成工程的建立。

3、將英創(chuàng)提供的EM9000_ISA_API.h文件復(fù)制到當(dāng)前這個工程目錄下面,并在工程的“Settings”下面的LINK中加入“EM9000_ISA_API.lib”。
4、為COM組件添加接口:這個接口名就是在調(diào)用COM組件時的入口名字,在工程中命為EM9000_ISA_COM,添加接口的方法是:Insert -> New ALT Object…,在彈出來的對話框中,直接點擊下一步,這時會再彈出一個對話框,這時,在對話框的Name表單的左上角框中輸出接口名EM9000_ISA_COM,這時會生成相應(yīng)的接口的名字,左邊是C++調(diào)用的頭文件及庫,右邊是COM組件的接口文件名。系統(tǒng)會自動地在接口名Interface項前加上一個大寫字符“I”。


在工程對話框的attributes選項中,將Threading Model中選擇“Free”。確定即可。


5、為該COM組件添加方法函數(shù):將EM9000_ISA_API.H中的函數(shù)添加到COM組件中去。要注意一點,由于在制作COM組件過程中,COM組件實現(xiàn)的方法函數(shù)會調(diào)用EM9000_ISA_API.H中的函數(shù)且方法函數(shù)名和要調(diào)用的函數(shù)不能同名,所以在COM組件的方法函數(shù)名前加前綴“COM_”以便區(qū)分。在工程的workspace的ClassView中,單擊COM組件的接口名“IEM9000_ISA_COM”并單擊右鍵選擇“Add Method…”,彈出添加方法函數(shù)的對話框。

如將EM9000_ISA_API.H中的GetPortState( int Port )函數(shù)添加進(jìn)去。這里方法函數(shù)為就變?yōu)椤癈OM_GetPortState”,參數(shù)則有兩個,一個是輸入?yún)?shù),用[in]關(guān)鍵字說明,一個是函數(shù)返回值,用[out,retval]關(guān)鍵字說明,除了返回值的參數(shù)名外,其它的輸入輸出參數(shù)最好和函數(shù)的參數(shù)一樣。參數(shù)類型均為”long”,可以參考:http://www.vckbase.com/document/viewdoc/?id=1488。

輸入完畢后,點擊“OK”完成,這時可以看見新增加的這個方法函數(shù)出現(xiàn)在工程中了。雙擊接口名“IEM9000_ISA_COM”,就會看到該方法函數(shù)在文件中的定義:
interface IEM9000_ISA_COM : IDispatch
{
[id(1), helpstring('method COM_GetPortState')] HRESULT COM_GetPortState([in] long Port , [out,retval] long *pVal);
};
6、雙擊CEM9000_COM下的IEM9000_ISA_COM的方法函數(shù)名“COM_GetPortState(long Port,Long *Val)”,這時就打開具體實現(xiàn)的源文件EM9000_ISA_COM.CPP文件。在文件中加入:#include 'EM9000_ISA_API.h',并且在FileView的頭文件中加入該文件。
這時將COM_GetPortState方法函數(shù)的實現(xiàn)完成,即調(diào)用EM9000_ISA_API.h中相應(yīng)的函數(shù)完成功能。
STDMETHODIMP CEM9000_ISA_COM::COM_GetPortState(long Port, long *pVal)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
// TODO: Add your implementation code here
*pVal = GetPortState( Port );
return S_OK;
}
到這里,就完成了對靜態(tài)庫中的一個函數(shù)轉(zhuǎn)成COM組件的方法函數(shù)的基本操作,依照上述方法,將其它的函數(shù)需要加入到COM組件中,只需重復(fù)第5、6步的操作就行了。注意,最后還需要加入出錯處理的方法函數(shù):
方法函數(shù)名:_com_issue_errorex
參數(shù):HRESULT _hr1 , IUnknown *pthis1 , const GUID refiid1

通過編譯生成COM組件EM9000_ISA_API_COM.dll。
我們所提供的COM組件“EM9000_ISA_API_COM.dll”的文件說明:
COM組件文件名:EM9000_ISA_API_COM.dll
COM組件接口名:EM9000_ISA_COM

COM組件方法函數(shù)和EM9000_ISA_API靜態(tài)庫函數(shù)的對應(yīng)關(guān)系如下:

COM組件方法函數(shù)名

庫態(tài)庫函數(shù)名

功能描述

COM_InitEM9000ISA( ) InitEM9000ISA( ) 初始化EM9000的ISA總線
COM_GetPortState( int Port ) GetPortState( int Port ) 查詢Port設(shè)置狀態(tài)
COM_Swap2ISA( int Port ) Swap2ISA( int Port ) 把Port設(shè)置為ISA總線
COM_Swap2DIO( int Port ) Swap2DIO( int Port ) 把Port設(shè)置為DIO功能
COM_SetPortDir( int Port, int Mode ) SetPortDir( int Port, int Mode ) 把Port對應(yīng)管腳設(shè)置為DIO狀態(tài)
COM_EM9000_INB( int Port ) EM9000_INB( int Port ) 把Port對應(yīng)管腳設(shè)置為DIO狀態(tài)
COM_EM9000_OUTB( int Port, UCHAR Value ) EM9000_OUTB( int Port, UCHAR Value ) 把Value輸出到Port對應(yīng)管腳
COM_EM9000_READ( int nSeg, UINT nOffset ) EM9000_READ( int nSeg, UINT nOffset ) 從ISA擴展總線某地址讀取一個字節(jié)的數(shù)據(jù)
COM_EM9000_WRITE( int nSeg, UINT nOffset, UCHAR Value ) EM9000_WRITE( int nSeg, UINT nOffset, UCHAR Value ) 向ISA擴展總線某地址寫入一個字節(jié)的數(shù)據(jù)
COM_EM9000_ResetISA( int milliseconds ) EM9000_ResetISA( int milliseconds ) 使RSTOUT#輸出低脈沖milliseconds毫秒
COM_EM9000_PWMOUT( int ChIdx, float* pFreq, float* pDuty ) EM9000_PWMOUT( int ChIdx, float* pFreq, float* pDuty ) 使能并輸出脈寬調(diào)制信號
COM_EM9000_PWMSTOP( int ChIdx ) EM9000_PWMSTOP( int ChIdx ) 停止輸出脈寬調(diào)制信號
COM_EM9000_StartWatchDog( ) EM9000_StartWatchDog( ) 啟動系統(tǒng)WATCH DOG TIMER
COM_EM9000_KicktheDog( ) EM9000_KicktheDog( ) 重載系統(tǒng)WATCH DOG TIMER
COM_EM9000_ResetBy( ) EM9000_ResetBy( ) 返回上次復(fù)位產(chǎn)生的原因
COM_EM9000_DelayInUs(int MicroSeconds ) EM9000_DelayInUs(int MicroSeconds ) 微秒延時

下面以EVC開發(fā)環(huán)境為基于MFC編程,調(diào)用EM9000_ISA_API_COM.dll實現(xiàn)GPIO操作為例,對如何使用COM組件“EM9000_ISA_API_COM.dll”進(jìn)行說明,以更指導(dǎo)客戶方便地使用COM組件來完成自有產(chǎn)品的開發(fā)。
在eVC中調(diào)用COM組件,需按如下基本步驟來完成:
1、注冊COM組件
運行英創(chuàng)公司提供的regsvr32程序進(jìn)行COM組件的注冊
2、初始化組件,并創(chuàng)建一個實體對像
(1)在測試文件的頭文件中,先定義所需要的對像及變量:
首先,先將COM組件EM9000_ISA_API_COM.dll文件放在當(dāng)前的工程目錄下,同時要在工程的StdAfx.h文件中,添加導(dǎo)入COM組件文件的語句:
#import “EM9000_ISA_API_COM.dll” no_namespace
// 如果COM組件文件沒在當(dāng)前應(yīng)用的工程目錄下面,則需要寫出COM組件文件所在的路徑
然后在測試工程文件頭COM_TESTDlg.h中,在CCOM_TESTDlg類中進(jìn)行定義:
private:
CLSID clsid; // 用以緩存所查詢到的COM組件的標(biāo)識
IEM9000_ISA_COM *m_pSimple; // 利用COM組件接口定義一個指針
(2)完成COM組件的初始化:
在測試工程文件COM_TESTDlg.cpp中,在BOOL CCOM_TESTDlg::OnInitDialog()過程中完成初始化部份
HRESULT hr;
CoInitializeEx(NULL,COINIT_MULTITHREADED) ;//初始化COM組件以便創(chuàng)建線程
Hr = CLSIDFromProgID( OLESTR ( 'EM9000_ISA_API_COM. EM9000_ISA_COM ' ) , &clsid );
// 查找組件是否存在,并獲取組件的標(biāo)識,這里的參數(shù)為:COM組件名字.接口名
C, oCreateInstance ( clsid , NULL , CLSCTX_INPROC_SERVER , _uuidof ( I EM9000_ISA_COM ) , ( void** ) &m_pSimple );
// 利用查找組件時所獲得的標(biāo)識創(chuàng)建實體對像,并交給指針。這里的第四個參數(shù)為組件的接口名
3、調(diào)用COM組件中的方法函數(shù)
利用, , 所定義的接口指針*m_pSimple,在事件中調(diào)用相應(yīng)的函數(shù)。如要調(diào)用COM_GetPortState方法函數(shù)來獲取GPIO(P4口)的狀態(tài),則可以如下方式來實現(xiàn)調(diào)用:

#define P4 4
int iState ;
iState= m_pSimple-> COM_GetPortState (P4); // 調(diào)用成員函數(shù)讀出GPIO(P4口)的狀態(tài)
4、當(dāng)使用后,應(yīng)當(dāng)釋放COM組件
CoUninitialize(); // 釋放COM組件


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6085

    瀏覽量

    35295
收藏 人收藏

    評論

    相關(guān)推薦

    創(chuàng)ARM9工控主板應(yīng)用程序自動加載實現(xiàn)

    創(chuàng)ARM9工控主板有兩種工作模式:調(diào)試模式和運行模式。調(diào)試模式是指開機以后系統(tǒng)處于調(diào)試狀態(tài),此時用戶可以通過eVC的遠(yuǎn)程調(diào)試工具或微軟的A
    的頭像 發(fā)表于 10-08 17:13 ?1770次閱讀

    創(chuàng)信息技術(shù)VS2005調(diào)試ARM9核心簡介

    創(chuàng)公司自2007年開始陸續(xù)推出一系列以ARM9 CPU為核心的嵌入式主板(如EM9000、EM9260),這些高性能的工控主板不僅具有高端的硬件性能和豐富的硬件接口,而且還采用了Mi
    的頭像 發(fā)表于 10-31 15:03 ?1879次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b>VS2005調(diào)試<b class='flag-5'>ARM9</b>核心<b class='flag-5'>板</b>簡介

    創(chuàng)信息技術(shù)ARM9工控主板WinCE應(yīng)用程序遠(yuǎn)程控制應(yīng)用

    創(chuàng)公司推出的ARM9嵌入式工控主板產(chǎn)品系列,均預(yù)裝了正版的WinCE5.0操作系統(tǒng)。微軟的WINCE實時多任務(wù)操作系統(tǒng)是嵌入式領(lǐng)域的主流操
    的頭像 發(fā)表于 11-04 09:28 ?1748次閱讀

    創(chuàng)信息技術(shù)ARM9工控主板內(nèi)嵌AD概述

    創(chuàng)公司推出的ARM9 嵌入式工控主板產(chǎn)品系列,均預(yù)裝了正版WinCE5.0 操作系統(tǒng)。
    的頭像 發(fā)表于 11-04 09:43 ?2637次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b><b class='flag-5'>ARM9</b><b class='flag-5'>工控</b>主板內(nèi)嵌AD概述

    創(chuàng)信息技術(shù)ARM9工控串口設(shè)備的COM組件應(yīng)用

    創(chuàng)公司的ARM9工控主板產(chǎn)品均預(yù)裝了Windows CE5.0操作系統(tǒng),支持包括EVC、C#、VB、LabView等多種開發(fā)工具。
    的頭像 發(fā)表于 11-05 10:07 ?1754次閱讀

    創(chuàng)信息技術(shù)ARM9主板上運行案例解析

    創(chuàng)今年(2009年)的市場活動中,為了讓客戶更好地完成產(chǎn)品應(yīng)用開發(fā),創(chuàng)向第一次購買
    的頭像 發(fā)表于 11-12 10:20 ?1420次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b><b class='flag-5'>ARM9</b>主板上運行案例解析

    創(chuàng)信息技術(shù)CAN接口COM組件C#語言領(lǐng)域應(yīng)用

     創(chuàng)ARM9工控主板的一個很大的特色就是提供了標(biāo)準(zhǔn)的CAN總線通訊接口,客戶可以方便地工業(yè)現(xiàn)場、汽車、船舶等等
    的頭像 發(fā)表于 11-12 10:34 ?2450次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b>CAN接口COM組件<b class='flag-5'>在</b>C#語言<b class='flag-5'>領(lǐng)域</b>應(yīng)用

    創(chuàng)信息技術(shù)ARM9工控主板遠(yuǎn)程操作自動更新介紹

    庫EM_FTPClient.LIB,客戶利用這個庫可以方便的編寫出適合自己應(yīng)用的FTP客戶端應(yīng)用程序,ARM9工控主板支持?jǐn)帱c續(xù)傳的FTP文件傳送》一文中對各庫函數(shù)做了詳細(xì)介紹。本文介紹的更新方案就是利用
    的頭像 發(fā)表于 11-13 09:26 ?1361次閱讀

    創(chuàng)信息技術(shù)ARM9工控遠(yuǎn)程抓拍圖像應(yīng)用介紹

    創(chuàng)ARM9工控主板功能齊全、體積小巧、性能穩(wěn)定、超低價格的嵌入式主板產(chǎn)品。主板硬件完全按工業(yè)級標(biāo)準(zhǔn)設(shè)計,CPU采用了32位工業(yè)級ARM9
    的頭像 發(fā)表于 11-13 09:41 ?1987次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b><b class='flag-5'>ARM9</b><b class='flag-5'>工控</b><b class='flag-5'>板</b><b class='flag-5'>遠(yuǎn)程</b>抓拍圖像應(yīng)用介紹

    創(chuàng)信息技術(shù)工控主板的復(fù)位管理介紹

     創(chuàng)公司的工控主板是基于ARM9 CPU、預(yù)裝正版WinCE的嵌入式主板產(chǎn)品。作為嵌入式應(yīng)用,系統(tǒng)的可靠啟動是其可靠性的重要組成部分。本文針對嵌入式應(yīng)用的特點、介紹
    的頭像 發(fā)表于 11-14 10:03 ?1667次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b><b class='flag-5'>工控</b>主板的復(fù)位管理介紹

    創(chuàng)信息技術(shù)工控主板內(nèi)核更新與版本管理介紹

    創(chuàng)公司的ARM9工控主板系列產(chǎn)品均預(yù)裝了正版的Window CE操作系統(tǒng),支持客戶采用強大的微軟開發(fā)工具直接開發(fā)應(yīng)用程序。
    的頭像 發(fā)表于 11-15 09:24 ?1308次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b><b class='flag-5'>工控</b>主板內(nèi)核更新與版本管理介紹

    創(chuàng)信息技術(shù)EM9000工控主板的版本信息管理概述

    EM9000是創(chuàng)公司極具特色的一款ARM9工控主板。經(jīng)過長時間的完善,現(xiàn)系統(tǒng)已完全穩(wěn)定。
    的頭像 發(fā)表于 11-17 11:23 ?1730次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b>EM9000<b class='flag-5'>工控</b>主板的版本<b class='flag-5'>信息</b>管理概述

    創(chuàng)信息技術(shù)ARM9工控主板擴展矩陣鍵盤的方法

    創(chuàng)公司ARM9系列工控主板預(yù)裝正版WinCE操作系統(tǒng),板載了豐富的通訊接口,GPIO,存儲器等資源,支持TFT LCD顯示及觸摸,支持標(biāo)準(zhǔn)USB鍵盤,鼠標(biāo)輸入。
    的頭像 發(fā)表于 01-14 11:05 ?1653次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b><b class='flag-5'>ARM9</b><b class='flag-5'>工控</b>主板擴展矩陣鍵盤的方法

    創(chuàng)信息技術(shù)ARM9主板進(jìn)行連接調(diào)試的兩種方法

    我們提供給用戶的《使用VS2005連接和調(diào)試創(chuàng)ARM9嵌入式模塊》一文中,我們分別以EM9000上和在EM9260上為例講述了兩種對基
    的頭像 發(fā)表于 01-14 11:29 ?1449次閱讀

    創(chuàng)信息技術(shù)ARM9工控主板的SMS短信息應(yīng)用介紹

    的應(yīng)用越來越廣泛,其中主要以GPRS數(shù)據(jù)通訊及SMS短信息方式為主。GPRS數(shù)據(jù)通訊是以TCP/IP方式進(jìn)行通訊,GPRS模塊發(fā)送SMS短信,是通過串口發(fā)送AT指令來實現(xiàn)。 創(chuàng)公司基于ARM
    的頭像 發(fā)表于 01-14 11:45 ?1342次閱讀
    RM新时代网站-首页