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

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

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

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

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

英創(chuàng)ARM9工控主板均提供了多個(gè)串口供客戶進(jìn)行通訊控制使用,包括標(biāo)準(zhǔn)的RS232和TTL電平的COM接口(經(jīng)過簡(jiǎn)單的電平轉(zhuǎn)換即可成為標(biāo)準(zhǔn)的RS232/RS485或者RS422)。由于英創(chuàng)ARM9嵌入式主板采用WinCE操作系統(tǒng),很多客戶都選擇了界面友好、開發(fā)便利的C#語(yǔ)言(使用Visual Studio 2005.NET集成開發(fā)環(huán)境);在VS2005中,微軟提供了一個(gè)標(biāo)準(zhǔn)的串口類SerialPort供客戶使用,該串口類可以靈活方便地進(jìn)行串口設(shè)置、收發(fā)等操作,英創(chuàng)也提供了基于該串口類的C#例程供客戶參考。但是,微軟所提供的串口類雖然方便靈活,但是沒有提供RTS控制的功能,而客戶在進(jìn)行工業(yè)現(xiàn)場(chǎng)通訊的時(shí)候,往往是需要對(duì)RTS進(jìn)行設(shè)置的。為了解決這個(gè)問題,英創(chuàng)公司現(xiàn)在提供了操作串口的COM組件接口;用戶只需要在目標(biāo)平臺(tái)上進(jìn)行組件注冊(cè),然后在C#程序開發(fā)的時(shí)候,對(duì)該COM組件添加引用,即可在程序里面自由地通過對(duì)象操作來使用函數(shù)。

注:英創(chuàng)提供的可以供C#開發(fā)使用的串口COM組件與eVC開發(fā)使用的串口COM組件在成員數(shù)據(jù)類型上有顯著區(qū)別,不能互換使用。

下面我們就以EM9000嵌入式主板為實(shí)例,在C#使用COM組件接口進(jìn)行串口操作作一個(gè)說明:

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

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

REGSVR32 ComSerial.dll

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

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

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

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

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

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

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

using COMSERIALLib;

程序中對(duì)于串口的操作完全圍繞CoSerialClass這個(gè)類來進(jìn)行的。用戶需要首先定義這個(gè)類的對(duì)象實(shí)體,然后通過對(duì)對(duì)象里面的方法(函數(shù))來進(jìn)行所需要的操作。下面大致做一些講解:

(1)定義類的對(duì)象

CoSerialClass COM_myserialPort = new CoSerialClass(); // 定義一個(gè)CoSerialClass串口類對(duì)象COM_myserialPort

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

該串口類的對(duì)象實(shí)體主要包括四個(gè)函數(shù)和兩個(gè)事件,下面我們著重就OpenPort、ClosePort、WritePort、ReadPort四個(gè)函數(shù)和OnRecieve事件進(jìn)行舉例說明(舉例中所使用的類對(duì)象已經(jīng)在上文中定義):

int OpenPort(uint portNo, uint baud, sbyte parity, uint dataBits, uint stopBits, uint rtsCtr);

打開串口函數(shù),使用示例如下:

uint portNO = 1; // 串口1

uint myrate = 9600; // 波特率9600

COM_myserialPort.OpenPort(portNO, myrate, Convert.ToSByte(‘n’), 8, 1, RTS_CONTROL_TOGGLE);

// 參數(shù)依序:串口號(hào)、波特率、校驗(yàn)位(無)、數(shù)據(jù)位(8)、停止位(1)、RTS

注意RTS常數(shù)應(yīng)該在程序開始就定義,我們一般做如下定義:

const uint RTS_CONTROL_DISABLE = 0x00;

const uint RTS_CONTROL_ENABLE = 0x01;

const uint RTS_CONTROL_HANDSHAKE = 0x02;

const uint RTS_CONTROL_TOGGLE = 0x03;

OnRecieve事件

我們可以利用COM組件提供的OnRecieve事件(當(dāng)串口有數(shù)據(jù)收到的時(shí)候發(fā)生)來啟動(dòng)一個(gè)事件函數(shù)來讀取串口數(shù)據(jù)。OnRecieve事件可以放在程序定義串口對(duì)象實(shí)例之后程序剛開始的某個(gè)地方:

