首頁 | 收藏本站 | 免費注冊|申請VIP會員|固定排名|廣告服務
中國電氣自動化網首頁
PLC | 電  機 | 變 頻 器 | 人機界面 | 運動伺服 | 控制傳動 | 自動化軟件
DCS | 傳感器 | 通信網絡 | 現場總線 | 數據采集 | 電氣開關 | 數傳測控
電源 | 嵌入式 | 儀器儀表 | 低壓電器 | 機器視覺 | 工業安全 | 工控機
模具 | 電線電纜 | 電子元件 | 成套設備 | 液壓氣動 | 制 冷
機床 | 電力能源 | 機械設備 | 石油化工 | 礦業冶金 | 水工業
物流 | 軌道交通 | 汽車電子 | 工程機械 | 輸 配 電 | 電 梯
產品 企業 供求 新聞
下載 視頻 招聘 期刊 會展 培訓 庫存 論壇 訪談 維修  
熱詞:嵌入式 傳感器 電源 主板 工控機 PLC 人機界面 變頻器

您現在的位置:中國電氣自動化網首頁 >> 文庫首頁>>詳細信息

利用RCM2200實現以太網與異步串口的通信 
(發布日期:2009-6-19 9:48:06) 來源:Rabbit Semiconductor
 
   
摘要  本文研究基于RCM2200嵌入式系統對網絡和串口的編程技術。介紹了RCM2200微控制器核心模塊以及Dynamic C軟件開發環境,講述了如何利用Dynamic C語言通過RCM2200核心模塊實現UDP報文和異步串口數據的互相轉換。DynamicC是與RCM2200配套使用的軟件開發語言,它擁有豐富的庫函數以便程序員編程時調用,結果表明,運用該語言能實現基于RCM2200以太網與異步串口之間的成功通信。
關鍵詞  嵌入式系統;RCM2200;UDP報文;串口通信
1 引言
    目前,嵌入式技術已經廣泛滲入并應用到各領域,涉及到多種傳統及現代技術,形成了前所未有的多學科、多領域的交叉與融合。由Z-World公司推出的RCM2200[1]是一款低成本的嵌入式微控制器核心模塊,它采用Dynamic C®[2]這一專門為Z-World產品創建的集成的C 編譯器、編輯器、鏈接器、裝載器和調試器,便于實現快速開發應用,加快產品投放到市場。
    UDP協議[3][4]是比較著名的傳輸層協議之一,它與TCP協議一樣是基于IP協議的,但與TCP不同的是它不需要協議層提供質量保證,因此,在需要實時數據傳輸的情況下應用比較廣泛。并且,因為不提供質量保證,服務器沒有必要一直處于等待狀態,從而大大減輕了服務器的負擔。在某些情況下,還可以根據需要給UDP報文加上一些質量保證控制,有很大的靈活度。
    在不遠的將來,將設備與網絡相連將成為一種趨勢。在諸如GPS串口數據網絡收發以及某些語音傳輸、實時監控等多種場合,實現以太網與異步串口數據之間的通信是非常必要的。本文介紹了一種基于RCM2200嵌入式微控制器核心模塊利用UDP報文實現網絡與串口互通的方法,可以迅速實現將串口與網絡相連接。
2  系統原理及功能
    RCM2200采用Rabbit半導體公司推出的高性能8位器件-Rabbit2000型微處理器;帶RJ-45插口的內置10Base-T端口簡化了網絡連接,便于開發帶以太網接口的監控、通訊設備;配備有4個串行口,方便擴展聯接;擁有26根并行的I/O引線以及16根可設置的I/O引線,無須擴展即可完成一般的I/O任務;擁有256K Flash,128K SRAM, 用于代碼存儲和數據存儲;時間、日期、看門狗、定時器等一應俱全;且其采用雙列直插式引腳,尺寸僅為59 x 41 x 22 mm。這種結構促進了嵌入式系統的快速開發,并可實現集成的以太網連接。
