那曲檬骨新材料有限公司

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

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

3天內不再提示

英創(chuàng)信息技術CAN接口COM組件在C#語言領域應用

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

英創(chuàng)ARM9工控主板的一個很大的特色就是提供了標準的CAN總線通訊接口,客戶可以方便地在工業(yè)現場、汽車、船舶等等領域進行CAN通信應用。由于英創(chuàng)ARM9嵌入式主板采用WinCE操作系統(tǒng),很多客戶都選擇了界面友好、開發(fā)便利的C#語言(使用Visual Studio 2005.NET集成開發(fā)環(huán)境);以往用戶在使用C#操作控制CAN總線的時候,是使用英創(chuàng)提供的動態(tài)鏈接庫,采用傳統(tǒng)的DllImport方法,首先在程序開始的地方來進行函數申明,然后才能在程序中進行調用;而這個動態(tài)鏈接庫里面函數的EntryPoint由于系統(tǒng)的原因,往往是一個古怪的名字,而且英創(chuàng)每次在進行動態(tài)鏈接庫的升級后,這個EntryPoint的名字就可能發(fā)生變化,這對用戶程序的可維護性帶來極大的不便。為了解決這個問題,英創(chuàng)公司現在提供了操作CAN總線的COM組件接口;用戶只需要在目標平臺上進行組件注冊,然后在C#程序開發(fā)的時候,對該COM組件添加引用,即可在程序里面自由地通過對象操作來使用函數,而不必去費心地進行函數申明的工作。下面我們就以EM9000嵌入式主板為實例,在C#使用COM組件接口操作CAN總線作一個說明:

1、在目標嵌入式主板上進行COM組件注冊

CAN COM組件的核心文件就是英創(chuàng)提供的ComCAN.dll動態(tài)鏈接庫文件,首先需要將它在目標嵌入式工控主板上注冊。用戶可以使用Visual Studio Remote Tools提供的“遠程文件查看器”連接目標嵌入式工控主板,并將英創(chuàng)提供的ComCAN.dll和REGSVR32.exe這兩個文件下載到目標主板的Flash存儲器上去(這里假設下載到EM9000的NOR Flash)。然后在開發(fā)主機PC上使用Telnet連接目標工控主板(如圖),進入放置剛才下載這兩個文件的Flash存儲器目錄,運行:

REGSVR32 ComCAN.dll

即可完成COM組件注冊。

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

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

在彈出的“添加引用”對話框中,選擇“瀏覽”選項卡,并在你的工程目錄下找到你剛才復制過來的ComCAN.dll文件,選擇它,并單擊“確定”。

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

3、在應用程序開發(fā)中使用CAN COM組件

首先,為了使應用程序能直接調用相關的類和函數,必須在程序的起始using語句中添加:

using ComCANLib;

程序中對于CAN總線的操作完全圍繞CoCANClass這個類來進行的。用戶可以首先定義CAN總線操作的類的對象實體,然后通過對對象里面的方法(函數)來進行所需要的操作。CoCANClass所定義的對象只有5個函數方法,使用此5個函數方法,就可以實現CAN總線的啟動、發(fā)送、接收、結束、提示出錯等工作。下面大致做一些講解:

(1) 定義類的對象

CoCANClass EM9000_CAN = new CoCANClass(); //定義CAN對象實例

(2) 使用對象的方法函數

英創(chuàng)在《CAN接口COM組件在WinCE平臺上的實現》一文中提供了CAN COM組件的方法函數列表,里面詳細羅列了各種方法函數的使用,以及相應的注意事項,用戶在進行CAN開發(fā)之前應該詳細閱讀該文章。由于該COM組件是用C++來編寫的,所以,這個列表里面的函數形式以及變量是以C++的方式來標注的;由于部分函數存在指針參數,同時,部分變量類型在C#語言里面的使用存在變化,所以我們下面以示例的形式來進行函數說明(舉例中所使用的類對象已經在上文中定義):

StartCAN(/*[in]*/ UINT canNo, /*[in]*/ UCHAR baud, /*[in]*/ BYTE

acceptanceFilter[9],/*[in]*/BYTE size,/*[out,retval]*/BOOL *pBool )

打開指定CAN接口的函數,在C#中,我們一般按照如下示例的方式來使用:

int Start_status = EM9000_CAN.StartCAN(Port_No, BaudrateSerialno, ACCFilter, 9);

實際在C#中使用的時候,只有4個變量(變量的意義請參考《CAN接口COM組件在WinCE平臺上的實現》一文),返回值是一個C++的BOOL變量,而在C#中,是沒有BOOL變量的(只有bool),所以,這里處理成一個int變量,為1為真,為0為假。

