《電子技術應用》
您所在的位置:首頁 > 通信与网络 > 设计应用 > 串口转以太网模块配置软件设计及实现
串口转以太网模块配置软件设计及实现
2015年微型机与应用第22期
孙晓晔1,2,成 彬2,3
(1.石家庄开发区冀科双实科技有限公司,河北 石家庄 050081; 2.河北省科学院应用数学研究所,河北 石家庄 050081; 3.河北省信息安全认证工程技术研究中心,河北 石家庄 050081)
摘要: 采用串口转以太网模块使现有串口设备具备联网功能是一种低成本实用的解决方案。在使用之前,需要根据具体应用环境对串口转以太网模块的串口参数以及网络参数进行设置。对上位机与串口转以太网模块间的通信协议进行了详细阐述,采用UDP广播通信方式,由上位机通过网口对模块进行参数配置。在Visual Studio 2012下,用C#编程实现了一套配置软件。配置过程中,上位机和模块可以跨网段通信,避免需预知模块初始IP以及更改上位机IP地址的麻烦,使用更方便。
Abstract:
Key words :

  摘  要: 采用串口轉以太網模塊使現有串口設備具備聯網功能是一種低成本實用的解決方案。在使用之前,需要根據具體應用環境對串口轉以太網模塊的串口參數以及網絡參數進行設置。對上位機與串口轉以太網模塊間的通信協議進行了詳細闡述,采用UDP廣播通信方式,由上位機通過網口對模塊進行參數配置。在Visual Studio 2012下,用C#編程實現了一套配置軟件。配置過程中,上位機和模塊可以跨網段通信,避免需預知模塊初始IP以及更改上位機IP地址的麻煩,使用更方便。

  關鍵詞通用同步/異步串行接收/發送器;以太網;通信協議

0 引言

  長期以來,串行通信方式在數據采集、數據監控、安防、醫療等很多領域應用普遍,但隨著Internet的發展和應用需求的提升,其局限性也日益凸顯:通信距離短、速率低、網絡特性差等[1]。同時,物聯網的迅猛發展,使得嵌入式設備聯網的需求越來越迫切。

  淘汰現有串口設備,研發能聯網的新產品需要投入大量的時間和人力物力,相比之下,采用串口轉以太網技術,只需增加串口轉以太網模塊,而無需淘汰原先的串口設備,不僅可以提高設備利用率,還可以降低開發成本、縮短開發周期,輕松實現串口設備聯網。

  串口轉以太網,實際就是將串口數據作為TCP/IP的應用層數據,用TCP/IP封裝傳輸[2-3]。本文主要完成串口轉以太網模塊上位機配置軟件的設計,根據上位機和串口轉以太網模塊間的通信協議,利用UDP廣播方式,完成模塊的參數配置,方便用戶對模塊的使用。

1 串口轉以太網模塊簡介

  串口轉以太網實際上就是將串行通信數據轉化為網絡數據包發出,將收到的網絡數據包用串行通信的方式發出,從而實現串口與網口之間數據的透明傳輸[4-5]。

  本文采用USR-TCP232-E45串口轉以太網模塊。該模塊搭載ARM處理器,采用Cortex-M3內核,內部集成了LWIP協議棧,速度快,功耗低,工作穩定可靠[6]。模塊在使用之前需配置的參數包括:串口參數[7](波特率、數據位、校驗位、停止位)和網絡參數(工作模式、IP地址、端口號、子網掩碼、網關等)。

2 通信協議

  對串口轉以太網模塊進行參數配置,需要上位機按照一定的通信協議向模塊發送相應命令(數據報文)。

  通信協議由報文頭、報文長度、報文內容組成,上位機發送的報文在末尾還帶1 B的校驗碼,模塊對上位機的響應不帶校驗,如表1所示。在通信協議中加入校驗能夠很好地解決傳輸誤碼的問題;接收方對收到的數據進行校驗,如果校驗值不正確,則丟棄本包數據,并通知發送方。

