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ù)ARM9工控板串口設(shè)備的COM組件應(yīng)用

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

英創(chuàng)公司的ARM9工控主板產(chǎn)品均預(yù)裝了Windows CE5.0操作系統(tǒng),支持包括EVC、C#、VB、LabView等多種開(kāi)發(fā)工具。作為工業(yè)控制領(lǐng)域的嵌入模塊,客戶的應(yīng)用程序往往對(duì)系統(tǒng)的底層調(diào)用較多,相對(duì)于其它語(yǔ)言,C++具有強(qiáng)大的硬件控制能力和很高執(zhí)行效率,因此我們提供的示例程序和軟件方面的技術(shù)支持均集中在C++方面。而C#、.net VB等在圖型界面開(kāi)發(fā)、數(shù)據(jù)庫(kù)方面的應(yīng)用和易用性方面更具優(yōu)勢(shì),我們很多客戶也選用他們作為開(kāi)發(fā)工具。為了結(jié)合各語(yǔ)言的優(yōu)勢(shì),為了對(duì)客戶提供更好的支持,我們將與主板密切相關(guān)的一些底層功能模塊封裝成COM組件,用戶可以使用自己喜歡的語(yǔ)言來(lái)調(diào)用COM組件,不必關(guān)心低層調(diào)用的細(xì)節(jié),而COM組件本身則采用C++來(lái)編寫(xiě)。本文將介紹基于英創(chuàng)工控主板串口應(yīng)用的COM組件和組件調(diào)用方法。

1、創(chuàng)建串口應(yīng)用COM組件

串口通訊在工業(yè)控制場(chǎng)合應(yīng)用十分廣泛,當(dāng)串口作為RS485通信應(yīng)用時(shí),很多場(chǎng)合下,需要通過(guò)硬件RTS信號(hào)來(lái)控制數(shù)據(jù)收發(fā)的方向,以提高抗干擾能力。在C#這一類(lèi)的高級(jí)語(yǔ)言中,盡管也包括了串口控件,但缺乏對(duì)RTS硬件的操作,因此在RS485應(yīng)用中受到一定的限制。為了彌補(bǔ)這一缺陷,在我們所設(shè)計(jì)的串口應(yīng)用COM組件中,通過(guò)對(duì)串口DCB結(jié)構(gòu)參數(shù)的設(shè)置,并結(jié)合英創(chuàng)ARM9主板低層的串口驅(qū)動(dòng)程序,實(shí)現(xiàn)對(duì)RTS信號(hào)的完整控制。本串口組件采用C++編寫(xiě),在組件內(nèi)部對(duì)RTS進(jìn)行設(shè)置,而上層的開(kāi)發(fā)工具,如C#等,可通過(guò)向組件接口函數(shù)傳遞參數(shù)來(lái)控制RTS信號(hào),從而最終實(shí)現(xiàn)RS485的半雙工通訊。

本串口COM組件提供四個(gè)接口方法函數(shù):打開(kāi)串口,關(guān)閉串口,向串口寫(xiě)數(shù)據(jù),讀串口數(shù)據(jù)。客戶方調(diào)用COM組件打開(kāi)串口后,COM組件服務(wù)器便在組件內(nèi)部創(chuàng)建一數(shù)據(jù)接收線程,接收線程里通過(guò)WaitCommEvent來(lái)等待串口事件發(fā)生,當(dāng)串口收到數(shù)據(jù)后,將數(shù)據(jù)放入指定的接收數(shù)據(jù)緩存中,客戶方可調(diào)用讀串口數(shù)據(jù)方法函數(shù)將緩存中的數(shù)據(jù)讀出。在實(shí)際應(yīng)用中,客戶可在接收線程中加入自己特定的協(xié)議轉(zhuǎn)換代碼,使得通過(guò)組件讀取的數(shù)據(jù)為一個(gè)完整應(yīng)用報(bào)文。

為了跨語(yǔ)言調(diào)用組件,接口方法函數(shù)參數(shù)數(shù)據(jù)均采用VARIANT數(shù)據(jù)類(lèi)型,這樣ASP、vbscript等可方便的進(jìn)行組件調(diào)用,從而輕松實(shí)現(xiàn)通過(guò)網(wǎng)頁(yè)對(duì)串口進(jìn)行操作。

COM組件的創(chuàng)建過(guò)程請(qǐng)參考本網(wǎng)站相關(guān)文章或參考相應(yīng)書(shū)籍。這里不再贅述。

2、串口應(yīng)用組件接口方法函數(shù)

