孫曉曄,成 彬(1.石家莊開(kāi)發(fā)區(qū)冀科雙實(shí)科技有限公司,河北 石家莊 050081;2.河北省科學(xué)院應(yīng)用數(shù)學(xué)研究所,河北 石家莊 050081;3.河北省信息安全認(rèn)證工程技術(shù)研究中心,河北 石家莊 050081)
串口轉(zhuǎn)以太網(wǎng)模塊配置軟件設(shè)計(jì)及實(shí)現(xiàn)
孫曉曄1,2,成 彬2,3
(1.石家莊開(kāi)發(fā)區(qū)冀科雙實(shí)科技有限公司,河北 石家莊 050081;2.河北省科學(xué)院應(yīng)用數(shù)學(xué)研究所,河北 石家莊 050081;3.河北省信息安全認(rèn)證工程技術(shù)研究中心,河北 石家莊 050081)
采用串口轉(zhuǎn)以太網(wǎng)模塊使現(xiàn)有串口設(shè)備具備聯(lián)網(wǎng)功能是一種低成本實(shí)用的解決方案。在使用之前,需要根據(jù)具體應(yīng)用環(huán)境對(duì)串口轉(zhuǎn)以太網(wǎng)模塊的串口參數(shù)以及網(wǎng)絡(luò)參數(shù)進(jìn)行設(shè)置。對(duì)上位機(jī)與串口轉(zhuǎn)以太網(wǎng)模塊間的通信協(xié)議進(jìn)行了詳細(xì)闡述,采用UDP廣播通信方式,由上位機(jī)通過(guò)網(wǎng)口對(duì)模塊進(jìn)行參數(shù)配置。在Visual Studio 2012下,用C#編程實(shí)現(xiàn)了一套配置軟件。配置過(guò)程中,上位機(jī)和模塊可以跨網(wǎng)段通信,避免需預(yù)知模塊初始IP以及更改上位機(jī)IP地址的麻煩,使用更方便。
通用同步/異步串行接收/發(fā)送器;以太網(wǎng);通信協(xié)議
長(zhǎng)期以來(lái),串行通信方式在數(shù)據(jù)采集、數(shù)據(jù)監(jiān)控、安防、醫(yī)療等很多領(lǐng)域應(yīng)用普遍,但隨著Internet的發(fā)展和應(yīng)用需求的提升,其局限性也日益凸顯:通信距離短、速率低、網(wǎng)絡(luò)特性差等[1]。同時(shí),物聯(lián)網(wǎng)的迅猛發(fā)展,使得嵌入式設(shè)備聯(lián)網(wǎng)的需求越來(lái)越迫切。
淘汰現(xiàn)有串口設(shè)備,研發(fā)能聯(lián)網(wǎng)的新產(chǎn)品需要投入大量的時(shí)間和人力物力,相比之下,采用串口轉(zhuǎn)以太網(wǎng)技術(shù),只需增加串口轉(zhuǎn)以太網(wǎng)模塊,而無(wú)需淘汰原先的串口設(shè)備,不僅可以提高設(shè)備利用率,還可以降低開(kāi)發(fā)成本、縮短開(kāi)發(fā)周期,輕松實(shí)現(xiàn)串口設(shè)備聯(lián)網(wǎng)。
串口轉(zhuǎn)以太網(wǎng),實(shí)際就是將串口數(shù)據(jù)作為TCP/IP的應(yīng)用層數(shù)據(jù),用 TCP/IP封裝傳輸[2-3]。本文主要完成串口轉(zhuǎn)以太網(wǎng)模塊上位機(jī)配置軟件的設(shè)計(jì),根據(jù)上位機(jī)和串口轉(zhuǎn)以太網(wǎng)模塊間的通信協(xié)議,利用UDP廣播方式,完成模塊的參數(shù)配置,方便用戶對(duì)模塊的使用。
串口轉(zhuǎn)以太網(wǎng)實(shí)際上就是將串行通信數(shù)據(jù)轉(zhuǎn)化為網(wǎng)絡(luò)數(shù)據(jù)包發(fā)出,將收到的網(wǎng)絡(luò)數(shù)據(jù)包用串行通信的方式發(fā)出,從而實(shí)現(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ù)位、校驗(yàn)位、停止位)和網(wǎng)絡(luò)參數(shù)(工作模式、IP地址、端口號(hào)、子網(wǎng)掩碼、網(wǎng)關(guān)等)。
對(duì)串口轉(zhuǎn)以太網(wǎng)模塊進(jìn)行參數(shù)配置,需要上位機(jī)按照一定的通信協(xié)議向模塊發(fā)送相應(yīng)命令(數(shù)據(jù)報(bào)文)。
通信協(xié)議由報(bào)文頭、報(bào)文長(zhǎng)度、報(bào)文內(nèi)容組成,上位機(jī)發(fā)送的報(bào)文在末尾還帶1 B的校驗(yàn)碼,模塊對(duì)上位機(jī)的響應(yīng)不帶校驗(yàn),如表1所示。在通信協(xié)議中加入校驗(yàn)?zāi)軌蚝芎玫亟鉀Q傳輸誤碼的問(wèn)題;接收方對(duì)收到的數(shù)據(jù)進(jìn)行校驗(yàn),如果校驗(yàn)值不正確,則丟棄本包數(shù)據(jù),并通知發(fā)送方。
表1 上位機(jī)配置軟件與串口轉(zhuǎn)以太網(wǎng)模塊之間的通信協(xié)議報(bào)文構(gòu)成
報(bào)文頭值為0xFF;報(bào)文長(zhǎng)度為報(bào)文內(nèi)容所占的字節(jié)數(shù),由于報(bào)文內(nèi)容不同報(bào)文長(zhǎng)度也會(huì)不同;校驗(yàn)碼取報(bào)文長(zhǎng)度和報(bào)文內(nèi)容各字節(jié)之和。報(bào)文內(nèi)容中只有控制碼是必需的,用來(lái)標(biāo)識(shí)不同的命令操作,MAC地址、用戶名密碼、參數(shù)由于控制碼的不同可能不是必需的。
下位機(jī)返回的報(bào)文與上位機(jī)發(fā)送的報(bào)文格式類似,但是不帶校驗(yàn),響應(yīng)報(bào)文中控制碼字段表示本報(bào)文是對(duì)上位機(jī)發(fā)出的哪條命令的響應(yīng)。
發(fā)送搜索命令,模塊會(huì)返回36 B的數(shù)據(jù),包括模塊的IP地址、MAC地址,之后可以利用MAC地址對(duì)該模塊進(jìn)行其他參數(shù)的設(shè)置。
讀取設(shè)置,返回 256 B,包括基礎(chǔ)參數(shù)(IP地址、網(wǎng)關(guān)、子網(wǎng)掩碼、用戶名、密碼、MAC地址等)和串口參數(shù)(串口波特率、數(shù)據(jù)位、校驗(yàn)位、停止位、流控、本地端口、工作協(xié)議等)。
響應(yīng)報(bào)文除了上述必須返回上位機(jī)要求的相應(yīng)參數(shù)情況外,還包括對(duì)上位機(jī)命令的校驗(yàn)及命令的執(zhí)行情況。
校驗(yàn)錯(cuò)誤:′E′+正確的校驗(yàn)值;
命令正確執(zhí)行:FF 01 CMD′K′;
用戶名密碼錯(cuò)誤:FF 01 CMD′P′;
其他錯(cuò)誤:FF 01 CMD′E′
為了方便跨網(wǎng)段進(jìn)行配置,所有通信協(xié)議的操作均采用UDP廣播方式完成。
3.1 UDP廣播原理
廣播:一個(gè)節(jié)點(diǎn)發(fā)送數(shù)據(jù)包,網(wǎng)絡(luò)中的所有節(jié)點(diǎn)都可以收到。如果網(wǎng)絡(luò)中兩個(gè)主機(jī)上的應(yīng)用程序要相互通信,其一要知道彼此的IP;其二要知道程序可監(jiān)聽(tīng)的端口,因?yàn)橥恢鳈C(jī)上的程序使用網(wǎng)絡(luò)是通過(guò)端口號(hào)來(lái)區(qū)分的。
如果想在整個(gè)網(wǎng)絡(luò)中廣播數(shù)據(jù),要向 255.255.255.255發(fā)送數(shù)據(jù)包,這種數(shù)據(jù)包不會(huì)被路由,它只能到達(dá)本物理網(wǎng)絡(luò)中的所有主機(jī),因?yàn)槿绻酚善鬓D(zhuǎn)發(fā)了廣播信息,那么勢(shì)必會(huì)引起網(wǎng)絡(luò)癱瘓。廣播需要指明接收者的端口號(hào),因?yàn)椴豢赡芙邮照叩乃卸丝诙加脕?lái)收聽(tīng)廣播,所以通信時(shí)必須保證目標(biāo)端口號(hào)和本地端口號(hào)不被占用。
3.2 配置軟件的功能設(shè)計(jì)
配置軟件的功能比較單一,需要讀取模塊的當(dāng)前設(shè)置(IP地址、網(wǎng)關(guān)、子網(wǎng)掩碼、MAC地址、串口波特率、數(shù)據(jù)位、校驗(yàn)位、停止位、流控、本地端口、工作協(xié)議等)予以顯示,并能對(duì)這些參數(shù)進(jìn)行設(shè)置。
3.3 程序設(shè)計(jì)及實(shí)現(xiàn)
上位機(jī)配置軟件在 Visual Studio 2012開(kāi)發(fā)環(huán)境下,采用C#編程實(shí)現(xiàn)。C#中對(duì)UDP的編程有兩種方式:直接使用Socket類和使用UdpClient類[8]。UdpClient類對(duì)基礎(chǔ)的Socket進(jìn)行了封裝,發(fā)送和接收數(shù)據(jù)時(shí)不必考慮底層套接字收發(fā)時(shí)必須處理的一些細(xì)節(jié)問(wèn)題,開(kāi)發(fā)簡(jiǎn)單、效率較高。因此,本文使用UdpClient類實(shí)現(xiàn)對(duì)UDP協(xié)議的編程。
本文采用了多線程技術(shù),用主線程發(fā)送數(shù)據(jù),專門啟動(dòng)一個(gè)線程用于接收數(shù)據(jù),同一個(gè)進(jìn)程中的兩個(gè)線程可以獨(dú)立運(yùn)行并相互通信。
3.3.1利用UdpClient對(duì)象實(shí)現(xiàn)UDP通信——數(shù)據(jù)發(fā)送
利用UdpClient對(duì)象發(fā)送數(shù)據(jù)的流程如圖1所示。
圖1 利用UdpClient對(duì)象發(fā)送數(shù)據(jù)
3.3.2利用UdpClient對(duì)象實(shí)現(xiàn)UDP通信——數(shù)據(jù)接收
利用UdpClient對(duì)象接收數(shù)據(jù)的流程如圖2所示。
圖2 利用UdpClient對(duì)象接收數(shù)據(jù)
UdpClient對(duì)象的 Receive方法用于在指定的本地 IP地址和端口上接收遠(yuǎn)程主機(jī)發(fā)送的數(shù)據(jù)報(bào)[9]。
3.4 程序調(diào)試
程序調(diào)試過(guò)程中用到了Wireshark工具。Wireshark是一個(gè)網(wǎng)絡(luò)封包分析軟件,通過(guò)簡(jiǎn)單的設(shè)置就可以擷取網(wǎng)絡(luò)封包,并盡可能顯示出最為詳細(xì)的網(wǎng)絡(luò)封包資料。通過(guò)該軟件,可以方便地看到上位機(jī)配置軟件與串口轉(zhuǎn)以太網(wǎng)模塊之間數(shù)據(jù)包的各種信息。
采用串口轉(zhuǎn)以太網(wǎng)模塊對(duì)現(xiàn)有串口嵌入式設(shè)備進(jìn)行升級(jí)聯(lián)網(wǎng),只需一根網(wǎng)線將模塊與PC相連,通過(guò)該配置軟件就能方便地對(duì)模塊參數(shù)進(jìn)行設(shè)置,操作簡(jiǎn)單、實(shí)用。本文介紹的通信協(xié)議以及UDP通信的實(shí)現(xiàn)對(duì)其他通信應(yīng)用具有一定的參考價(jià)值。
[1]蔡長(zhǎng)安,鐘銳,王盈瑛.串行通信轉(zhuǎn)網(wǎng)絡(luò)通信數(shù)據(jù)模塊的設(shè)計(jì)[J].計(jì)算機(jī)應(yīng)用與軟件,2010,27(1):88-91.
[2]李毅.嵌入式串口服務(wù)器的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:北京交通大學(xué),2012.
[3]曾廣圣,曾維清,徐冉.一種基于 ARM的以太網(wǎng)串口服務(wù)器的設(shè)計(jì)[J].科技廣場(chǎng),2012,25(5):248-253.
[4]陳政石,秦紅波,李鐵鷹.基于 MSP430F149的串口服務(wù)器設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2009,35(1):95-97.
[5]成彬,王冬艷,韓憲生,等.密碼算法中的循環(huán)移位“異或”運(yùn)算實(shí)質(zhì)性研究[J].微型機(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#下串口通信編程的開(kāi)發(fā)和擴(kuò)展[J].微型機(jī)與應(yīng)用,2014,33(6):89-91.
[8]周有杰.Visual C#.Net網(wǎng)絡(luò)核心編程[M].北京:清華大學(xué)出版社,2002.
[9]ROBINSON S.C#高級(jí)編程[M].北京:清華大學(xué)出版社,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è)計(jì)及實(shí)現(xiàn)[J].微型機(jī)與應(yīng)用,2015,34(22):73-75.
2015-07-28)
孫曉曄(1981-),通信作者,女,本科,電子工程師,主要研究方向:嵌入式系統(tǒng)。E-mail:sunxiaoye2002@163.com。
成彬(1973-),男,碩士,研究員,主要研究方向:云計(jì)算與大數(shù)據(jù)。