久久久91-久久久91精品国产一区二区-久久久91精品国产一区二区三区-久久久999国产精品-久久久999久久久精品

ABB
關注中國自動化產業發展的先行者!
CAIAC 2025
2025工業安全大會
OICT公益講堂
當前位置:首頁 >> 案例 >> 案例首頁

案例頻道

基于嵌入式系統的多通訊方式的研究與實現
  • 企業:     領域:機器視覺    
  • 點擊數:1871     發布時間:2005-03-25 16:32:00
  • 分享到:
介紹了在嵌入式µCLinux系統中將網絡通訊和串行端口通訊在一個通訊模塊中實現的一種方法。

 

1  引言

    計算機與外部設備進行通訊可以采用不同的接口實現,常用的是串行接口、網絡適配器和并行接口。其中串行通訊技術已經很成熟,具有便利和低成本的特點。隨著計算機網絡的不斷發展,網絡作為獲取信息的便捷手段,已經逐漸被人們所共識。帶有串口接入和網絡接入功能的嵌入式設備可以實現任何人在任何地方任何時間方便地獲取其運行數據,監控其運行狀況。嵌入式操作系統是嵌入式設備軟件的核心部分,由于它的存在,使得嵌入式設備的功能具有很大的擴展空間和伸縮性能。

    μCLinux是針對控制領域的嵌入式Linux操作系統,它沿襲了主流Linux的絕大部分特性,適合不具備內存管理單元MMU(Memory Management Unit)的微處理器/微控制器,支持多任務,具有完備的傳輸通訊控制協議/網際協議(TCP/IP協議)和點對點協議PPP(Point to Point Protocol),并支持多種網絡協議和文件系統。μCLinux以其優異的性能、免費開放的代碼等優點,博得眾多嵌入式開發者的青睞,在低端網絡設備、工業控制領域、數據采集和傳輸等方面有著越來越廣泛的應用。利用這種成熟、高效、可靠、模塊化、易于配置的操作系統來開發應用程序,無疑能進一步提高效率,并具有很好的可移植性。

    為此,利用TCP套接字方式、PPPd撥號方式以及高速串口通訊方式在嵌入式μCLinux系統間以及嵌入式μCLinux系統和Windows系統組成的通訊系統中,實現網絡數據通訊方案,充分利用μCLinux系統對多種通訊協議的支持優勢,實現多種通訊模式的自由選擇和通訊方式的轉換,完成傳遞數據信息、實時采集數據等功能。

2  通訊模塊的總體設計
2.1  通訊模塊的功能要求

    近年來,隨著光纖技術的不斷發展和完善,以太網已經成為人們進行數據傳輸和信息交流的重要手段,然而傳統的串口通訊方式由于其低廉的硬件成本和簡單便利的連接方式在數據傳輸中仍然占有重要位置。本嵌入式系統的硬件設計充分考慮了上述兩種通訊方式的優越性和提供設備的使用范圍的要求,提供了兩種通訊方式的硬件接口;通訊程序的設計充分考慮了對硬件資源的支持,并保證軟件具有良好的可靠性和維護方便性。

    整個系統的開發和運行過程中用到的通訊方式有Socket網絡通訊方式和COM口串行通訊方式兩類。其中串行通訊方式又可分為計算機與嵌入式設備直接通過串口連接的通訊方式和通過Modem撥號連接的通訊方式兩種。因此軟件要實現對上述三種通訊方式的支持,并保證通訊方式選擇的簡便性。

2.2  總體方案實現


圖1  通訊模塊工作流程

    考慮到該模塊的功能要求,在通訊模塊的設計中將這三種通訊方式集成到一個通訊系統中,通過一個控制類實現對通訊方式的控制。采用配置文件的方式將通訊方式和通訊參數寫入到該配置文件,這樣在選擇通訊方式時只需要在配置文件中修改相應的參數就可以實現,滿足系統對不同通訊方式轉換的簡單操作要求。通訊模塊的總體設計流程如圖1所示。

    嵌入式系統啟動后,軟件的運行會調用讀配置文件程序對系統的各種配置參數進行檢查。對于通訊模塊,主要配置項目是設備的連接類型和對應的基本參數,程序讀到正確配置后記錄下這些參數,進入通訊控制類程序判斷設備的連接類型并調用相應的連接程序。根據參數信息設置該連接所需要的配置,等待與外部設備的通訊。