為了跨語(yǔ)言調(diào)用組件,組件接口方法函數(shù)參數(shù)數(shù)據(jù)均采用VARIANT數(shù)據(jù)類(lèi)型。

(1)OpenPort( VARIANT portNo, VARIANT baud, VARIANT parity, VARIANT dataBits, VARIANT stopBits, VARIANT rtsCtrl, VARIANT* pbool)

功能描述:打開(kāi)指定串口。

輸入?yún)?shù):

VARIANT portNo 要打開(kāi)的串口號(hào)

VARIANT baud 設(shè)置波特率

VARIANT parity 設(shè)置奇偶較驗(yàn)

VARIANT dataBits 設(shè)置數(shù)據(jù)位

VARIANT stopBits 設(shè)置停止位

VARIANT rtsCtrl RTS設(shè)置

輸出參數(shù):

VARIANT* pbool 串口打開(kāi)成功失敗標(biāo)志

(2)WritePort(VARIANT *var_inp, VARIANT *retLen)

功能描述:向串口寫(xiě)數(shù)據(jù)

輸入?yún)?shù):

VARIANT *var_inp 發(fā)送數(shù)據(jù)緩存

輸出參數(shù):

VARIANT *retLen 發(fā)送數(shù)據(jù)個(gè)數(shù)

(3)ReadPort(VARIANT *rxData)

功能描述:讀取串口數(shù)據(jù)

輸出參數(shù):

VARIANT *rxData 接收數(shù)據(jù)緩存

(4)ClosePort( )

功能描述:關(guān)閉串口

3、串口組件調(diào)用

下面是在EVC中調(diào)用串口組件接口函數(shù)的一些程序片段,主要說(shuō)明在調(diào)用接口方法時(shí),VARIANT參數(shù)的用法。

// 從Program ID得到Class ID

hr = CLSIDFromProgID( OLESTR( ‘ComSerial.CoSerial’ ), &clsid );

if( FAILED( hr ) )

{

return -1;

}

// 從Class ID得到ICoSerial接口指針

hr = CoCreateInstance( clsid, NULL, CLSCTX_INPROC_SERVER, __uuidof( ICoSerial ),

( void** )&pICoSerial );

if( FAILED( hr ))

{

return -1;

}

//打開(kāi)串口

CComVariant portNo( 3 ); // 打開(kāi)串口3

CComVariant baud( 9600 ); // 波特率:9600

CComVariant parity( ‘n’ ); // 無(wú)校驗(yàn)位

CComVariant dataBits( 8 ); // 8位數(shù)據(jù)

CComVariant stopBits( 1 ); // 1位停止位

CComVariant rtsCtrl(RTS_CONTROL_TOGGLE); // RTS設(shè)置

CComVariant pbool( FALSE ); // 串口打開(kāi)成功標(biāo)志

pbool = pICoSerial-》OpenPort( portNo, baud, parity, dataBits, stopBits, rtsCtrl );

// 向串口發(fā)送數(shù)據(jù)

char strBuf[100];

strcpy( strBuf, ‘1234567890!’ );

long i=0, m=0;

m = strlen( strBuf );

SAFEARRAY FAR* pSafeArray;

SAFEARRAYBOUND rgsabound[1];

rgsabound[0].lLbound = 0;

rgsabound[0].cElements = m;

pSafeArray = SafeArrayCreate( VT_VARIANT, 1, rgsabound );

VARIANT var;

for( i; i 《 m; i++)

{

var.vt = VT_UI1;

var.bVal = strBuf[i];

SafeArrayPutElement( pSafeArray, &i, &var );

}

VARIANT tarray,retLen;

tarray.parray = pSafeArray;

retLen = pICoSerial-》WritePort( &tarray );

// 接收數(shù)據(jù)

VARIANT vinput, var;

BYTE rxBuf[1500];

vinput = pICoSerial-》ReadPort( );

SafeArrayGetUBound( vinput.parray, 1, &lUbound );

SafeArrayGetLBound( vinput.parray, 1, &lLbound );

// m:串口接收到的數(shù)據(jù)個(gè)數(shù)

m = lUbound - lLbound+1;

// m=0表示串口沒(méi)有收到數(shù)據(jù)

if( 0 == m )

return;

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

{

Safe=ArrayGetElement( vinput.parray, &i, &var );

rxBuf[i] = (BYTE)var.bVal;

}

