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

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

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

英創(chuàng)信息技術(shù)C#使用COM組件接口操作精簡(jiǎn)ISA總線淺談

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

英創(chuàng)ARM9工控主板的數(shù)據(jù)采集功能通常采用板上的GPIO實(shí)現(xiàn)數(shù)字輸入輸出、通過(guò)精簡(jiǎn)ISA總線擴(kuò)展相應(yīng)的外部控制電路(如控制繼電器或AD或DA實(shí)現(xiàn)模擬數(shù)據(jù)的輸入輸出等)。由于英創(chuàng)ARM9嵌入式主板采用WinCE操作系統(tǒng),很多客戶(hù)都選擇了界面友好、開(kāi)發(fā)便利的C#語(yǔ)言(使用Visual Studio 2005.NET集成開(kāi)發(fā)環(huán)境);以往用戶(hù)在使用C#操作控制GPIO以及ISA總線的時(shí)候,是使用英創(chuàng)提供的動(dòng)態(tài)鏈接庫(kù),采用傳統(tǒng)的DllImport方法,首先在程序開(kāi)始的地方來(lái)進(jìn)行函數(shù)申明,然后才能在程序中進(jìn)行調(diào)用;而這個(gè)動(dòng)態(tài)鏈接庫(kù)里面函數(shù)的EntryPoint由于系統(tǒng)的原因,往往是一個(gè)古怪的名字,而且英創(chuàng)每次在進(jìn)行動(dòng)態(tài)鏈接庫(kù)的升級(jí)后,這個(gè)EntryPoint的名字就可能發(fā)生變化,這對(duì)用戶(hù)程序的可維護(hù)性帶來(lái)極大的不便。為了解決這個(gè)問(wèn)題,英創(chuàng)公司現(xiàn)在提供了操作精簡(jiǎn)ISA總線的COM組件接口;用戶(hù)只需要在目標(biāo)平臺(tái)上進(jìn)行組件注冊(cè),然后在C#程序開(kāi)發(fā)的時(shí)候,對(duì)該COM組件添加引用,即可在程序里面自由地通過(guò)對(duì)象操作來(lái)使用函數(shù),而不必反復(fù)費(fèi)心地進(jìn)行函數(shù)申明的工作。下面我們就以EM9000嵌入式主板為實(shí)例,在C#使用COM組件接口操作精簡(jiǎn)ISA總線作一個(gè)說(shuō)明:

1、在目標(biāo)嵌入式主板上進(jìn)行COM組件注冊(cè)

ISA COM組件的核心文件就是英創(chuàng)提供的EM9000_ISA_API_COM.dll動(dòng)態(tài)鏈接庫(kù)文件,首先需要將它在目標(biāo)嵌入式工控主板上注冊(cè)。用戶(hù)可以使用Visual Studio Remote Tools提供的“遠(yuǎn)程文件查看器”連接目標(biāo)嵌入式工控主板,并將英創(chuàng)提供的EM9000_ISA_API_COM.dll和REGSVR32.exe這兩個(gè)文件下載到目標(biāo)主板的Flash存儲(chǔ)器上去(這里假設(shè)下載到EM9000的NandFlash)。然后在開(kāi)發(fā)主機(jī)PC上使用Telnet連接目標(biāo)工控主板(如圖),進(jìn)入放置剛才下載這兩個(gè)文件的Flash存儲(chǔ)器目錄,運(yùn)行:

REGSVR32 EM9000_ISA_API_COM.dll

即可完成COM組件注冊(cè)。

2、在C#工程中添加COM組件引用

接下來(lái)可以進(jìn)入C# COM組件開(kāi)發(fā)。首先將EM9000_ISA_API_COM.dll文件復(fù)制到用戶(hù)的C#工程目錄下,然后在Visual Studio 2005.NET集成開(kāi)發(fā)環(huán)境中打開(kāi)用戶(hù)工程。為了使用ISA總線COM組件,必須為該工程添加外部引用;用戶(hù)可在集成開(kāi)發(fā)環(huán)境的右側(cè)的“解決方案資源管理器”中找到“引用”,對(duì)其單擊鼠標(biāo)右鍵,然后單擊“添加引用”(如圖)。

