色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

英創信息技術ARM9工控板在遠程監控領域的應用

英創信息技術 ? 來源:英創信息技術 ? 作者:英創信息技術 ? 2019-11-12 10:04 ? 次閱讀

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

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


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

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


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


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

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

輸入完畢后,點擊“OK”完成,這時可以看見新增加的這個方法函數出現在工程中了。雙擊接口名“IEM9000_ISA_COM”,就會看到該方法函數在文件中的定義:
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的方法函數名“COM_GetPortState(long Port,Long *Val)”,這時就打開具體實現的源文件EM9000_ISA_COM.CPP文件。在文件中加入:#include 'EM9000_ISA_API.h',并且在FileView的頭文件中加入該文件。
這時將COM_GetPortState方法函數的實現完成,即調用EM9000_ISA_API.h中相應的函數完成功能。
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;
}
到這里,就完成了對靜態庫中的一個函數轉成COM組件的方法函數的基本操作,依照上述方法,將其它的函數需要加入到COM組件中,只需重復第5、6步的操作就行了。注意,最后還需要加入出錯處理的方法函數:
方法函數名:_com_issue_errorex
參數: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組件方法函數和EM9000_ISA_API靜態庫函數的對應關系如下:

COM組件方法函數名

庫態庫函數名

功能描述

COM_InitEM9000ISA( ) InitEM9000ISA( ) 初始化EM9000的ISA總線
COM_GetPortState( int Port ) GetPortState( int Port ) 查詢Port設置狀態
COM_Swap2ISA( int Port ) Swap2ISA( int Port ) 把Port設置為ISA總線
COM_Swap2DIO( int Port ) Swap2DIO( int Port ) 把Port設置為DIO功能
COM_SetPortDir( int Port, int Mode ) SetPortDir( int Port, int Mode ) 把Port對應管腳設置為DIO狀態
COM_EM9000_INB( int Port ) EM9000_INB( int Port ) 把Port對應管腳設置為DIO狀態
COM_EM9000_OUTB( int Port, UCHAR Value ) EM9000_OUTB( int Port, UCHAR Value ) 把Value輸出到Port對應管腳
COM_EM9000_READ( int nSeg, UINT nOffset ) EM9000_READ( int nSeg, UINT nOffset ) 從ISA擴展總線某地址讀取一個字節的數據
COM_EM9000_WRITE( int nSeg, UINT nOffset, UCHAR Value ) EM9000_WRITE( int nSeg, UINT nOffset, UCHAR Value ) 向ISA擴展總線某地址寫入一個字節的數據
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 ) 使能并輸出脈寬調制信號
COM_EM9000_PWMSTOP( int ChIdx ) EM9000_PWMSTOP( int ChIdx ) 停止輸出脈寬調制信號
COM_EM9000_StartWatchDog( ) EM9000_StartWatchDog( ) 啟動系統WATCH DOG TIMER
COM_EM9000_KicktheDog( ) EM9000_KicktheDog( ) 重載系統WATCH DOG TIMER
COM_EM9000_ResetBy( ) EM9000_ResetBy( ) 返回上次復位產生的原因
COM_EM9000_DelayInUs(int MicroSeconds ) EM9000_DelayInUs(int MicroSeconds ) 微秒延時

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

#define P4 4
int iState ;
iState= m_pSimple-> COM_GetPortState (P4); // 調用成員函數讀出GPIO(P4口)的狀態
4、當使用后,應當釋放COM組件
CoUninitialize(); // 釋放COM組件


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式主板
    +關注

    關注

    7

    文章

    6085

    瀏覽量

    35434