RCM2200系統的基本框架結構如圖1所示。
圖1  RCM2200系統結構
    RCM2200采用Dynamic C®語言進行軟件開發,與標準C語言相比,Dynamic C的改進和差異在于使得在功能強大的嵌入式系統上進行實時編程變得非常容易。 語言的擴展包括多任務和優先多任務的構造,當供電失敗時,能夠保護寫入變量, 能夠寫入到中斷程序中去。標準C函數庫,特定板的外圍驅動,芯片外圍設備,以及其他的性能以源代碼的形式包含在Dynamic C中。完全支持匯編語言,在對時間要求較高的應用中,匯編代碼可以方便的與C代碼混用。
    在該開發系統中將RCM2200的以太網接口與當地局域網相連,選擇一個串口與計算機的串口相連。由以太網發送UDP報文給RCM2200微控制器核心模塊經過處理后通過串口發送給計算機,由計算機串口發送數據給RCM2200微控制器核心模塊經過處理后通過其上的網絡口發送UDP報文給以太網,從而實現基于RCM2200以太網和串口之間的通信。
3  UDP協議的實現
    UDP協議是比較著名的傳輸層協議之一,它使用IP作為網絡層協議,為應用程序發送和接收數據報。但是,它提供無連接服務,是不可靠傳輸。因此,UDP報文主要用于需要實時數據傳輸的情況,一次傳輸少量的數據。在某些對實時性要求很高的場合,利用UDP報文進行數據傳輸是非常必要的,但往往要采用一些可靠性方案,以防止有漏傳、誤傳的現象發生。
3.1 客戶機/服務器程序設計模式
    客戶機/服務器的程序設計模式在網絡程序設計中被大量的應用。這種設計模式將整個系統分為兩大部分——服務器部分和客戶機部分。客戶機向服務器提出請求,服務器對請求作相應的處理將結果返回給客戶機。
    根據不同的實際情況,客戶機/服務器的通信存在對稱和非對稱兩種方式。在對稱的方式下,通信的每一方都可能扮演主從角色;在非對稱的方式下,一方不可改變的認為是主機,而另一方則是從機。無論是對稱的或是非對稱的,當服務被提供時必然存在客戶進程和服務進程。基于UDP協議的通信既可采用對稱方式也可采用非對稱方式。
3.2  數據報套接字
    套接字(socket)是通信的基石,是支持TCP/IP協議的網絡通信的基本操作單元。它是網絡通信過程中端點的抽象表示,包含進行網絡通信必須的五種信息:連接使用的協議,本地主機的IP地址,本地進程的協議端口,遠地主機的IP地址,遠地進程的協議端口。
    UDP協議支持數據報套接字。這種套接字可以采用客戶/服務器模式,以全雙工方式工作,接收發送可以同時進行,但并不保證數據傳輸的可靠性、有序性和無重復性,需要由程序員負責管理數據報的排序和可靠性。
3.3  使用Dynamic C實現UDP報文的傳輸
    Dynamic C提供了許多支持TCP/IP協議的庫函數。其中,DCRTCP.LIB是最主要的函數庫。
下面將簡要介紹UDP協議下的基本通信流程。
3.3.1  調用本地初始化函數
void sock_init(void)
    該函數將使用默認配置初始化本地信息包驅動器以及DCRTCP.LIB函數庫。該函數必須在其他網絡庫函數被使用前進行調用。
3.3.2  打開數據報套接字
int udp_open( *s, lport, remote_IP, port, *data_handler ())
其中的參數解釋如下:
s : 指向UDP套接字的指針;
lport : 本地協議端口;
remote_IP : 可接受的遠地主機IP地址,如果該項為-1,則支持廣播通信;
port : 可接受的遠地進程協議端口,如果該項為-1,則為廣播數據報;
data_handler() : 如果接收到數據則調用該函數;
該函數的返回值,如果成功返回非零,否則返回零值。
3.3.3  接收遠地主機發送的數據報
int udp_recv( *s, *buf_recv, recv_len)
    當套接字初始化后用該函數掃描接收緩沖區,,察看是否有數據報到達。其中,buf_recv : 指向用于存放已到達數據報的數組的指針;recv_len : 存放數據報的數組的大小。如果接收到數據報則返回數據報的長度;否則返回-1。
3.3.4  發送數據報給遠地主機
 int udp_send( *s, *buf_send, send_len )
 調用該函數發送數據報給遠地主機。如果成功返回該數據報的長度,否則返回-1。
 buf_send : 指向待發送數據報的指針;
send_len : 待發送數據報的長度。
3.3.5  網絡信息處理函數
int tcp_tick( *s )
    該函數將察看網絡連接狀態,檢查數據報的到達情況,處理新到數據報并重傳丟失的數據報。若出現網絡連接被復位及套接字已關閉的情況或參量s為NULL,則返回值為零;否則返回非零值。