WriteCAN(/*[in]*/ BYTE buf[13], /*[in]*/ DWORD bufLen,

/*[out,retval]*/ BOOL *pBool )

向CAN總線發(fā)送數據的函數,在C#中,我們一般按照如下示例的方式來使用:

int sResult = EM9000_CAN.WriteCAN(TxBuf, dlen);

參數TxBuf是一個長度為13的byte數組(所發(fā)送的幀),dlen是數據包的總長度(uint數據類型)。返回值是一個C++的BOOL變量,這里處理成一個int變量,為1為真,為0為假。

ReadCAN( /*[out]*/ BYTE buf[13], /*[out,retval]*/ BOOL *pBool )

接收CAN總線數據的函數,在C#中,我們一般按照如下示例的方式來使用:

int rResult = EM9000_CAN.ReadCAN(RxBuf);

參數RxBuf是一個長度為13的byte數組(所接收的幀)。返回值是一個C++的BOOL變量,這里處理成一個int變量,為1為真,為0為假。

GetErrorCode(/*[out]*/ DWORD *ECCRegCode,/*[out]*/ DWORD

errorArray[16], /*[out,retval]*/ int *errorCount)

獲取通訊錯誤代碼的函數,帶有一個返回輸入值的指針變量,我們是按照如下示例的方法在進行使用:

uint eccRegcod = 0; //初始化可以隨意設置一個值

uint[] errorArray = new uint[16];

int errorCount = EM9000_CAN.GetErrorCode(out eccRegcod, errorArray);

注意eccRegcod由C++的指針變成了一個out變量,它將返回CAN接口中錯誤代碼捕捉寄存器的值;errorArray是最近16次的CAN接口通訊錯誤編碼的uint數組;方法函數的返回值是一個int變量errorCount,它就返回總錯誤的次數。

StopCAN( )

關閉CAN通訊接口。

用戶還可以參考英創(chuàng)提供的C# CAN總線COM組件例程,進行實際的應用開發(fā)。

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

    關注

    7

    文章

    6086

    瀏覽量

    35616