3  Socket通訊程序設計
3.1  基本原理

    數據在以太網上的傳輸和接收都必須遵循以太網絡的通訊協議,在一系列以太網絡通訊協議中,核心協議是傳輸層的TCP/IP協議。TCP協議是面向連接的,通訊雙方保持一條通道,為了保證網絡傳輸的正確性和有效性,必須進行一系列復雜的糾錯和排序等處理[1]。網絡通訊中,基于TCP/IP協議的通訊方式有很多,根據應用需要,選用最常用的套接字Socket實現服務器端和客戶端(C/S)的數據通訊。

    μCLinux系統是嵌入式Linux的一個分支,帶有完整的TCP/IP協議,支持Socket規范。在實際應用中,把μCLinux系統的嵌入式裝置作為服務器端,外部與它連接的裝置作為客戶端。μCLinux系統中的服務器端應用程序,主要是用來接收客戶端的連接請求,接收和處理客戶端的信息,向客戶端發送計算結果和應答信息等。在開發μCLinux系統下的Socket程序時,采用面向連接的TCP-Socket,它提供了一種可靠的面向連接的數據傳輸方法,有自己的檢錯和糾錯機制,并且不管是對單個數據報,還是對于數據包,它提供了一種流式數據傳輸方式。

3.2  程序設計與實現[2]
    在μCLinux系統中用GNU C實現TCP套接字編程,關鍵是利用μCLinux系統的μClibc函數庫,服務器端程序就使用其通用接口函數(socket(), listen(), accept()等)完成[3]。服務器程序流程如圖2所示。


圖2  服務器端程序工作流程

    (1)  服務器程序的第一個操作是創建一個套接字,這是通過調用函數socket()實現的。Sockfd=socket(AF_INET, SOCK_STREAM, 0);
    (2)  調用bind()函數綁定服務器的地址和套接字,bind(sockfd, (struct sockaddr*)& seraddr, sizeof (struct sockaddr));
    (3)  服務器需要將當前與IP地址和端口號完成綁定的套接字轉換成偵聽套接字,調用listen()函數偵聽連接,listen(int sockfd, int backlog),其中sockfd是綁定后的文件描述符,backlog設置請求排隊的最大長度;
    (4)  服務器程序進入一個無條件循環,監聽來自客戶端的連接請求,在此過程中如果有客戶機請求連接,服務器程序就會調用accept()從偵聽套接字的連接隊列中接受一個連接請求,new_fd=accept(sockfd, (struct sockaddr*) &their_addr, &sin_size));
    (5)  服務器程序接收請求后,由vfork()創建子進程,子進程通過由accept()建立的套接字描述符和客戶機通訊,符程序繼續監聽來自客戶端的請求。需要注意的是μCLinux系統的API函數與標志的Linux基本相同,但其μClibc函數庫中多進程管理通過vfork()函數實現,而不是通常的fork()函數[4]。

4  串口通訊程序設計
4.1  基本原理
    串行口是計算機一種常用的接口,具有連接線少,通訊簡單,得到廣泛的使用。常用的串口是 RS-232-C 接口(又稱 EIA RS-232-C),它是在 1970 年由美國電子工業協會(EIA)聯合貝爾系統、 調制解調器廠家及計算機終端生產廠家共同制定的用于串行通訊的標準。

    串行通信協議分為同步協議和異步協議。異步協議的特點是一個字符一個字符傳輸,并且傳送一個字符總是以起始位開始,以停止位結束,字符之間沒有固定的時間間隔要求。每一個字符的前面都有一位起始位,字符本身有5~7位數據位組成,接著字符后面是一位校驗位(也可以沒有校驗位),最后是一位或一位半或二位停止位,停止位后面是不定長度的空閑位。同步協議分為面向字符的同步協議和面向比特的同步協議。面向字符的同步協議一次傳送由若干個字符組成的數據塊,并規定了10個字符作為這個數據塊的開頭與結束標志以及整個傳輸過程的控制信息,它們也叫做通信控制字;面向比特的同步協議特點是所傳輸的一幀數據可以是任意位,而且它是靠約定的位組合模式,而不是靠特定字符來標志幀的開始和結束。

4.2  程序設計與實現
    μCLinux對串口協議提供了完整的支持,由于Linux系統在處理任何設備時都把設備看作一個文件,因此對于串口設備,Linux系統也把對串口的操作看作對文件I/O的操作,調用系統庫函數open(), read(), write()等實現串口的創建和對串口數據的讀寫等操作[5]。程序流程如圖3所示。