3.3.6  關閉套接字
void sock_close( *s )
    當數據傳送工作完成或傳送過程中發生錯誤時,可調用該函數關閉套接字
4    串口通信的實現
4.1  RS232電平與TTL電平的轉換
    PC機的串行接口是符合EIA RS-232C規范的外部總線標準接口,而RCM2200配備有四個串行接口,都是采用TTL電平,因此兩者之間必須進行電平轉換。以RCM2200的串行口C(位于核心模塊的J4插槽上)為例,電平轉換如圖2所示。


圖2  RS232與TTL電平轉換圖
4.2  使用Dynamic C實現串口數據的傳輸
    Dynamic C提供了一些與計算機串行口進行通信的函數可供用戶程序調用,下面簡要介紹其中的一部分。
4.2.1  打開串行接口
int serXopen( bard )
bard : 長整型,每秒鐘傳送的比特數。
    該函數用于打開RCM2200的串行接口,由于RCM2200核心模塊擁有四個串行口,故X可根據需要取為A\B\C\D其中一個。在調用該函數之前,還必須先定義串行口的輸入輸出緩沖區大小,通常情況下設定為2n-1,否則就采用默認值31,但在編譯時會給出警告。該函數的返回值:成功則為1,否則為0。
4.2.2  讀取PC機串行口數據
int serXgetc()       /* X = A|B|C|D */
    程序可以調用該函數查詢串行口是否有字符來到,如果有,返回該字符值;否則,返回值-1。
4.2.3  發送數據到PC機串行口
 int serXputs( *s )
 int serXwrite( s, length )  /* X = A|B|C|D */
    這兩個函數均可用于發送字符串給計算機的串行口,返回成功發送的字符數。
s : 待發送字符串的首地址;
length : 待發送字符串的長度。
4.2.4  關閉串行口
void serXclose()     /* X = A|B|C|D */
該函數用于關閉已經打開的串行口。
5   實現以太網與串口之間的通信
5.1   定義網絡以及串口初始化數據
    在程序的開頭,必須使用#define定義一些初始化數據,比如:RCM2200所使用的本地IP地址以及端口,與之通信的遠地IP地址以及端口以及串口輸入輸出緩沖區的大小等等。
5.2 主程序
    在主程序中調用PC機串口發送字符串給RCM2200經過處理后再由RCM2200發送UDP報文給以太網以及RCM2200接收以太網發送來的UDP報文后再送給計算機的串行口兩個子程序。