003.jpg

  報文頭值為0xFF;報文長度為報文內容所占的字節數,由于報文內容不同報文長度也會不同;校驗碼取報文長度和報文內容各字節之和。報文內容中只有控制碼是必需的,用來標識不同的命令操作,MAC地址、用戶名密碼、參數由于控制碼的不同可能不是必需的。

  下位機返回的報文與上位機發送的報文格式類似,但是不帶校驗,響應報文中控制碼字段表示本報文是對上位機發出的哪條命令的響應。

  發送搜索命令,模塊會返回36 B的數據,包括模塊的IP地址、MAC地址,之后可以利用MAC地址對該模塊進行其他參數的設置。

  讀取設置,返回256 B,包括基礎參數(IP地址、網關、子網掩碼、用戶名、密碼、MAC地址等)和串口參數(串口波特率、數據位、校驗位、停止位、流控、本地端口、工作協議等)。

  響應報文除了上述必須返回上位機要求的相應參數情況外,還包括對上位機命令的校驗及命令的執行情況。

  校驗錯誤:′E′+正確的校驗值;

  命令正確執行:FF 01 CMD′K′;

  用戶名密碼錯誤:FF 01 CMD′P′;

  其他錯誤:FF 01 CMD ′E′

3 上位機配置軟件設計

  為了方便跨網段進行配置,所有通信協議的操作均采用UDP廣播方式完成。

  3.1 UDP廣播原理

  廣播:一個節點發送數據包,網絡中的所有節點都可以收到。如果網絡中兩個主機上的應用程序要相互通信,其一要知道彼此的IP;其二要知道程序可監聽的端口,因為同一主機上的程序使用網絡是通過端口號來區分的。

  如果想在整個網絡中廣播數據,要向255.255.255.255發送數據包,這種數據包不會被路由,它只能到達本物理網絡中的所有主機,因為如果路由器轉發了廣播信息,那么勢必會引起網絡癱瘓。廣播需要指明接收者的端口號,因為不可能接收者的所有端口都用來收聽廣播,所以通信時必須保證目標端口號和本地端口號不被占用。

  3.2 配置軟件的功能設計

  配置軟件的功能比較單一,需要讀取模塊的當前設置(IP地址、網關、子網掩碼、MAC地址、串口波特率、數據位、校驗位、停止位、流控、本地端口、工作協議等)予以顯示,并能對這些參數進行設置。

  3.3 程序設計及實現

  上位機配置軟件在Visual Studio 2012開發環境下,采用C#編程實現。C#中對UDP的編程有兩種方式:直接使用Socket類和使用UdpClient類[8]。UdpClient類對基礎的Socket進行了封裝,發送和接收數據時不必考慮底層套接字收發時必須處理的一些細節問題,開發簡單、效率較高。因此,本文使用UdpClient類實現對UDP協議的編程。

  本文采用了多線程技術,用主線程發送數據,專門啟動一個線程用于接收數據,同一個進程中的兩個線程可以獨立運行并相互通信。

  3.3.1 利用UdpClient對象實現UDP通信——數據發送

  利用UdpClient對象發送數據的流程如圖1所示。

001.jpg

  private UdpClient udpClient;

  //創建UdpClient對象,這里使用1901端口

  udpClient=new UdpClient(1901);

  //遠程主機及端口號

  IPEndPoint iep=new IPEndPoint(IPAddress.Broadcast,1901);

  //發送緩沖區

  byte[]searchDeviceCommand=new byte[]{0xff,0x01,0x01,0x02};

  //通過udpClient將發送緩沖區中的內容發送到遠程節點

  udpClient.Send(searchDeviceCommand,

  searchDeviceCommand.Length,iep);

  3.3.2 利用UdpClient對象實現UDP通信——數據接收

  利用UdpClient對象接收數據的流程如圖2所示。

