孫曉曄,成 彬(1.石家莊開發(fā)區(qū)冀科雙實科技有限公司,河北 石家莊 050081;2.河北省科學院應(yīng)用數(shù)學研究所,河北 石家莊 050081;3.河北省信息安全認證工程技術(shù)研究中心,河北 石家莊 050081)
串口轉(zhuǎn)以太網(wǎng)模塊配置軟件設(shè)計及實現(xiàn)
孫曉曄1,2,成 彬2,3
(1.石家莊開發(fā)區(qū)冀科雙實科技有限公司,河北 石家莊 050081;2.河北省科學院應(yīng)用數(shù)學研究所,河北 石家莊 050081;3.河北省信息安全認證工程技術(shù)研究中心,河北 石家莊 050081)
采用串口轉(zhuǎn)以太網(wǎng)模塊使現(xiàn)有串口設(shè)備具備聯(lián)網(wǎng)功能是一種低成本實用的解決方案。在使用之前,需要根據(jù)具體應(yīng)用環(huán)境對串口轉(zhuǎn)以太網(wǎng)模塊的串口參數(shù)以及網(wǎng)絡(luò)參數(shù)進行設(shè)置。對上位機與串口轉(zhuǎn)以太網(wǎng)模塊間的通信協(xié)議進行了詳細闡述,采用UDP廣播通信方式,由上位機通過網(wǎng)口對模塊進行參數(shù)配置。在Visual Studio 2012下,用C#編程實現(xiàn)了一套配置軟件。配置過程中,上位機和模塊可以跨網(wǎng)段通信,避免需預(yù)知模塊初始IP以及更改上位機IP地址的麻煩,使用更方便。
通用同步/異步串行接收/發(fā)送器;以太網(wǎng);通信協(xié)議
長期以來,串行通信方式在數(shù)據(jù)采集、數(shù)據(jù)監(jiān)控、安防、醫(yī)療等很多領(lǐng)域應(yīng)用普遍,但隨著Internet的發(fā)展和應(yīng)用需求的提升,其局限性也日益凸顯:通信距離短、速率低、網(wǎng)絡(luò)特性差等[1]。同時,物聯(lián)網(wǎng)的迅猛發(fā)展,使得嵌入式設(shè)備聯(lián)網(wǎng)的需求越來越迫切。
淘汰現(xiàn)有串口設(shè)備,研發(fā)能聯(lián)網(wǎng)的新產(chǎn)品需要投入大量的時間和人力物力,相比之下,采用串口轉(zhuǎn)以太網(wǎng)技術(shù),只需增加串口轉(zhuǎn)以太網(wǎng)模塊,而無需淘汰原先的串口設(shè)備,不僅可以提高設(shè)備利用率,還可以降低開發(fā)成本、縮短開發(fā)周期,輕松實現(xiàn)串口設(shè)備聯(lián)網(wǎng)。
串口轉(zhuǎn)以太網(wǎng),實際就是將串口數(shù)據(jù)作為TCP/IP的應(yīng)用層數(shù)據(jù),用 TCP/IP封裝傳輸[2-3]。本文主要完成串口轉(zhuǎn)以太網(wǎng)模塊上位機配置軟件的設(shè)計,根據(jù)上位機和串口轉(zhuǎn)以太網(wǎng)模塊間的通信協(xié)議,利用UDP廣播方式,完成模塊的參數(shù)配置,方便用戶對模塊的使用。
串口轉(zhuǎn)以太網(wǎng)實際上就是將串行通信數(shù)據(jù)轉(zhuǎn)化為網(wǎng)絡(luò)數(shù)據(jù)包發(fā)出,將收到的網(wǎng)絡(luò)數(shù)據(jù)包用串行通信的方式發(fā)出,從而實現(xiàn)串口與網(wǎng)口之間數(shù)據(jù)的透明傳輸[4-5]。
本文采用USR-TCP232-E45串口轉(zhuǎn)以太網(wǎng)模塊。該模塊搭載ARM處理器,采用Cortex-M3內(nèi)核,內(nèi)部集成了LWIP協(xié)議棧,速度快,功耗低,工作穩(wěn)定可靠[6]。模塊在使用之前需配置的參數(shù)包括:串口參數(shù)[7](波特率、數(shù)據(jù)位、校驗位、停止位)和網(wǎng)絡(luò)參數(shù)(工作模式、IP地址、端口號、子網(wǎng)掩碼、網(wǎng)關(guān)等)。
對串口轉(zhuǎn)以太網(wǎng)模塊進行參數(shù)配置,需要上位機按照一定的通信協(xié)議向模塊發(fā)送相應(yīng)命令(數(shù)據(jù)報文)。
通信協(xié)議由報文頭、報文長度、報文內(nèi)容組成,上位機發(fā)送的報文在末尾還帶1 B的校驗碼,模塊對上位機的響應(yīng)不帶校驗,如表1所示。在通信協(xié)議中加入校驗?zāi)軌蚝芎玫亟鉀Q傳輸誤碼的問題;接收方對收到的數(shù)據(jù)進行校驗,如果校驗值不正確,則丟棄本包數(shù)據(jù),并通知發(fā)送方。
表1 上位機配置軟件與串口轉(zhuǎn)以太網(wǎng)模塊之間的通信協(xié)議報文構(gòu)成
報文頭值為0xFF;報文長度為報文內(nèi)容所占的字節(jié)數(shù),由于報文內(nèi)容不同報文長度也會不同;校驗碼取報文長度和報文內(nèi)容各字節(jié)之和。報文內(nèi)容中只有控制碼是必需的,用來標識不同的命令操作,MAC地址、用戶名密碼、參數(shù)由于控制碼的不同可能不是必需的。
下位機返回的報文與上位機發(fā)送的報文格式類似,但是不帶校驗,響應(yīng)報文中控制碼字段表示本報文是對上位機發(fā)出的哪條命令的響應(yīng)。
發(fā)送搜索命令,模塊會返回36 B的數(shù)據(jù),包括模塊的IP地址、MAC地址,之后可以利用MAC地址對該模塊進行其他參數(shù)的設(shè)置。
讀取設(shè)置,返回 256 B,包括基礎(chǔ)參數(shù)(IP地址、網(wǎng)關(guān)、子網(wǎng)掩碼、用戶名、密碼、MAC地址等)和串口參數(shù)(串口波特率、數(shù)據(jù)位、校驗位、停止位、流控、本地端口、工作協(xié)議等)。
響應(yīng)報文除了上述必須返回上位機要求的相應(yīng)參數(shù)情況外,還包括對上位機命令的校驗及命令的執(zhí)行情況。
校驗錯誤:′E′+正確的校驗值;
命令正確執(zhí)行:FF 01 CMD′K′;
用戶名密碼錯誤:FF 01 CMD′P′;
其他錯誤:FF 01 CMD′E′
為了方便跨網(wǎng)段進行配置,所有通信協(xié)議的操作均采用UDP廣播方式完成。
3.1 UDP廣播原理
廣播:一個節(jié)點發(fā)送數(shù)據(jù)包,網(wǎng)絡(luò)中的所有節(jié)點都可以收到。如果網(wǎng)絡(luò)中兩個主機上的應(yīng)用程序要相互通信,其一要知道彼此的IP;其二要知道程序可監(jiān)聽的端口,因為同一主機上的程序使用網(wǎng)絡(luò)是通過端口號來區(qū)分的。
如果想在整個網(wǎng)絡(luò)中廣播數(shù)據(jù),要向 255.255.255.255發(fā)送數(shù)據(jù)包,這種數(shù)據(jù)包不會被路由,它只能到達本物理網(wǎng)絡(luò)中的所有主機,因為如果路由器轉(zhuǎn)發(fā)了廣播信息,那么勢必會引起網(wǎng)絡(luò)癱瘓。廣播需要指明接收者的端口號,因為不可能接收者的所有端口都用來收聽廣播,所以通信時必須保證目標端口號和本地端口號不被占用。
3.2 配置軟件的功能設(shè)計
配置軟件的功能比較單一,需要讀取模塊的當前設(shè)置(IP地址、網(wǎng)關(guān)、子網(wǎng)掩碼、MAC地址、串口波特率、數(shù)據(jù)位、校驗位、停止位、流控、本地端口、工作協(xié)議等)予以顯示,并能對這些參數(shù)進行設(shè)置。
3.3 程序設(shè)計及實現(xiàn)
上位機配置軟件在 Visual Studio 2012開發(fā)環(huán)境下,采用C#編程實現(xiàn)。C#中對UDP的編程有兩種方式:直接使用Socket類和使用UdpClient類[8]。UdpClient類對基礎(chǔ)的Socket進行了封裝,發(fā)送和接收數(shù)據(jù)時不必考慮底層套接字收發(fā)時必須處理的一些細節(jié)問題,開發(fā)簡單、效率較高。因此,本文使用UdpClient類實現(xiàn)對UDP協(xié)議的編程。
本文采用了多線程技術(shù),用主線程發(fā)送數(shù)據(jù),專門啟動一個線程用于接收數(shù)據(jù),同一個進程中的兩個線程可以獨立運行并相互通信。
3.3.1利用UdpClient對象實現(xiàn)UDP通信——數(shù)據(jù)發(fā)送
利用UdpClient對象發(fā)送數(shù)據(jù)的流程如圖1所示。
圖1 利用UdpClient對象發(fā)送數(shù)據(jù)
3.3.2利用UdpClient對象實現(xiàn)UDP通信——數(shù)據(jù)接收
利用UdpClient對象接收數(shù)據(jù)的流程如圖2所示。
圖2 利用UdpClient對象接收數(shù)據(jù)
UdpClient對象的 Receive方法用于在指定的本地 IP地址和端口上接收遠程主機發(fā)送的數(shù)據(jù)報[9]。
3.4 程序調(diào)試
程序調(diào)試過程中用到了Wireshark工具。Wireshark是一個網(wǎng)絡(luò)封包分析軟件,通過簡單的設(shè)置就可以擷取網(wǎng)絡(luò)封包,并盡可能顯示出最為詳細的網(wǎng)絡(luò)封包資料。通過該軟件,可以方便地看到上位機配置軟件與串口轉(zhuǎn)以太網(wǎng)模塊之間數(shù)據(jù)包的各種信息。
采用串口轉(zhuǎn)以太網(wǎng)模塊對現(xiàn)有串口嵌入式設(shè)備進行升級聯(lián)網(wǎng),只需一根網(wǎng)線將模塊與PC相連,通過該配置軟件就能方便地對模塊參數(shù)進行設(shè)置,操作簡單、實用。本文介紹的通信協(xié)議以及UDP通信的實現(xiàn)對其他通信應(yīng)用具有一定的參考價值。
[1]蔡長安,鐘銳,王盈瑛.串行通信轉(zhuǎn)網(wǎng)絡(luò)通信數(shù)據(jù)模塊的設(shè)計[J].計算機應(yīng)用與軟件,2010,27(1):88-91.
[2]李毅.嵌入式串口服務(wù)器的設(shè)計與實現(xiàn)[D].北京:北京交通大學,2012.
[3]曾廣圣,曾維清,徐冉.一種基于 ARM的以太網(wǎng)串口服務(wù)器的設(shè)計[J].科技廣場,2012,25(5):248-253.
[4]陳政石,秦紅波,李鐵鷹.基于 MSP430F149的串口服務(wù)器設(shè)計[J].電子技術(shù)應(yīng)用,2009,35(1):95-97.
[5]成彬,王冬艷,韓憲生,等.密碼算法中的循環(huán)移位“異或”運算實質(zhì)性研究[J].微型機與應(yīng)用,2011,30(11):79-80.
[6]Jinan USR IOT Technology Co.,Ltd.Multifunctional serial to Ethernet module user manual[EB/OL].(2012-07-18)[2014-04-16].http://www.usriot.com/Down/E45/USR-TCP232-E45-EN%20V1.3.2.pdf.
[7]朱英翔,朱福民,劉炎鳴.C#下串口通信編程的開發(fā)和擴展[J].微型機與應(yīng)用,2014,33(6):89-91.
[8]周有杰.Visual C#.Net網(wǎng)絡(luò)核心編程[M].北京:清華大學出版社,2002.
[9]ROBINSON S.C#高級編程[M].北京:清華大學出版社,2002.
Design and imp lementation of configuration softw are for serial to Ethernet module
Sun Xiaoye1,2,Cheng Bin2,3
(1.Shijiazhuang Development Zone JKSS Science&Technology Co.,Ltd.,Shijiazhuang 050081,China;2.Institute of Applied Mathematics,Hebei Academy of Sciences,Shijiazhuang 050081,China;3.Hebei Information Security Certification Engineering Technology Research Center,Shijiazhuang 050081,China)
It is a kind of low-cost and applied solution that the existing serial port equipments connect to the internet by using the serial to Ethernet module.The module must be configured according to the specific application environment.The communication protocol between person computer(PC)and the module is introduced in the paper.PC configures the module by network interface in the means of User Datagram Protocol(UDP)broadcast.The software is programmed in Studio Visual 2012 by C#.The PC and the module can communicate cross different net section by the software.Users can configure the module under the condition that they do not know the initial IP address of the module,which is more convenient.
universal synchronous/asynchronous receiver/transmitter;Ethernet;communication protocol
TP31
A
1674-7720(2015)22-0073-03
孫曉曄,成彬.串口轉(zhuǎn)以太網(wǎng)模塊配置軟件設(shè)計及實現(xiàn)[J].微型機與應(yīng)用,2015,34(22):73-75.
2015-07-28)
孫曉曄(1981-),通信作者,女,本科,電子工程師,主要研究方向:嵌入式系統(tǒng)。E-mail:sunxiaoye2002@163.com。
成彬(1973-),男,碩士,研究員,主要研究方向:云計算與大數(shù)據(jù)。