新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于ARM9 的嵌入式多串口服務器設計

        基于ARM9 的嵌入式多串口服務器設計

        作者: 時間:2013-06-27 來源:網絡 收藏

        3.1 在Linux 系統中對的操作

        UART 的操作主要有: 數據發送、數據接收、產生中斷、設置波特率、loopback 模式、紅外模式和硬/軟流控模式7 部分。在Linux 中,所有設備文件一般都位于“/dev”下,其中對應的設備為“/dev /ttySx”,在Linux 下對設備的操作方法與對文件的操作方法一樣。下面就是應用的開發步驟。

        串口設置主要設置struct termios 結構體成員,具體的串口操作函數此處略去,串口操作流程如圖6 所示。

        3.2 Linux 網絡套接字編程步驟

        在Linux 中的網絡編程通過socket 接口進行。socket 是一種特殊的IO 接口,也是一種文件描述符,它是一種常用的進程之間的通信機制,通過它不僅能實現本地機器上進程間的通信,而且通過網絡能夠在不同機器上的進程間進行通信。

        串口系統網絡套接字編程步驟如圖7 所示。

        系統上電后,進入Linux 系統并自動運行裝載在其內的server 程序。作為, server 程序在開始運行時就為每一個打開的串口創建recvpcwritearm 和readarmsendpc 線程,并在網絡連接正常以及客戶端沒有執行關閉串口的操作時,每一個已打開串口對應的兩個線程將不會結束,這樣在系統滿負荷運行時,系統將同時開啟4 個線程。串口服務器主程序流程如圖8 所示,主函數實現套接字的初始化工作,建立兩路監聽套接字,分別初始化線程recvpcwritearmsocket[3000 + com]套接字和readarmsendpc socket[4000 + com]套接字com 為串行端口號。一旦接收到客戶端的連接請求,判斷客戶端請求的方式后,啟用相應的進程函數進行數據處理。

        4 試驗

        4.1 數據上行測試

        數據上行測試指串口設備發送信息到嵌入式串口服務器,通過嵌入式串口服務器將數據從以太網口傳輸出去。考慮實際使用過程中上行數據量較大,為了模擬工業現場接收大量的數據,以“1234567890abcdefghijklmnopqrstuvwsyz”構成的數據包進行模擬。

        測試方法為每秒鐘連續不斷地發送“1234567890abcdefghijklmnopqrstuvwsyz”,使之構成100KByte 的數據包,觀察客戶端程序能否正常收到這個數據包。試驗測試結果如圖9 所示,當從“終端串口設備”向上位機發送100KByte 數據時,在客戶端一側正常收到了這些數據,并且沒有丟失現象。

        4.2 數據下行測試

        數據下行測試指通過工控機上的以太網口發送數據給串口服務器,串口服務器接收以太網數據幀并進行格式轉換,同時判斷發往指定的串口設備。在實際使用過程中,上位機發送到串行終端設備的數據量較小,這些數據一般都是由操作人員輸入的數據,因此可以用單個數據流“1234567890abcDefghijklmnopqrstuvwxyz”進行測試。

        測試方法是利用運行在PC 機上的客戶端程序每秒鐘發送連續數據流,觀察另一臺PC 機上串口調試助手是否正常接收到數據。試驗測試結果如圖10 所示,當客戶端程序發送數據時,在終端串口設備上得到同樣的數據流。

        5 結束語

        筆者利用完全開源的Linux 操作系統,將其移植、裁剪后嵌入式串口服務器系統,選用非常適用于通信產品中的 內核的S3C2440A 微處理器和DM9000AEP 芯片擴展了100MByte 自適應以太網口,完成了硬件平臺; 然后用多線程網絡套接字編寫串口服務器程序,完成多串口服務器的軟件設計。最后用試驗證實了多串口服務器能夠很好地完成串口數據與以太網口數據的雙向傳輸,成功地將現有的串行通信設備接入以太網,利用網絡實現數據的遠程傳輸與遠程監控功能,實時監控設備的運行狀態。降低了設備的維修費用,縮短了開發周期。該產品開放標準設計,易于升級與維護,具有廣闊的應用前景。

        linux操作系統文章專題:linux操作系統詳解(linux不再難懂)

        linux相關文章:linux教程


        tcp/ip相關文章:tcp/ip是什么



        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 辰溪县| 许昌市| 德昌县| 临洮县| 襄樊市| 通州区| 平塘县| 如皋市| 东安县| 朔州市| 德化县| 长沙县| 麻城市| 孝昌县| 奉贤区| 伊金霍洛旗| 太谷县| 波密县| 广安市| 渑池县| 运城市| 三江| 延边| 桃江县| 木里| 富顺县| 含山县| 乌什县| 蓬安县| 嵊泗县| 车险| 杨浦区| 汨罗市| 岳阳市| 台东县| 余姚市| 东明县| 洪雅县| 乐业县| 桑日县| 左云县|