COM_myserialPort.OnReceive + = new _ICoserialEvents_OnReceiveEventHandler (COM_myserialPort_OnReceive);

// 當(dāng)串口有數(shù)據(jù)收到時(shí),啟動(dòng)COM_myserialPort_OnReceive事件函數(shù)

byte ReadPort()

讀取串口數(shù)據(jù)函數(shù),往往在OnReceive事件函數(shù)里使用,注意該函數(shù)是一次讀取一個(gè)byte,所以一次需要將數(shù)據(jù)讀取完畢(結(jié)束標(biāo)志為0xff)。使用示例如下:

private void COM_myserialPort_OnReceive() // 串口有數(shù)據(jù)收到

{

byte recieved_byte = 0;

byte[] RCV_bytes = new byte[1024];

int i=0;

for (i=0;i《1024;i++ )

{

recieved_byte = COM_myserialPort.ReadPort();

if (recieved_byte == 0xff) break;

RCV_bytes[i] = recieved_byte;

}

// 此處可對(duì)收到的數(shù)據(jù)進(jìn)行進(jìn)一步處理

}

int WritePort(int elems, byte[] buf);

發(fā)送串口數(shù)據(jù)函數(shù),使用示例如下:

byte[] sendbytemessage = Encoding.Default.GetBytes(textBox1.Text); // 將某文本框數(shù)據(jù)轉(zhuǎn)為byte數(shù)組

COM_myserialPort.WritePort(sendbytemessage.Length, sendbytemessage); // 發(fā)送

void ClosePort();