收藏 人收藏

    評論

    相關推薦

    ARM9工控主板應用程序自動加載實現

    ARM9工控主板有兩種工作模式:調試模式和運行模式。調試模式是指開機以后系統處于調試狀態,此時用戶可以通過eVC的遠程調試工具或微軟的A
    的頭像 發表于 10-08 17:13 ?1798次閱讀

    信息技術VS2005調試ARM9核心簡介

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

    信息技術ARM9工控主板WinCE應用程序遠程控制應用

    公司推出的ARM9嵌入式工控主板產品系列,均預裝了正版的WinCE5.0操作系統。微軟的WINCE實時多任務操作系統是嵌入式領域的主流操
    的頭像 發表于 11-04 09:28 ?1766次閱讀

    信息技術ARM9工控主板內嵌AD概述

    公司推出的ARM9 嵌入式工控主板產品系列,均預裝了正版WinCE5.0 操作系統。
    的頭像 發表于 11-04 09:43 ?2658次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b><b class='flag-5'>ARM9</b><b class='flag-5'>工控</b>主板內嵌AD概述

    信息技術ARM9工控串口設備的COM組件應用

    公司的ARM9工控主板產品均預裝了Windows CE5.0操作系統,支持包括EVC、C#、VB、LabView等多種開發工具。
    的頭像 發表于 11-05 10:07 ?1775次閱讀

    信息技術ARM9主板上運行案例解析

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

    信息技術CAN接口COM組件C#語言領域應用

     ARM9工控主板的一個很大的特色就是提供了標準的CAN總線通訊接口,客戶可以方便地工業現場、汽車、船舶等等
    的頭像 發表于 11-12 10:34 ?2462次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b>CAN接口COM組件<b class='flag-5'>在</b>C#語言<b class='flag-5'>領域</b>應用

    信息技術ARM9工控主板遠程操作自動更新介紹

    庫EM_FTPClient.LIB,客戶利用這個庫可以方便的編寫出適合自己應用的FTP客戶端應用程序,ARM9工控主板支持斷點續傳的FTP文件傳送》一文中對各庫函數做了詳細介紹。本文介紹的更新方案就是利用
    的頭像 發表于 11-13 09:26 ?1386次閱讀

    信息技術ARM9工控遠程抓拍圖像應用介紹

    ARM9工控主板功能齊全、體積小巧、性能穩定、超低價格的嵌入式主板產品。主板硬件完全按工業級標準設計,CPU采用了32位工業級ARM9
    的頭像 發表于 11-13 09:41 ?2018次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b><b class='flag-5'>ARM9</b><b class='flag-5'>工控</b><b class='flag-5'>板</b><b class='flag-5'>遠程</b>抓拍圖像應用介紹

    信息技術工控主板的復位管理介紹

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

    信息技術工控主板內核更新與版本管理介紹

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

    信息技術EM9000工控主板的版本信息管理概述

    EM9000是公司極具特色的一款ARM9工控主板。經過長時間的完善,現系統已完全穩定。
    的頭像 發表于 11-17 11:23 ?1748次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創</b><b class='flag-5'>信息技術</b>EM9000<b class='flag-5'>工控</b>主板的版本<b class='flag-5'>信息</b>管理概述

    信息技術ARM9工控主板擴展矩陣鍵盤的方法

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

    信息技術ARM9主板進行連接調試的兩種方法

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

    信息技術ARM9工控主板的SMS短信息應用介紹

    的應用越來越廣泛,其中主要以GPRS數據通訊及SMS短信息方式為主。GPRS數據通訊是以TCP/IP方式進行通訊,GPRS模塊發送SMS短信,是通過串口發送AT指令來實現。 公司基于ARM
    的頭像 發表于 01-14 11:45 ?1361次閱讀
    主站蜘蛛池模板: 大桥未久电影在线观看| 黄色三级视频网站| 美女脱了内裤张开腿让男人桶到爽 | 解开白丝老师的短裙猛烈进入| 亚洲免费在线观看| 久青草国产观看在线视频| jizzjizz丝袜| 亚洲AV噜噜88| 明星三级电影| 国产午夜在线观看视频播放| 月夜直播视频免费观看| 日本aaaa| 九九热免费在线观看| WWW亚洲精品久久久无码| 亚洲国产综合久久精品| 免费被靠视频动漫| 国产日韩精品SUV| 99久久无码一区人妻A片蜜| 甜性涩爱bt下载| 美女打开双腿扒开屁股男生| 国产高清视频a在线大全| 在线亚洲免费| 小柔的性放荡羞辱日记| 欧美jizz19性欧美| 韩国伦理电影在线神马网| GAY空少被体育生开菊| 亚洲VA欧美VA天堂V国产综合| 捏奶动态图吃奶动态图q| 国产香蕉视频在线播放| qvod 电影| 中俄两军在日本海等上空战略巡航| 神马影院午夜理论二| 蜜芽手机在线观看| 黄瓜视频苹果直接安装| 国产AV国片精品无套内谢无码 | 亚洲AV永久无码精品澳门| 暖暖视频在线观看高清...| 荷兰少归BVBV| 国产成人免费高清视频| 99久久久免费精品免费| 一亲二脱三插|