<style id="7i3y3"></style>

      <sub id="7i3y3"><i id="7i3y3"></i></sub>

        午夜精品一区二区三区成人,中文字幕av一区二区,亚洲AVAV天堂AV在线网阿V,肥臀浪妇太爽了快点再快点,国产网友愉拍精品视频手机,国产精品无码a∨麻豆,久久中文字幕一区二区,a级国产乱理伦片在线观看al
        首頁 新聞 工控搜 論壇 廠商論壇 產(chǎn)品 方案 廠商 人才 文摘 下載 展覽
        中華工控網(wǎng)首頁
          P L C | 變頻器與傳動 | 傳感器 | 現(xiàn)場檢測儀表 | 工控軟件 | 人機界面 | 運動控制
          D C S | 工業(yè)以太網(wǎng) | 現(xiàn)場總線 | 顯示調(diào)節(jié)儀表 | 數(shù)據(jù)采集 | 數(shù)傳測控 | 工業(yè)安全
          電 源 | 嵌入式系統(tǒng) | PC based | 機柜箱體殼體 | 低壓電器 | 機器視覺
        利用RCM2200實現(xiàn)以太網(wǎng)與異步串口的通信
        收藏本文     查看收藏
        譚姝 宋茂忠
        (南京航空航天大學信息科學與技術(shù)學院)
        摘要  本文研究基于RCM2200嵌入式系統(tǒng)對網(wǎng)絡和串口的編程技術(shù)。介紹了RCM2200微控制器核心模塊以及Dynamic C軟件開發(fā)環(huán)境,講述了如何利用Dynamic C語言通過RCM2200核心模塊實現(xiàn)UDP報文和異步串口數(shù)據(jù)的互相轉(zhuǎn)換。DynamicC是與RCM2200配套使用的軟件開發(fā)語言,它擁有豐富的庫函數(shù)以便程序員編程時調(diào)用,結(jié)果表明,運用該語言能實現(xiàn)基于RCM2200以太網(wǎng)與異步串口之間的成功通信。
        關(guān)鍵詞  嵌入式系統(tǒng);RCM2200;UDP報文;串口通信
        1 引言
            目前,嵌入式技術(shù)已經(jīng)廣泛滲入并應用到各領域,涉及到多種傳統(tǒng)及現(xiàn)代技術(shù),形成了前所未有的多學科、多領域的交叉與融合。由Z-World公司推出的RCM2200[1]是一款低成本的嵌入式微控制器核心模塊,它采用Dynamic C®[2]這一專門為Z-World產(chǎn)品創(chuàng)建的集成的C 編譯器、編輯器、鏈接器、裝載器和調(diào)試器,便于實現(xiàn)快速開發(fā)應用,加快產(chǎn)品投放到市場。
            UDP協(xié)議[3][4]是比較著名的傳輸層協(xié)議之一,它與TCP協(xié)議一樣是基于IP協(xié)議的,但與TCP不同的是它不需要協(xié)議層提供質(zhì)量保證,因此,在需要實時數(shù)據(jù)傳輸?shù)那闆r下應用比較廣泛。并且,因為不提供質(zhì)量保證,服務器沒有必要一直處于等待狀態(tài),從而大大減輕了服務器的負擔。在某些情況下,還可以根據(jù)需要給UDP報文加上一些質(zhì)量保證控制,有很大的靈活度。
            在不遠的將來,將設備與網(wǎng)絡相連將成為一種趨勢。在諸如GPS串口數(shù)據(jù)網(wǎng)絡收發(fā)以及某些語音傳輸、實時監(jiān)控等多種場合,實現(xiàn)以太網(wǎng)與異步串口數(shù)據(jù)之間的通信是非常必要的。本文介紹了一種基于RCM2200嵌入式微控制器核心模塊利用UDP報文實現(xiàn)網(wǎng)絡與串口互通的方法,可以迅速實現(xiàn)將串口與網(wǎng)絡相連接。
        2  系統(tǒng)原理及功能
            RCM2200采用Rabbit半導體公司推出的高性能8位器件-Rabbit2000型微處理器;帶RJ-45插口的內(nèi)置10Base-T端口簡化了網(wǎng)絡連接,便于開發(fā)帶以太網(wǎng)接口的監(jiān)控、通訊設備;配備有4個串行口,方便擴展聯(lián)接;擁有26根并行的I/O引線以及16根可設置的I/O引線,無須擴展即可完成一般的I/O任務;擁有256K Flash,128K SRAM, 用于代碼存儲和數(shù)據(jù)存儲;時間、日期、看門狗、定時器等一應俱全;且其采用雙列直插式引腳,尺寸僅為59 x 41 x 22 mm。這種結(jié)構(gòu)促進了嵌入式系統(tǒng)的快速開發(fā),并可實現(xiàn)集成的以太網(wǎng)連接。
        RCM2200系統(tǒng)的基本框架結(jié)構(gòu)如圖1所示。
        圖1  RCM2200系統(tǒng)結(jié)構(gòu)
            RCM2200采用Dynamic C®語言進行軟件開發(fā),與標準C語言相比,Dynamic C的改進和差異在于使得在功能強大的嵌入式系統(tǒng)上進行實時編程變得非常容易。 語言的擴展包括多任務和優(yōu)先多任務的構(gòu)造,當供電失敗時,能夠保護寫入變量, 能夠?qū)懭氲街袛喑绦蛑腥ァ藴蔆函數(shù)庫,特定板的外圍驅(qū)動,芯片外圍設備,以及其他的性能以源代碼的形式包含在Dynamic C中。完全支持匯編語言,在對時間要求較高的應用中,匯編代碼可以方便的與C代碼混用。
            在該開發(fā)系統(tǒng)中將RCM2200的以太網(wǎng)接口與當?shù)鼐钟蚓W(wǎng)相連,選擇一個串口與計算機的串口相連。由以太網(wǎng)發(fā)送UDP報文給RCM2200微控制器核心模塊經(jīng)過處理后通過串口發(fā)送給計算機,由計算機串口發(fā)送數(shù)據(jù)給RCM2200微控制器核心模塊經(jīng)過處理后通過其上的網(wǎng)絡口發(fā)送UDP報文給以太網(wǎng),從而實現(xiàn)基于RCM2200以太網(wǎng)和串口之間的通信。
        3  UDP協(xié)議的實現(xiàn)
            UDP協(xié)議是比較著名的傳輸層協(xié)議之一,它使用IP作為網(wǎng)絡層協(xié)議,為應用程序發(fā)送和接收數(shù)據(jù)報。但是,它提供無連接服務,是不可靠傳輸。因此,UDP報文主要用于需要實時數(shù)據(jù)傳輸?shù)那闆r,一次傳輸少量的數(shù)據(jù)。在某些對實時性要求很高的場合,利用UDP報文進行數(shù)據(jù)傳輸是非常必要的,但往往要采用一些可靠性方案,以防止有漏傳、誤傳的現(xiàn)象發(fā)生。
        3.1 客戶機/服務器程序設計模式
            客戶機/服務器的程序設計模式在網(wǎng)絡程序設計中被大量的應用。這種設計模式將整個系統(tǒng)分為兩大部分——服務器部分和客戶機部分。客戶機向服務器提出請求,服務器對請求作相應的處理將結(jié)果返回給客戶機。
            根據(jù)不同的實際情況,客戶機/服務器的通信存在對稱和非對稱兩種方式。在對稱的方式下,通信的每一方都可能扮演主從角色;在非對稱的方式下,一方不可改變的認為是主機,而另一方則是從機。無論是對稱的或是非對稱的,當服務被提供時必然存在客戶進程和服務進程。基于UDP協(xié)議的通信既可采用對稱方式也可采用非對稱方式。
        3.2  數(shù)據(jù)報套接字
            套接字(socket)是通信的基石,是支持TCP/IP協(xié)議的網(wǎng)絡通信的基本操作單元。它是網(wǎng)絡通信過程中端點的抽象表示,包含進行網(wǎng)絡通信必須的五種信息:連接使用的協(xié)議,本地主機的IP地址,本地進程的協(xié)議端口,遠地主機的IP地址,遠地進程的協(xié)議端口。
            UDP協(xié)議支持數(shù)據(jù)報套接字。這種套接字可以采用客戶/服務器模式,以全雙工方式工作,接收發(fā)送可以同時進行,但并不保證數(shù)據(jù)傳輸?shù)目煽啃浴⒂行蛐院蜔o重復性,需要由程序員負責管理數(shù)據(jù)報的排序和可靠性。
        3.3  使用Dynamic C實現(xiàn)UDP報文的傳輸
            Dynamic C提供了許多支持TCP/IP協(xié)議的庫函數(shù)。其中,DCRTCP.LIB是最主要的函數(shù)庫。
        下面將簡要介紹UDP協(xié)議下的基本通信流程。
        3.3.1  調(diào)用本地初始化函數(shù)
        void sock_init(void)
            該函數(shù)將使用默認配置初始化本地信息包驅(qū)動器以及DCRTCP.LIB函數(shù)庫。該函數(shù)必須在其他網(wǎng)絡庫函數(shù)被使用前進行調(diào)用。
        3.3.2  打開數(shù)據(jù)報套接字
        int udp_open( *s, lport, remote_IP, port, *data_handler ())
        其中的參數(shù)解釋如下:
        s : 指向UDP套接字的指針;
        lport : 本地協(xié)議端口;
        remote_IP : 可接受的遠地主機IP地址,如果該項為-1,則支持廣播通信;
        port : 可接受的遠地進程協(xié)議端口,如果該項為-1,則為廣播數(shù)據(jù)報;
        data_handler() : 如果接收到數(shù)據(jù)則調(diào)用該函數(shù);
        該函數(shù)的返回值,如果成功返回非零,否則返回零值。
        3.3.3  接收遠地主機發(fā)送的數(shù)據(jù)報
        int udp_recv( *s, *buf_recv, recv_len)
            當套接字初始化后用該函數(shù)掃描接收緩沖區(qū),,察看是否有數(shù)據(jù)報到達。其中,buf_recv : 指向用于存放已到達數(shù)據(jù)報的數(shù)組的指針;recv_len : 存放數(shù)據(jù)報的數(shù)組的大小。如果接收到數(shù)據(jù)報則返回數(shù)據(jù)報的長度;否則返回-1。
        3.3.4  發(fā)送數(shù)據(jù)報給遠地主機
         int udp_send( *s, *buf_send, send_len )
         調(diào)用該函數(shù)發(fā)送數(shù)據(jù)報給遠地主機。如果成功返回該數(shù)據(jù)報的長度,否則返回-1。
         buf_send : 指向待發(fā)送數(shù)據(jù)報的指針;
        send_len : 待發(fā)送數(shù)據(jù)報的長度。
        3.3.5  網(wǎng)絡信息處理函數(shù)
        int tcp_tick( *s )
            該函數(shù)將察看網(wǎng)絡連接狀態(tài),檢查數(shù)據(jù)報的到達情況,處理新到數(shù)據(jù)報并重傳丟失的數(shù)據(jù)報。若出現(xiàn)網(wǎng)絡連接被復位及套接字已關(guān)閉的情況或參量s為NULL,則返回值為零;否則返回非零值。
        3.3.6  關(guān)閉套接字
        void sock_close( *s )
            當數(shù)據(jù)傳送工作完成或傳送過程中發(fā)生錯誤時,可調(diào)用該函數(shù)關(guān)閉套接字
        4    串口通信的實現(xiàn)
        4.1  RS232電平與TTL電平的轉(zhuǎn)換
            PC機的串行接口是符合EIA RS-232C規(guī)范的外部總線標準接口,而RCM2200配備有四個串行接口,都是采用TTL電平,因此兩者之間必須進行電平轉(zhuǎn)換。以RCM2200的串行口C(位于核心模塊的J4插槽上)為例,電平轉(zhuǎn)換如圖2所示。


        圖2  RS232與TTL電平轉(zhuǎn)換圖
        4.2  使用Dynamic C實現(xiàn)串口數(shù)據(jù)的傳輸
            Dynamic C提供了一些與計算機串行口進行通信的函數(shù)可供用戶程序調(diào)用,下面簡要介紹其中的一部分。
        4.2.1  打開串行接口
        int serXopen( bard )
        bard : 長整型,每秒鐘傳送的比特數(shù)。
            該函數(shù)用于打開RCM2200的串行接口,由于RCM2200核心模塊擁有四個串行口,故X可根據(jù)需要取為A\B\C\D其中一個。在調(diào)用該函數(shù)之前,還必須先定義串行口的輸入輸出緩沖區(qū)大小,通常情況下設定為2n-1,否則就采用默認值31,但在編譯時會給出警告。該函數(shù)的返回值:成功則為1,否則為0。
        4.2.2  讀取PC機串行口數(shù)據(jù)
        int serXgetc()       /* X = A|B|C|D */
            程序可以調(diào)用該函數(shù)查詢串行口是否有字符來到,如果有,返回該字符值;否則,返回值-1。
        4.2.3  發(fā)送數(shù)據(jù)到PC機串行口
         int serXputs( *s )
         int serXwrite( s, length )  /* X = A|B|C|D */
            這兩個函數(shù)均可用于發(fā)送字符串給計算機的串行口,返回成功發(fā)送的字符數(shù)。
        s : 待發(fā)送字符串的首地址;
        length : 待發(fā)送字符串的長度。
        4.2.4  關(guān)閉串行口
        void serXclose()     /* X = A|B|C|D */
        該函數(shù)用于關(guān)閉已經(jīng)打開的串行口。
        5   實現(xiàn)以太網(wǎng)與串口之間的通信
        5.1   定義網(wǎng)絡以及串口初始化數(shù)據(jù)
            在程序的開頭,必須使用#define定義一些初始化數(shù)據(jù),比如:RCM2200所使用的本地IP地址以及端口,與之通信的遠地IP地址以及端口以及串口輸入輸出緩沖區(qū)的大小等等。
        5.2 主程序
            在主程序中調(diào)用PC機串口發(fā)送字符串給RCM2200經(jīng)過處理后再由RCM2200發(fā)送UDP報文給以太網(wǎng)以及RCM2200接收以太網(wǎng)發(fā)送來的UDP報文后再送給計算機的串行口兩個子程序。
        main()
        {      sock_init(); //初始化網(wǎng)絡庫函數(shù):   //打開串行口及網(wǎng)絡套接字for(;;;)
               tcp_tick(NULL);//察看套接字狀態(tài)
               init_comm();//網(wǎng)絡發(fā)報文串口接收
               comm_init();//串口發(fā)數(shù)據(jù)網(wǎng)絡接收   }
        5.3網(wǎng)絡發(fā)報文串口接收
            子程序init_comm() 使用庫函數(shù)udp_recv查詢RCM2200以太網(wǎng)接口是否有UDP報文來到,如果沒有則返回主程序,否則將UDP報文存放到buf_init數(shù)組中,然后調(diào)用serCputs(buf_init)通過RCM2200的串行口C發(fā)送到計算機的串行口。值得一提的是,當RCM2200接收到了一次報文之后,它將自動關(guān)閉接收報文的套接字,因此,如果還想接受下一次發(fā)送的報文,必須再次調(diào)用函數(shù)udp_open打開該套接字。
        5.4串口發(fā)字符串網(wǎng)絡接收
            子程序 comm_init()調(diào)用函數(shù)serCgetc()用于查詢計算機的串行口是否有數(shù)據(jù)到來,如果沒有則返回主程序,否則將接收到的字符存儲到buf_comm數(shù)組中,直到檢測到結(jié)束符到來,將字符串以UDP報文的形式通過函數(shù)udp_send發(fā)送給以太網(wǎng)。如果發(fā)送成功,則返回主程序等待下一次數(shù)據(jù)的到來,否則關(guān)閉該套接字后重新打開再返回主程序等待。
        5.5程序調(diào)試結(jié)果
            在該程序的調(diào)試過程中,利用Visual C++語言編寫了一個接收和發(fā)送UDP報文的程序用于以太網(wǎng)的計算機上,另外還使用了從網(wǎng)上下載的串口調(diào)試幫助軟件,結(jié)果表明,該程序能實現(xiàn)基于RCM2200以太網(wǎng)與異步串口之間的成功通信。
        結(jié)論
            RCM2200是為了促進嵌入式系統(tǒng)的快速開發(fā)和實現(xiàn)集成的以太網(wǎng)連接而設計的。集成的以太網(wǎng)口允許用戶通過使用經(jīng)濟的網(wǎng)絡軟件進行瞬間的本地連接或全球范圍的連接。另外,RCM2200還提供了四個串行口用于和其他設備的串行口進行數(shù)據(jù)交換。
            RCM2200使用Dynamic C軟件開發(fā)環(huán)境,支持C語言、匯編語言,擁有豐富的庫函數(shù)可供用戶調(diào)用,并具有單步編譯、斷點設置、單步執(zhí)行、代碼分解、監(jiān)視表達式等優(yōu)秀性能。
            使用Dynamic C接收和發(fā)送UDP報文時,由于網(wǎng)絡對該報文的傳輸不提供質(zhì)量保證,在每完成一次操作后,必須及時檢查套接字的狀態(tài),避免發(fā)生誤傳、漏傳以及套接字關(guān)閉等現(xiàn)象。在發(fā)送和接收串口數(shù)據(jù)時,要注意使RCM2200的串口數(shù)據(jù)傳輸波特率與PC機保持一致,這樣,才能保證正確傳輸。
        參考文獻
        【1】Z-World, Inc.  RabbitCore RCM2200 User’s Manual  2001年
        【2】Z-World, Inc.  Dynamic C premier User’s Manual
        1999年
        【3】Z-World, Inc.  Dynamic C TCP/IP software User’s Manual  2001年
        【4】謝希仁.計算機網(wǎng)絡.第三版.大連: 大連理工大學出版社,2000.200~201.

         

        狀 態(tài): 離線

        公司簡介
        產(chǎn)品目錄
        供應信息

        公司名稱: Digi International(香港)有限公司
        聯(lián) 系 人: 劉浩傳
        電  話: 021-51506898
        傳  真: 51506899
        地  址: 上海市徐匯區(qū)零陵路899號飛洲國際廣場26L
        郵  編: 200030
        主  頁:
         
        該廠商相關(guān)解決方案:
        電力遠程抄表系統(tǒng)
        鐵路通訊機房遠程監(jiān)控系統(tǒng)
        水情測報與大壩閘門監(jiān)控
        油井監(jiān)控系統(tǒng)
        石油管道遠程傳輸防竊油系統(tǒng)
        焰火控制系統(tǒng)
        取水泵站軟化水遠程監(jiān)控及鍋爐控制
        熱網(wǎng)監(jiān)控(黑龍江)
        由Rabbit2000微處理器構(gòu)成的網(wǎng)絡消防報警系統(tǒng)
        氫燃料電池控制器
        水質(zhì)實時遠程檢測系統(tǒng)
        更多方案...
        立即發(fā)送詢問信息在線聯(lián)系該解決方案廠商:
        用戶名: 密碼: 免費注冊為中華工控網(wǎng)會員
        請留下您的有效聯(lián)系方式,以方便我們及時與您聯(lián)絡

        關(guān)于我們 | 聯(lián)系我們 | 廣告服務 | 本站動態(tài) | 友情鏈接 | 法律聲明 | 不良信息舉報
        工控網(wǎng)客服熱線:0755-86369299
        版權(quán)所有 中華工控網(wǎng) Copyright©2022 Gkong.com, All Rights Reserved

        主站蜘蛛池模板: 风韵丰满妇啪啪区老老熟女杏吧| 久久亚洲国产精品久久| 国产精品自在自线视频| 成人性无码专区免费视频| 色又黄又爽18禁免费网站现观看 | 男人扒女人添高潮视频| 欧美色资源| 国产超碰人人做人人爰| 性色在线视频精品| 免费久久人人爽人人爽AV| 一区二区三区精品不卡| 日韩精品高清自在线| 亚洲激情视频一区二区三区| 亚洲精品国产av成拍色拍个| 国精品午夜福利视频不卡| 一级毛片网| 精品乱人伦一区二区三区| 亚洲成av人片一区二区| 国产av一区二区精品久久凹凸| 国产明星精品无码AV换脸| 日韩中文字幕精品一区在线| 国产中文字幕在线精品| 一本久久a久久免费精品不卡| 国产熟女av一区二区三区| 污网站在线观看视频| 天天躁日日躁狠狠躁中文字幕| 亚洲天堂精品一区二区| 婷婷四房播播| 老师扒下内裤让我爽了一夜 | 国产精品一区二区三区污| 91福利视频一区二区| 色欲香天天天综合网站无码| 精品一区二区不卡免费| 激情综合网五月激情五月| 国产色悠悠在线免费观看| 国产成人精品人人| 国产午夜福利一区二区三区| 四房播色综合久久婷婷| 色爱区综合激情五月激情| 开心五月婷婷综合网站| 日本美女性亚洲精品黄色|