在彈出的“添加引用”對(duì)話框中,選擇“瀏覽”選項(xiàng)卡,并在你的工程目錄下找到你剛才復(fù)制過(guò)來(lái)的EM9000_ISA_API_COM.dll文件,選擇它,并單擊“確定”。

這時(shí),你已經(jīng)完成了添加工程中的COM組件的引用工作,這時(shí),你可以在集成開(kāi)發(fā)環(huán)境的右側(cè)的“解決方案資源管理器”中看到了一個(gè)名稱(chēng)為EM9000_ISA_API_COMLib的引用,同時(shí),EM9000_ISA_API_COM.dll也加入到了你的工程中(如圖)。

3、在應(yīng)用程序開(kāi)發(fā)中使用ISA COM組件

首先,為了使應(yīng)用程序能直接調(diào)用相關(guān)的類(lèi)和函數(shù),必須在程序的起始using語(yǔ)句中添加:

using EM9000_ISA_API_COMLib;

程序中對(duì)于ISA總線的操作完全圍繞EM9000_ISA_COMClass和EM9000_ISA_EX_COM這兩個(gè)類(lèi)來(lái)進(jìn)行的。用戶(hù)可以根據(jù)自己對(duì)于ISA總線操作的需要來(lái)定義這兩個(gè)類(lèi)的對(duì)象實(shí)體,然后通過(guò)對(duì)對(duì)象里面的方法(函數(shù))來(lái)進(jìn)行所需要的操作。EM9000_ISA_COMClass所定義的對(duì)象主要包括一些ISA總線擴(kuò)展(包括PWM、WatchDog等)的方法,EM9000_ISA_EX_COM所定義的對(duì)象主要包括一些將接口定義為GPIO的操作(如IO輸入輸出)方法。下面大致做一些講解:

(1) 定義類(lèi)的對(duì)象

EM9000_ISA_COMClass ISA_Port = new EM9000_ISA_COMClass(); // 定義一個(gè)EM9000_ISA_COMClass對(duì)象

EM9000_ISA_EX_COM GPIO_Port = new EM9000_ISA_EX_COM(); // 定義一個(gè)EM9000_ISA_EX_COM對(duì)象

(2) 使用對(duì)象的方法函數(shù)

英創(chuàng)提供了一個(gè)ISA COM組件的方法函數(shù)列表,里面詳細(xì)羅列了各種方法函數(shù)的使用。由于該COM組件是用C++來(lái)編寫(xiě)的,所以,這個(gè)列表里面的函數(shù)形式是以C++的方式來(lái)標(biāo)注的;由于C#和C++的相似性,所以大多數(shù)方法函數(shù)不需要在此提出特別注解,只需要針對(duì)幾個(gè)帶有C++指針參數(shù)的函數(shù)在此作一提示(舉例中所使用的類(lèi)對(duì)象已經(jīng)在上文中定義):

int COM_EM9000_PWMOUT( int ChIdx, float* pFreq, float* pDuty );

這個(gè)操作PWM輸出的函數(shù),帶有兩個(gè)返回實(shí)際脈沖頻率和占空比的指針變量,在C#中,我們一般按照如下示例的方式來(lái)使用:

int ChIdx = 0;

float pFreq = 60.0f; //脈沖頻率60KHz

float pDuty = 70.0f; //占空比70%

int i1 = ISA_Port.COM_EM9000_PWMOUT(ChIdx, ref pFreq, ref pDuty);

注意pFreq和pDuty由C++的指針變成了兩個(gè)ref變量,它們將返回實(shí)際脈沖頻率和占空比值。

int COM_PIO_State( UINT16* pInValue );

這個(gè)讀取GPIO輸入狀態(tài)的函數(shù),帶有一個(gè)返回輸入值的指針變量,我們是按照如下示例在進(jìn)行使用:

ushort gpio_in_state = 0x0000; //這是一個(gè)返回IO輸入狀態(tài)的值,初始化可以任意設(shè)置一個(gè)值

i1 = GPIO_Port.COM_PIO_State(out gpio_in_state);

注意gpio_in_state由C++的指針變成了一個(gè)out變量,它將返回實(shí)際GPIO輸入狀態(tài)。