關(guān)閉串口函數(shù),直接使用即可關(guān)閉串口。

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

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

    關(guān)注

    7

    文章

    6084

    瀏覽量

    35154
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    創(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 ?1722次閱讀

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

    創(chuàng)ARM9工控主板的數(shù)據(jù)采集功能通常采用板上的GPIO實(shí)現(xiàn)數(shù)字輸入輸出、通過精簡(jiǎn)ISA總線擴(kuò)展相應(yīng)的外部控制電路(如控制繼電器或AD或DA實(shí)現(xiàn)模擬數(shù)據(jù)的輸入輸出等)。
    的頭像 發(fā)表于 11-12 10:24 ?1564次閱讀
    <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><b class='flag-5'>操作</b>精簡(jiǎn)ISA總線淺談

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

     創(chuàng)ARM9工控主板的一個(gè)很大的特色就是提供了標(biāo)準(zhǔn)的CAN總線通訊接口,客戶可以方便地在工業(yè)現(xiàn)場(chǎng)、汽車、船舶等等領(lǐng)域進(jìn)行CAN通信應(yīng)用。由于
    的頭像 發(fā)表于 11-12 10:34 ?2394次閱讀
    <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介紹

    創(chuàng)公司的ARM9工控主板產(chǎn)品 EM9360是一款預(yù)裝WinCE操作系統(tǒng),以多種通訊接口、支持各種擴(kuò)展為其技術(shù)特色。EM9360的板載的3路
    的頭像 發(fā)表于 11-14 09:34 ?2357次閱讀

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

    創(chuàng)嵌入式ARM9主板采用微軟的Windows CE操作系統(tǒng),可以采用eVC或者VS2005進(jìn)行應(yīng)用開發(fā)。C#作為一種簡(jiǎn)單易用的編程語(yǔ)言工具
    的頭像 發(fā)表于 11-15 10:01 ?2076次閱讀
    <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)<b class='flag-5'>介紹</b>

    創(chuàng)信息技術(shù)C#使用VS2005提供的串口進(jìn)行串口操作介紹

     創(chuàng)ARM9工控主板均提供了多個(gè)串口供客戶進(jìn)行通訊控制使用,包括標(biāo)準(zhǔn)的RS232和TTL電平的COM
    的頭像 發(fā)表于 11-18 09:53 ?1296次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b><b class='flag-5'>C#</b>使用VS2005提供的<b class='flag-5'>串口</b>類<b class='flag-5'>進(jìn)行</b><b class='flag-5'>串口</b><b class='flag-5'>操作</b><b class='flag-5'>介紹</b>

    創(chuàng)信息技術(shù)C#啟動(dòng)和關(guān)閉外部進(jìn)程的方法介紹

    許多用戶在程序開發(fā)過程中需要使用C#啟動(dòng)一個(gè)外部程序(進(jìn)程),在使用完畢該外部程序后,又希望能將其關(guān)閉。我們特在此對(duì)C#啟動(dòng)和關(guān)閉外部進(jìn)程的方法進(jìn)行一個(gè)簡(jiǎn)單的介紹。
    的頭像 發(fā)表于 01-14 14:36 ?1200次閱讀

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

    創(chuàng)ARM9系列嵌入式主板,均預(yù)裝了WinCE 5.0、WinCE 6.0操作系統(tǒng),用戶可使用標(biāo)準(zhǔn)的C/C++或
    的頭像 發(fā)表于 01-15 11:29 ?1260次閱讀

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

    在使用創(chuàng)ARM9系列嵌入式主板的COM口,CAN口,網(wǎng)口時(shí),一般會(huì)使用到timer或線程來實(shí)現(xiàn)數(shù)據(jù)的接收。使用timer控件較為方便,通過InterVal值來設(shè)定調(diào)用間隔,但是靈活性不如線程。并且
    的頭像 發(fā)表于 01-15 11:25 ?1261次閱讀

    創(chuàng)信息技術(shù)EM9280串口技術(shù)特色及應(yīng)用介紹

    EM9280是創(chuàng)公司即將推出的新型工控主板產(chǎn)品。EM9280作為第一款板載8個(gè)獨(dú)立的異步串口(UART),而有別于公司的其他主板產(chǎn)品。8個(gè)串口的配置,可滿足在絕大多數(shù)應(yīng)用場(chǎng)合的需求,
    的頭像 發(fā)表于 01-15 14:41 ?1290次閱讀

    創(chuàng)信息技術(shù)嵌入式Linux主板Qt串口應(yīng)用程序簡(jiǎn)介

    :/dev/ttyS1,設(shè)置串口參數(shù),創(chuàng)建一個(gè)單獨(dú)的線程來對(duì)數(shù)據(jù)進(jìn)行收發(fā),使用read函數(shù)讀取數(shù)據(jù),write函數(shù)發(fā)送數(shù)據(jù)。并且創(chuàng)公司將其封裝成一個(gè)serial類,可以使用seria
    的頭像 發(fā)表于 01-17 09:41 ?1754次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b>嵌入式Linux主板Qt<b class='flag-5'>串口</b>應(yīng)用程序簡(jiǎn)介

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

    創(chuàng)EM335x工控主板,使用的Cortex-A8及WEC7操作系統(tǒng)。本文以EM335x工控主板光盤例程為例,簡(jiǎn)單介紹一下C
    的頭像 發(fā)表于 01-17 10:01 ?2653次閱讀
    <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'>C#</b>開發(fā)基于WEC7的CAN通訊<b class='flag-5'>介紹</b>

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

    資源,創(chuàng)提供了Java硬件支持包,主要支持的工控接口有:以太網(wǎng)、串口、CAN、GPIO、SPI、I2C、RTC等。本文主要
    的頭像 發(fā)表于 02-06 11:09 ?1861次閱讀
    <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>主板SPI<b class='flag-5'>接口</b>簡(jiǎn)介

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

    資源,創(chuàng)提供了Java硬件支持包,主要支持的工控接口有:以太網(wǎng)、串口、CAN、GPIO、SPI、I2C、RTC等。本文主要
    的頭像 發(fā)表于 02-06 11:06 ?1631次閱讀
    <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ù)主板在Windows CE環(huán)境中的串口配置

    異步串口UART是工業(yè)領(lǐng)域使用最廣泛,技術(shù)最為成熟的接口。在Windows CE環(huán)境的創(chuàng)主板中,串口
    的頭像 發(fā)表于 02-06 11:06 ?1137次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b>主板在Windows CE環(huán)境中的<b class='flag-5'>串口</b>配置