main()
{      sock_init(); //初始化網絡庫函數:   //打開串行口及網絡套接字for(;;;)
       tcp_tick(NULL);//察看套接字狀態
       init_comm();//網絡發報文串口接收
       comm_init();//串口發數據網絡接收   }
5.3網絡發報文串口接收
    子程序init_comm() 使用庫函數udp_recv查詢RCM2200以太網接口是否有UDP報文來到,如果沒有則返回主程序,否則將UDP報文存放到buf_init數組中,然后調用serCputs(buf_init)通過RCM2200的串行口C發送到計算機的串行口。值得一提的是,當RCM2200接收到了一次報文之后,它將自動關閉接收報文的套接字,因此,如果還想接受下一次發送的報文,必須再次調用函數udp_open打開該套接字。
5.4串口發字符串網絡接收
    子程序 comm_init()調用函數serCgetc()用于查詢計算機的串行口是否有數據到來,如果沒有則返回主程序,否則將接收到的字符存儲到buf_comm數組中,直到檢測到結束符到來,將字符串以UDP報文的形式通過函數udp_send發送給以太網。如果發送成功,則返回主程序等待下一次數據的到來,否則關閉該套接字后重新打開再返回主程序等待。
5.5程序調試結果
    在該程序的調試過程中,利用Visual C++語言編寫了一個接收和發送UDP報文的程序用于以太網的計算機上,另外還使用了從網上下載的串口調試幫助軟件,結果表明,該程序能實現基于RCM2200以太網與異步串口之間的成功通信。
結論
    RCM2200是為了促進嵌入式系統的快速開發和實現集成的以太網連接而設計的。集成的以太網口允許用戶通過使用經濟的網絡軟件進行瞬間的本地連接或全球范圍的連接。另外,RCM2200還提供了四個串行口用于和其他設備的串行口進行數據交換。
    RCM2200使用Dynamic C軟件開發環境,支持C語言、匯編語言,擁有豐富的庫函數可供用戶調用,并具有單步編譯、斷點設置、單步執行、代碼分解、監視表達式等優秀性能。
    使用Dynamic C接收和發送UDP報文時,由于網絡對該報文的傳輸不提供質量保證,在每完成一次操作后,必須及時檢查套接字的狀態,避免發生誤傳、漏傳以及套接字關閉等現象。在發送和接收串口數據時,要注意使RCM2200的串口數據傳輸波特率與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】謝希仁.計算機網絡.第三版.大連: 大連理工大學出版社,2000.200~201.
 
Rabbit Semiconductor
所在區域: 上海.上海 郵編: 200030
公司地址: 上海徐匯區零陵路899號 聯系人:盛衛東 先生 (空)
辦公電話: 021-51506898 傳真: 空
移動電話: 電郵: 登錄查看或通過本網留言
公司主頁: http://www.digi.com.cn
通過中國電氣自動化網在線聯系該用戶:
關于:
需求意向:
* 驗證碼: 點擊可刷新
 
用戶: 密碼:  
如果您還不是中國電氣自動化網(m.xn524.cn)的注冊用戶,立刻免費注冊

   企業新聞 更多
· 皮爾磁:PNOZmulti升級指...
· 皮爾磁的一站式機器驗收安全服務...
· 皮爾磁:《人與自動化》新刊:聚焦...
· 皮爾磁亮相南京智造大會,展示未來...
· 皮爾磁:機械安全與網絡安全必須一...
· 皮爾磁:你的未來,值得一次“安全...
· 皮爾磁:法規和標準同步升級,AG...
· 皮爾磁:安全掃描儀PSENsca...
  產品新聞 更多
· 皮爾磁:PNOZmulti軟件更...
· 皮爾磁:構筑工業數字時代的“雙子...
· 皮爾磁:CRA全面解析:您的產品...
· 皮爾磁:PNOZmulti軟件V...
· 皮爾磁:硬核物流“黑科技”,無懼...
· 皮爾磁:靈活安裝,操作升級...
· 皮爾磁產品斬獲CEC年度最佳產品...
· 皮爾磁即將亮相SPS2025:助...

廣告服務 | 關于我們 | 網站地圖 | 分類索引 | 服務條款 | VIP會員服務 |《電氣自動化企業大全》| 版權聲明

客服專線:0898-68552405     媒體合作QQ:910167442
中國電子商務服務聯盟成員單位 瓊ICP備17003754號
中國電氣自動化網 版權所有 © Copyright By Electric Automation of China

91老司机福利 在线| 在线不卡一区二区| 三妻四妾完整版在线观看电视剧 | 懂色一区二区三区免费观看| 青青草视频在线免费观看| 久久黄色网页| 在线视频网站| 久久aⅴ乱码一区二区三区| 探花国产精品| 日韩中文字幕区一区有砖一区| 自拍偷拍第1页| 日韩av一区二| 岛国最新视频免费在线观看| 美国av一区二区| 国产精品一区二区三区四区色| 韩国女主播成人在线观看| 黄色av免费在线看| 成人久久视频在线观看| 中文在线手机av| 国产人妖乱国产精品人妖| 欧美日韩国产观看视频| 亚洲色欲色欲www在线观看| 欧美videos粗暴| 一本到一区二区三区| 精品99在线| 日韩精品视频在线观看网址| 99精品久久久| 在线一二三区| 成人不卡免费av| 国产精品xx| 亚洲同性gay激情无套| 日韩精品一区二区三区免费视频| 欧美亚洲动漫制服丝袜| 97精品在线| 秋霞在线观看av| 国产剧情一区二区| 国产乱码精品一区二三赶尸艳谈| 亚洲激情综合网| 国产在线播放精品| 精品国产第一区二区三区观看体验| 亚洲片区在线| 天天影视久久综合| 国产精品成人一区二区三区夜夜夜| 天堂综合在线播放| 538prom精品视频线放| 亚洲经典三级| 香蕉视频免费在线播放| 亚洲欧美另类小说视频| 日韩在线黄色| 黄色激情网站| 成人午夜在线视频| 日本在线一区二区| 精品国免费一区二区三区| 日韩成人免费在线| 欧美另类tv| 日韩欧美在线免费| 一区二区自拍| 超碰在线免费公开| 欧美日韩国产一区在线| 欧美日本二区| eeuss影院在线播放| 亚洲欧美另类图片小说| 日本久久黄色| 亚洲最大黄色| 国产精品短视频| 欧美色图在线播放| 精品亚洲成a人片在线观看| 国产精品久久久久婷婷二区次| 日韩大尺度在线观看| 九色免费视频| 国产日产亚洲精品系列| 蜜桃a∨噜噜一区二区三区| 久久白虎精品| 国产精品久久久久久久久久久免费看| 欧美激情影院| 免费高清在线| 亚洲免费观看在线观看| 精品视频免费| lutube成人福利在线观看| 亚洲成人中文在线| 亚洲伦伦在线| 自拍在线观看| 91精选在线观看| 国产自产v一区二区三区c| 久久久加勒比| caoporen人人| 国产精品对白交换视频 | 9191在线播放| 欧美午夜一区二区三区| 日本大胆欧美人术艺术动态| 久久91导航| 亚洲人成网站色ww在线| 国产日韩一级二级三级| 久久亚洲专区| 性网站在线观看| 91精品国产色综合久久不卡蜜臀| 精品午夜一区二区三区在线观看| 欧美综合社区国产| 久草免费在线播放| 一区二区三区中文字幕精品精品 | 久久精品视频免费看| 欧美在线影院一区二区| 国产老妇另类xxxxx| 天堂99x99es久久精品免费| 韩国中文免费在线视频| 91久久香蕉国产日韩欧美9色| 卡一卡二国产精品| 加勒比视频一区| 99se视频在线观看| 在线91免费看| 久久久久久久综合色一本| 午夜精品一区二区三区国产| 中文在线资源| 久草免费在线播放| 婷婷丁香久久五月婷婷| 精品一区二区三区在线观看| 日韩欧美国产大片| a级影片在线| 日韩av一区在线| 亚洲欧美二区三区| 老司机久久99久久精品播放免费| 日本成人手机在线| 95在线视频| 精品国一区二区三区| 国产精品久久午夜| 日韩激情一区二区| 五月天亚洲一区| a级片在线免费| 男人午夜天堂| 色哟哟欧美精品| 91热门视频在线观看| 一本色道久久综合一区| 精品一区二区三区亚洲| 日本综合在线| 日韩精品www| 亚洲成av人影院在线观看网| 国产精品亚洲一区二区三区在线| 成人精品久久| 国产一区二区三区四区五区3d| 桃花色综合影院| 欧美大片免费久久精品三p| 久久日一线二线三线suv| 免费在线播放第一区高清av| 日韩精品福利一区二区三区| 僵尸再翻生在线观看| 午夜爽爽视频| 欧洲精品一区二区| 国产精品―色哟哟| 激情成人午夜视频| 欧美伊人久久| 美女视频亚洲色图| 男人皇宫亚洲男人2020| 国产视频第一区| 国产视频一区在线| 欧美性极品少妇精品网站| 91在线你懂得| 美女看a上一区| 成人亚洲一区| 日本一区二区三区视频在线看 | 精品国产乱码久久久久久天美 | 精品视频久久久久久| 91久久精品国产91性色tv| 国产偷国产偷精品高清尤物| 毛片av一区二区| 国色天香一区二区| 欧美**字幕| 日韩欧美一级| 国产不卡网站| 国产在线高清理伦片a| 国产导航在线| 亚洲精品720p| 3d成人动漫网站| 黑人巨大精品欧美一区二区三区| 欧美激情一区二区三区全黄 | 欧美freesex8一10精品| 成人在线视频播放| 最新日本在线观看| 精品av中文字幕在线毛片| 交换国产精品视频一区| 亚洲变态欧美另类捆绑| 欧美欧美午夜aⅴ在线观看| 亚洲成人午夜电影| 国产精品天美传媒沈樵| 久久香蕉国产线看观看99| 老司机一区二区| 亚洲激情影院| 欧美精品色网| 在线成人直播| 久久裸体网站| 精品视频亚洲| 天天躁日日躁成人字幕aⅴ| 91国产免费观看| 搞黄视频在线观看| 亚洲人在线视频| 亚洲国产精品99| 精品日产卡一卡二卡麻豆| 久久久亚洲精品一区二区三区 | 亚洲大片精品永久免费| 久久久三级国产网站| 成人avav在线|