002.jpg

  UdpClient對象的Receive方法用于在指定的本地IP地址和端口上接收遠程主機發送的數據報[9]。

  private byte[]rBuffer=new byte[256];

  //根據通信協議中響應報文的長度,設置合適大小的接收緩沖區(接收緩沖區的大小不能小于模塊響應報文的最大長度)

  private UdpClient udpClient;

  private void FrmConfig_Load(object sender,EventArgs e)

  {

  udpClient=new UdpClient(1901);//創建接收數據的線程

  t=new Thread(startThread);//線程后臺運行

  t.IsBackground=true;//啟動線程

  t.Start();

  }

  //在接收線程中從遠程節點接收數據,對數據進行分析處理

  private void startThread()

  {

  while(true)

  {

  IPEndPoint iepRemote=new IPEndPoint(IPAddress.Broadcast,1901);

  rBuffer=udpClient.Receive(ref iepRemote);

  //對接收緩沖區中的內容進行分析,針對不同命令予以處理

  }

  }

  3.4 程序調試

  程序調試過程中用到了Wireshark工具。Wireshark是一個網絡封包分析軟件,通過簡單的設置就可以擷取網絡封包,并盡可能顯示出最為詳細的網絡封包資料。通過該軟件,可以方便地看到上位機配置軟件與串口轉以太網模塊之間數據包的各種信息。

4 結論

  采用串口轉以太網模塊對現有串口嵌入式設備進行升級聯網,只需一根網線將模塊與PC相連,通過該配置軟件就能方便地對模塊參數進行設置,操作簡單、實用。本文介紹的通信協議以及UDP通信的實現對其他通信應用具有一定的參考價值。

參考文獻

  [1] 蔡長安,鐘銳,王盈瑛.串行通信轉網絡通信數據模塊的設計[J].計算機應用與軟件,2010,27(1):88-91.

  [2] 李毅.嵌入式串口服務器的設計與實現[D].北京:北京交通大學,2012.

  [3] 曾廣圣,曾維清,徐冉.一種基于ARM的以太網串口服務器的設計[J].科技廣場,2012,25(5):248-253.

  [4] 陳政石,秦紅波,李鐵鷹.基于MSP430F149的串口服務器設計[J].電子技術應用,2009,35(1):95-97.

  [5] 成彬,王冬艷,韓憲生,等.密碼算法中的循環移位“異或”運算實質性研究[J].微型機與應用,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#下串口通信編程的開發和擴展[J].微型機與應用,2014,33(6):89-91.

  [8] 周有杰.Visual C#.Net網絡核心編程[M].北京:清華大學出版社,2002.

  [9] ROBINSON S.C#高級編程[M].北京:清華大學出版社,2002.


此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 欧美婷婷久久| 99久久国产免费免费| 亚洲wwwav| 久久日韩精品| 欧美日韩国产91| 欧美日韩免费高清| 亚洲综合在线播放| 亚洲色欲综合一区二区三区| 日本不卡在线观看| 久久9精品区-无套内射无码| 日韩精品―中文字幕| 久久精品在线播放| 欧美在线中文字幕| 日本婷婷久久久久久久久一区二区| 日本一区二区高清视频| 久久久亚洲天堂| 日本一区二区在线视频观看| 日韩视频第二页| 国产精品一区专区欧美日韩| 丁香六月激情婷婷| 日韩在线中文视频| 亚洲a中文字幕| 日韩在线小视频| 日韩中文在线视频| 国产精品日韩专区| 日本一区免费| 高清一区二区三区视频| 久久久久天天天天| 日韩日本欧美亚洲| 国产欧美日韩精品丝袜高跟鞋| 高清视频一区| 国产精品美女午夜av| 午夜精品久久久久久久男人的天堂| 日韩中文字幕在线不卡| 一区二区三区四区久久| 亚洲国产精品一区在线观看不卡| 免费人成在线观看视频播放| 欧美视频在线观看网站| 国产区精品视频| 国产伦精品一区二区三区视频免费| 免费久久99精品国产自|