收藏 人收藏

    評論

    相關推薦

    創(chuàng)信息技術利用COM組件遠程更改設備配置文件的流程

     COM(Component Object Model),即組件對象模型,是微軟公司開發(fā)的一種新的軟件開發(fā)技術,Microsoft的許多技術,如ActiveX、DirectX、以及OL
    的頭像 發(fā)表于 11-04 09:48 ?1396次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術</b>利用<b class='flag-5'>COM</b><b class='flag-5'>組件</b>遠程更改設備配置文件的流程

    創(chuàng)信息技術ARM9工控板遠程監(jiān)控領域的應用

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

    創(chuàng)信息技術ARM9工控板串口設備的COM組件應用

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

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

    創(chuàng)ARM9工控主板的數據采集功能通常采用板上的GPIO實現數字輸入輸出、通過精簡ISA總線擴展相應的外部控制電路(如控制繼電器或AD或DA實現模擬數據的輸入輸出等)。
    的頭像 發(fā)表于 11-12 10:24 ?1656次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術</b><b class='flag-5'>C#</b>使用<b class='flag-5'>COM</b><b class='flag-5'>組件</b><b class='flag-5'>接口</b>操作精簡ISA總線淺談

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

    通訊的時候,往往是需要對RTS進行設置的。為了解決這個問題,創(chuàng)公司現在提供了操作串口的COM組件接口;用戶只需要在目標平臺上進行
    的頭像 發(fā)表于 11-14 09:37 ?2413次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術</b><b class='flag-5'>C#</b>使用<b class='flag-5'>COM</b><b class='flag-5'>組件</b><b class='flag-5'>接口</b>進行串口操作介紹

    創(chuàng)信息技術C#調用COM組件的效率分析概述

    Intermediate Language,MSIL),這些代碼不專用于任何一種操作系統(tǒng),也不專用于C#;要執(zhí)行應用程序,是Just-In-Time(JIT)編譯器的任務,它把MSIL編譯為專用于OS和目標機器結構的本機代碼。
    的頭像 發(fā)表于 11-15 09:06 ?1527次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術</b><b class='flag-5'>C#</b>調用<b class='flag-5'>COM</b><b class='flag-5'>組件</b>的效率分析概述

    創(chuàng)信息技術WinCE平臺C#例程要點介紹

    創(chuàng)嵌入式ARM9主板采用微軟的Windows CE操作系統(tǒng),可以采用eVC或者VS2005進行應用開發(fā)。C#作為一種簡單易用的編程語言工具,由于其
    的頭像 發(fā)表于 11-15 10:01 ?2194次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術</b>WinCE平臺<b class='flag-5'>C#</b>例程要點介紹

    創(chuàng)信息技術C#通過串口讀取GPS模塊定位數據的方法

    的高精度、全天候、全球覆蓋、方便靈活和優(yōu)質價廉所吸引。嵌入式產品的開發(fā)應用中,很多領域都涉及到GPS導航和定位的應用;創(chuàng)的很多用戶,就是
    的頭像 發(fā)表于 01-14 11:33 ?2901次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術</b><b class='flag-5'>C#</b>通過串口讀取GPS模塊定位數據的方法

    創(chuàng)信息技術嵌入式系統(tǒng)設備驅動接口C#編程

    的驅動程序,用戶只需直接調用相應的接口函數即可實現。 使用C#進行應用程序開發(fā)時,由于C#無法使用C++的靜態(tài)庫函數,對于一些流式驅動設備
    的頭像 發(fā)表于 01-15 11:29 ?1351次閱讀

    創(chuàng)信息技術嵌入式系統(tǒng)通訊線程的C#編程方法

    使用創(chuàng)ARM9系列嵌入式主板的COM口,CAN口,網口時,一般會使用到timer或線程來實現數據的接收。使用timer控件較為方便,通過
    的頭像 發(fā)表于 01-15 11:25 ?1333次閱讀

    創(chuàng)信息技術C/C#開發(fā)基于WEC7的CAN通訊介紹

    創(chuàng)EM335x工控主板,使用的Cortex-A8及WEC7操作系統(tǒng)。本文以EM335x工控主板光盤例程為例,簡單介紹一下CC#代碼如何調用WEC7平臺下
    的頭像 發(fā)表于 01-17 10:01 ?2763次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術</b><b class='flag-5'>C</b>/<b class='flag-5'>C#</b>開發(fā)基于WEC7的<b class='flag-5'>CAN</b>通訊介紹

    創(chuàng)信息技術CAN驅動接口調用方法及說明

    時間,單位ms。 BusErrorReport :錯誤幀上報標記,0:不上報,1:上報錯誤幀 設置程序可以連接創(chuàng)工程師獲得。 CAN打開及關閉 打開關閉采用標準的流式設備驅動接口Cr
    的頭像 發(fā)表于 02-05 10:26 ?1431次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術</b>新<b class='flag-5'>CAN</b>驅動<b class='flag-5'>接口</b>調用方法及說明

    創(chuàng)信息技術ESM6802 Android版支持雙CAN通信簡介

    2017年8月,創(chuàng)ESM6802 Android基礎版之上,完善了對雙CAN接口的支持。 CAN
    的頭像 發(fā)表于 02-06 10:57 ?2241次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術</b>ESM6802 Android版支持雙<b class='flag-5'>CAN</b>通信簡介

    創(chuàng)信息技術JAVA操作創(chuàng)主板SPI接口簡介

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

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

    資源,創(chuàng)提供了Java硬件支持包,主要支持的工控接口有:以太網、串口、CAN、GPIO、SPI、I2C、RTC等。本文主要介紹使用Java
    的頭像 發(fā)表于 02-06 11:06 ?1735次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術</b>JAVA操作<b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b>主板I2<b class='flag-5'>C</b><b class='flag-5'>接口</b>簡介
    百家乐官网扑克片礼服| 罗城| 赌博百家乐技巧| 现金百家乐官网信誉| 网络百家乐金海岸破解软件| 百家乐官网电投| 云鼎娱乐城| 包赢百家乐的玩法技巧和规则| 百家乐官网龙虎| 黄陵县| 大发888娱乐城优惠码lm0| 滨海湾百家乐娱乐城| 百家乐官网赌博筹码| 乐安县| 大发888在线娱乐城合作伙伴| 澳门赌百家乐心法| 包赢百家乐官网的玩法技巧和规则 | 大发888是什么| 现场百家乐电话投注| 娱乐网百家乐官网的玩法技巧和规则| 百家乐官网销售视频| 香港六合彩白小姐图库| 太阳百家乐代理| 百家乐网址皇冠现金网| 加州百家乐官网的玩法技巧和规则 | 大发888娱乐场下载iyou qrd| 百家乐怎么出千| 新宝百家乐网址| 百家乐官网娱乐官网| 真钱百家乐官网游戏排行| 优博开户| 大发888下载并安装| 宝马会百家乐的玩法技巧和规则| 百家乐破解的办法| 真人百家乐官网娱乐好玩| 宁明县| 香港六合彩全年资料| 大发888官方网站登陆| 百家乐必胜打| 百家乐强对弱的对打法| 缅甸百家乐博彩真假|