Linux实现网络传输(DTU)模块

特点

  • 多个外设之间数据处理和交换。
  • 首先设计要稳定可靠不丢数据。
  • 及时维护设备就绪断开,尽量保持设备的就绪。
  • 考虑多个设备,多通道同时工作。
  • 条理清晰层次分明,容易开发。增加功能变得简单。
  • 能周期定时处理数据的能力。

需求

        大部分嵌入式设备核心工作是通过各种外设采集处理数据,发送处理好的数据。网络传输(DTU)的功能是这方面的典型案例。比方一个非常简单的例子,一个串口收到的数据,转发到多个网络目的地。

        这种需求的难点和复杂性在哪里呢?

        多种外设,使用外设之间差异性很大,具体表现为,初始化,设置不同,连接建立就绪不一样,设备就绪断开表现不一样。

        在linux中把大部分的外设都抽象为设备,对于设备的读写轮询基本一致。这方面没有难度,但是各种设备的数据传输能力大小存在差异,简单处理会导致数据丢失。

采集数据处理很多时候需要周期,定时处理。

方案 

       实现多设备多通道数据集中处理收发有多个进程来实现。

       实现该功能的进程分成两类,多个对应单个设备的单设备进程。一个数据集中处理的服务进程。单设备进程和之间用。

       整个方案化繁为简,非常容易扩展。非常合适与多种设备之间的交互,增加设备简单,方便快速开发多个功能。

单设备进程

       主要的功能是建立设备就绪状态,并把设备收发数据转给socket客户端,从而交给服务进程处理。

       管理单个设备和socket客户端。

       初始化设备,socket客户端,直到准备就绪

       常见的单个设备有:R232/R485串口,TCP 客户端,TCP服务器端,UDP客户端。UDP服务器端。USB接口。等等

       一直不断检查,轮询

              设备,socket客户端是否掉线,如掉线再次准备。

              设备,socket客户端是否有数据接收。接收数据。

              设备,socket客户端是否有数据发送。发送数据。

缓存数据

       单设备进程相同或不同类型的可以同时启动多个,达到多设备多通道的目的。

       单设备进程把各种设备之间的差异最大限度保留在单设备进程中,避免把不同的设备混在一起管理混乱,开发难度大。

       所有单设备进程开发模式一致,目的明确,单一,触类旁通,开发简单。

       增加一个设备进程不需要考虑别的设备。专注于自身就可以了。

服务进程

        可以对应多个单设备进程,用server socket监听单设备进程client的连接。建立连接,接收从单设备进程来的数据,对数据分析,编解码,进行综合处理。根据实现功能决定把结果数据发给哪些单设备进程。

       需要维护server socketsocket多个与客户对应连接。

       不断检查socket多个与客户对应连接收发数据。

       用时钟信号,周期处理数据。

       大数据量缓存处理。

       服务进程不需要知道每种设备的差异,管理多种设备麻烦事情不存在了。只需要维护server socketsocket多个与客户对应连接。并进行数据收发就可以了。服务程序很简单。

       服务程序可以集中处理上层应用方面的一些工作,如协议解析,数据保存,数据转发等工作。

socket通信

        套接口(Socket)为目前Linux上最为广泛使用的一种的进程间通信机制。

        基于Socket的多进程之间通信的实现方法。原理是建立一个进程专门用来做为通信服务器(server)来中转各个进程之间的通信。

        其他各进程作为客户端(client)。客户端的动作是首先建立通信Socket连接服务器端,然后通过通信Socket进行送信和收信。

        一个服务端可以与多个客户端建立多个连接,进行一对多通信。

        SCOKET通信可以是本地方式,也可以是TCP/IP方式。进程之间选择本地方式。

        单设备进程与服务进程之间通过socke通信,服务进程作为服务端,单设备进程作为客户端。根据应用的需求可以开多个单设备进程实现多通道。一般模式是一个服务进程对多个单设备进程。

        处理程序之间关系,和内部结构图:

Linux实现网络传输(DTU)模块_第1张图片

   联系人:付小姐                              

   咨询QQ:99187411                            

   咨询电话:15010577199

 

你可能感兴趣的:(arm,linux)