圖3  串口程序工作流程

    (1)  串口程序的第一個操作是創建一個串口文件,(Linux系統對串口設備有自己的定義方式,/dev/ttyS0為Windows中的COM0,/dev/ttyS1為Windows中的COM1,以此類推。)調用函數open()實現,comfd=open("/dev/ttyS0", O_RDWD);
    (2)  接下來就是設置串口參數,包括波特率、數據位、流控制、開始位和停止位等,這些參數是保證串口能否正確通訊的條件;
    (3)  正確設置了通訊參數后,就可以讀取該串口中的數據,數據的讀取是調用read()函數實現的,readlen=read(comfd, char *buff, int bufflen);
    (4)  如果系統需要向外界發送數據,要調用write()函數實現,writelen=write(comfd, char *buff, int bufflen)。

5  遠程串口通訊的設計和實現

    本系統要求實現在不具備以太網線路的條件下,通過電話線和Modem撥號方式實現該嵌入式設備與外部設備的連接通訊方式。Linux系統提供了PPP協議來實現Modem的撥出和撥入功能。PPP協議提供了一種通過串行點對點聯接傳輸數據報的方式。它由一種在串行封裝數據報的方式,擴展聯接控制協議LCP和用來建立及配置不同網絡層協議的家族網絡控制協議NCP三部份組成。封裝方案由內核驅動代碼來提供,pppd(ppp daemon)提供基本的LCP認證支持,建立和配置IP的網絡控制協議NCP。一個PPP會話分為四個步驟:連接建立、連接質量控制、網絡層協議配置、連接終止;提供了密碼認證協議(PAP)或者邀請握手認證協議(CHAP)來保證連接安全[6]。

    在嵌入式系統中,只要安裝有pppd工具,配置該嵌入式系統作為PPP服務器端,就可以方便實現Modem的撥入及與外部設備的通訊。本部分程序的功能相對簡單,主要實現打開本地串口設置串口的通訊參數(與串口通訊的設置方法相同),初始化與串口連接的Modem,然后等待外部的撥入轉給pppd程序處理。

6  結語

    工程應用中,嵌入式設備能否對多種通訊方式提供支持,是衡量該設備是否具有廣泛使用性的關鍵指標之一。不僅提供網絡接口,還提供了傳統的串行接口的嵌入式設備,本文提供了將多種通訊方式的通訊程序集成到一個通訊模塊中的一種方法,不僅可以實現系統對多重通訊方式的支持要求,同時實現了通訊方式選擇的簡便性和通訊參數配置的簡單性。

熱點新聞

推薦產品

x
  • 在線反饋
1.我有以下需求:



2.詳細的需求:
姓名:
單位:
電話:
郵件:
主站蜘蛛池模板: 91探花| 麻豆激情 | 狠狠狠色丁香婷婷综合久久五月 | 国产亚洲欧美久久精品 | 3至13呦女毛片 | 一级α一级α片免费观看网站 | 欧美亚洲国产成人精品 | 国产伦精品一区二区三区视频小说 | 午夜性影院 | 国产做a视频免费观看 | 拍拍拍又黄又爽无挡视频免费 | 在线免费黄色 | 青青青青手机在线视频观看国产 | 欧美一级毛片高清免费观看 | 成年女美黄网站大全免费播放 | 老妇综合久久香蕉蜜桃 | 国产成人在线网址 | 影音先锋一区二区三区视频 | 人与牲动交xxxxbbbb | 欧美综合国产精品日韩一 | 国产成人黄网在线免 | 国产大片好看免费播放 | 1769国产精品免费视频 | 国产精品主播在线观看 | 国产色综合一区二区三区 | 久久久精品午夜免费不卡 | 国产亚洲一区二区三区不卡 | 1024cao社区榴地址一地址二 | 日本国产最新一区二区三区 | 久久久精品久久视频只有精品 | 亚洲 欧美 日韩 在线 香蕉 | 欧美黑人成人www在线观看 | 国产曰批视频免费观看完 | 人妖xxxx| 国产一级在线播放 | a毛片基地免费全部香蕉 | 欧美一区精品 | 日韩久久精品 | 男女爱爱免费高清 | 222www免费观看 | 伊人久久综合网亚洲 |