在實(shí)際的應(yīng)用中,通訊各方必須遵循統(tǒng)一的通訊規(guī)約。在發(fā)送數(shù)據(jù)前通常需要將數(shù)據(jù)按相應(yīng)的協(xié)議打包,添加較驗(yàn)信息等,收到數(shù)據(jù)后,要進(jìn)行幀完整性判斷、數(shù)據(jù)解包、數(shù)據(jù)較驗(yàn)、協(xié)議轉(zhuǎn)換等工作?,F(xiàn)在可以將這些與協(xié)議密切相關(guān)的處理放在COM組件內(nèi)部,客戶方在使用串口時(shí)僅需要對(duì)客戶感興趣的數(shù)據(jù)進(jìn)行處理,而協(xié)議轉(zhuǎn)換等工作交由COM組件完成。這樣程序具有更好結(jié)構(gòu),維護(hù)也更加方便。

聲明:本文內(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)投訴
  • WINDOWS
    +關(guān)注

    關(guān)注

    3

    文章

    3545

    瀏覽量

    88694
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6085

    瀏覽量

    35336
收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

    創(chuàng)公司自2007年開(kāi)始陸續(xù)推出一系列以ARM9 CPU為核心的嵌入式主板(如EM9000、EM9260),這些高性能的工控主板不僅具有高端的硬件性能和豐富的硬件接口,而且還采用了Mi
    的頭像 發(fā)表于 10-31 15:03 ?1887次閱讀
    <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>簡(jiǎn)介

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

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

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

    創(chuàng)公司推出的ARM9 嵌入式工控主板產(chǎn)品系列,均預(yù)裝了正版WinCE5.0 操作系統(tǒng)。
    的頭像 發(fā)表于 11-04 09:43 ?2645次閱讀
    <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工控在遠(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 ?1790次閱讀
    <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>在遠(yuǎn)程監(jiān)控領(lǐng)域的應(yīng)用

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

    創(chuàng)ARM9工控主板的數(shù)據(jù)采集功能通常采用上的GPIO實(shí)現(xiàn)數(shù)字輸入輸出、通過(guò)精簡(jiǎn)ISA總線擴(kuò)展相應(yīng)的外部控制電路(如控制繼電器或AD或DA
    的頭像 發(fā)表于 11-12 10:24 ?1606次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b>C#使用<b class='flag-5'>COM</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)、汽車(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'>COM</b><b class='flag-5'>組件</b>在C#語(yǔ)言領(lǐng)域應(yīng)用

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

    創(chuàng)ARM9工控主板功能齊全、體積小巧、性能穩(wěn)定、超低價(jià)格的嵌入式主板產(chǎn)品。主板硬件完全按工業(yè)級(jí)標(biāo)準(zhǔn)設(shè)計(jì),CPU采用了32位工業(yè)級(jí)ARM9
    的頭像 發(fā)表于 11-13 09:41 ?1999次閱讀
    <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>遠(yuǎn)程抓拍圖像應(yīng)用介紹

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

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

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

    EM9000是創(chuàng)公司極具特色的一款ARM9工控主板。經(jīng)過(guò)長(zhǎng)時(shí)間的完善,現(xiàn)系統(tǒng)已完全穩(wěn)定。
    的頭像 發(fā)表于 11-17 11:23 ?1738次閱讀
    <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ù)如何實(shí)現(xiàn)WinCE系統(tǒng)中USB設(shè)備自動(dòng)檢測(cè)概述

    創(chuàng)公司ARM9系列工控主板預(yù)裝正版WinCE操作系統(tǒng),提供標(biāo)準(zhǔn)USB接口,本文介紹如何在應(yīng)用程序中判斷USB存儲(chǔ)設(shè)備的插入和移出操作。
    的頭像 發(fā)表于 11-18 09:44 ?1391次閱讀
    <b class='flag-5'>英</b><b class='flag-5'>創(chuàng)</b><b class='flag-5'>信息技術(shù)</b>如何實(shí)現(xiàn)WinCE系統(tǒng)中USB<b class='flag-5'>設(shè)備</b>自動(dòng)檢測(cè)概述

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

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

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

    創(chuàng)公司ARM9系列工控主板預(yù)裝正版WinCE操作系統(tǒng),板載了豐富的通訊接口,GPIO,存儲(chǔ)器等資源,支持TFT LCD顯示及觸摸,支持標(biāo)準(zhǔn)USB鍵盤(pán),鼠標(biāo)輸入。在實(shí)際使用中,客戶如果
    的頭像 發(fā)表于 01-14 11:05 ?1662次閱讀
    <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>主板擴(kuò)展矩陣鍵盤(pán)的方法

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

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

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

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