用戶(hù)還可以參考英創(chuàng)提供的C# ISA總線COM組件例程,進(jìn)行實(shí)際的應(yīng)用開(kāi)發(fā)。

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

    關(guān)注

    7

    文章

    6085

    瀏覽量

    35341
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    精簡(jiǎn)ISA擴(kuò)展總線接口讀寫(xiě)操作

    創(chuàng)精簡(jiǎn)ISA總線中,設(shè)置了2條獨(dú)特的片選控制信號(hào)CS0#和CS1#,這樣就省去了大量的高位地址總線
    的頭像 發(fā)表于 10-17 11:26 ?5556次閱讀
    <b class='flag-5'>精簡(jiǎn)</b><b class='flag-5'>ISA</b>擴(kuò)展<b class='flag-5'>總線接口</b>讀寫(xiě)<b class='flag-5'>操作</b>

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

    創(chuàng)ARM9工控主板的數(shù)據(jù)采集功能通常采用板上的GPIO實(shí)現(xiàn)數(shù)字輸入輸出、通過(guò)精簡(jiǎn)ISA總線擴(kuò)展相應(yīng)的AD或DA實(shí)現(xiàn)模擬數(shù)據(jù)的輸入輸出。在
    的頭像 發(fā)表于 11-12 10:04 ?1791次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b>ARM9工控板在遠(yuǎn)程監(jiān)控領(lǐng)域的應(yīng)用

    創(chuàng)信息技術(shù)ISA總線的CE設(shè)備驅(qū)動(dòng)程序介紹

     創(chuàng)公司推出的系列ARM9工控主板是面向工業(yè)智能設(shè)備的高性?xún)r(jià)比ARM9+WinCE平臺(tái),主板上不僅配置了常規(guī)的標(biāo)準(zhǔn)通訊接口,如以太、串口、USB、CAN通訊接口等,最有特色的還配置了
    的頭像 發(fā)表于 11-12 10:17 ?1601次閱讀

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

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

    創(chuàng)信息技術(shù)工控主板EM9360的GPIO介紹

    的WinCE驅(qū)動(dòng)程序,支持應(yīng)用程序通過(guò)WinCE相應(yīng)的API函數(shù)來(lái)操作各路網(wǎng)絡(luò)接口。此外EM9360還與創(chuàng)公司其他ARM9主板一樣,帶有精簡(jiǎn)
    的頭像 發(fā)表于 11-14 09:34 ?2404次閱讀

    創(chuàng)信息技術(shù)C#使用COM組件接口進(jìn)行串口操作介紹

    通訊的時(shí)候,往往是需要對(duì)RTS進(jìn)行設(shè)置的。為了解決這個(gè)問(wèn)題,創(chuàng)公司現(xiàn)在提供了操作串口的COM組件接口
    的頭像 發(fā)表于 11-14 09:37 ?2328次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b><b class='flag-5'>C#</b>使用<b class='flag-5'>COM</b><b class='flag-5'>組件</b><b class='flag-5'>接口</b>進(jìn)行串口<b class='flag-5'>操作</b>介紹

    創(chuàng)信息技術(shù)WinCE平臺(tái)C#例程要點(diǎn)介紹

    創(chuàng)嵌入式ARM9主板采用微軟的Windows CE操作系統(tǒng),可以采用eVC或者VS2005進(jìn)行應(yīng)用開(kāi)發(fā)。C#作為一種簡(jiǎn)單易用的編程語(yǔ)言工具,由于其在結(jié)構(gòu)構(gòu)建和API界面上的優(yōu)勢(shì),受到
    的頭像 發(fā)表于 11-15 10:01 ?2132次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b>WinCE平臺(tái)<b class='flag-5'>C#</b>例程要點(diǎn)介紹

    創(chuàng)信息技術(shù)ISA總線擴(kuò)展定時(shí)器的應(yīng)用介紹

    由于現(xiàn)在工控應(yīng)用中,PWM應(yīng)用相當(dāng)?shù)膹V泛。為了滿(mǎn)足不同的應(yīng)用要求,如PWM輸出、脈沖計(jì)數(shù)等,可以利用創(chuàng)公司的ARM9工控主板的精簡(jiǎn)ISA總線
    的頭像 發(fā)表于 01-14 14:34 ?1199次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b><b class='flag-5'>ISA</b><b class='flag-5'>總線</b>擴(kuò)展定時(shí)器的應(yīng)用介紹

    創(chuàng)信息技術(shù)嵌入式系統(tǒng)設(shè)備驅(qū)動(dòng)接口C#編程

    的驅(qū)動(dòng)程序,用戶(hù)只需直接調(diào)用相應(yīng)的接口函數(shù)即可實(shí)現(xiàn)。 在使用C#進(jìn)行應(yīng)用程序開(kāi)發(fā)時(shí),由于C#無(wú)法使用C++的靜態(tài)庫(kù)函數(shù),對(duì)于一些流式驅(qū)動(dòng)設(shè)備,比如I
    的頭像 發(fā)表于 01-15 11:29 ?1300次閱讀

    創(chuàng)信息技術(shù)EM335x精簡(jiǎn)ISA擴(kuò)展總線地址總線介紹

    創(chuàng)公司新近推出的工控主板EM335x支持精簡(jiǎn)ISA擴(kuò)展總線。由于主板管腳的限制,ISA
    的頭像 發(fā)表于 01-17 10:20 ?1378次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b>EM335x<b class='flag-5'>精簡(jiǎn)</b><b class='flag-5'>ISA</b>擴(kuò)展<b class='flag-5'>總線</b>地址<b class='flag-5'>總線</b>介紹

    創(chuàng)信息技術(shù)JAVA操作創(chuàng)主板I2C接口簡(jiǎn)介

    資源,創(chuàng)提供了Java硬件支持包,主要支持的工控接口有:以太網(wǎng)、串口、CAN、GPIO、SPI、I2C、RTC等。本文主要介紹使用Java語(yǔ)言調(diào)用
    的頭像 發(fā)表于 02-06 11:06 ?1694次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b>JAVA<b class='flag-5'>操作</b><b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b>主板I2<b class='flag-5'>C</b><b class='flag-5'>接口</b>簡(jiǎn)介

    創(chuàng)信息技術(shù)精簡(jiǎn)ISA總線Linux編程–Part1

    實(shí)現(xiàn)高達(dá)10MB/s的數(shù)據(jù)傳輸。精簡(jiǎn)ISA總線作為創(chuàng)主板的特色功能之一,在ESM6802、ESM7000、ESM7100、ESM335x等
    的頭像 發(fā)表于 02-07 11:19 ?1170次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b><b class='flag-5'>精簡(jiǎn)</b><b class='flag-5'>ISA</b><b class='flag-5'>總線</b>Linux編程–Part1

    創(chuàng)信息技術(shù)精簡(jiǎn)ISA總線Linux編程 – Part2簡(jiǎn)介

    10MB/s以上的數(shù)據(jù)傳輸。精簡(jiǎn)ISA總線作為創(chuàng)主板的特色功能之一,在ESM6802、ESM7000、ESM7100、ESM335x等多款
    的頭像 發(fā)表于 02-11 16:50 ?1318次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b><b class='flag-5'>精簡(jiǎn)</b><b class='flag-5'>ISA</b><b class='flag-5'>總線</b>Linux編程 – Part2簡(jiǎn)介

    創(chuàng)信息技術(shù)精簡(jiǎn)ISA總線Linux編程 – Part3簡(jiǎn)介

    10MB/s以上的數(shù)據(jù)傳輸。精簡(jiǎn)ISA總線作為創(chuàng)主板的特色功能之一,在ESM6802、ESM7000、ESM7100、ESM335x等多款
    的頭像 發(fā)表于 02-11 16:48 ?1404次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b><b class='flag-5'>精簡(jiǎn)</b><b class='flag-5'>ISA</b><b class='flag-5'>總線</b>Linux編程 – Part3簡(jiǎn)介

    創(chuàng)信息技術(shù)精簡(jiǎn)ISA總線WinCE編程簡(jiǎn)介

    ISA總線簡(jiǎn)介 創(chuàng)精簡(jiǎn)ISA總線
    的頭像 發(fā)表于 02-11 16:55 ?1303次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b><b class='flag-5'>精簡(jiǎn)</b><b class='flag-5'>ISA</b><b class='flag-5'>總線</b>WinCE編程簡(jiǎn)介