主要功能特性 :
◆1TCP透明数据传输和UDP透明数据传输;支持多种工作模式
◆2支持虚拟数据专用网(APN/VPDN)
◆3支持双数据中心备份及多数据中心(5个)接受数据
◆4智能防掉线,支持在线检测,在线维持,掉线自动重拨,确保设备永远在线。
◆5远程唤醒:支持短信,语音,数据等唤醒方式以及超时断开网络连接
◆6支持固定IP通信方式;支持DDNS动态域名通信方式。
◆7支持短信远程配置,远程控制;支持短消息告警
◆8丰富接口:提供RS232接口或者RS485接口或者TTL接口或者RS422接口,全接口支持。
◆9完善的网络支持:提供包括2G网络(GSM网络),25G网络(GPRS网络),275G网络(EDGE网络),3G网络(WCDMA网络,TD-SCDMA网络),4G网络(HSPA+网络,LTE网络),全网络的产品支持。
◆10数据包传输状态报告
◆11可以用作普通拨号MODEM
◆12标准的AT命令界面,支持串口软件设计,同时支持LINUX
◆13传输功能,格式协议可订udp底层使用的是hadoop。根据查询相关资料信息,udp底层,hadoop是apache基金会所开发的并行计算和分布式存储系统,最核心的模块是hadoopcommon、hdfs和mapreduce。hadoop是apache基金会所开发的并行计算和分布式存储系统,最核心的模块是hadoopcommon、hdfs和mapreduce。检查电源。当出现nb模块低功耗走udp协议链接不到服务器这种状况时,需要检查一下模块的电源是否达到标准模块要求供电能力在38V时至少500MA。服务器是计算机的一种,它比普通计算机运行更快、负载更高、价格更贵。
应用层负责产生数据,传输层负责数据分割、可靠传输等,网络层负责数据路由,链路层负责数据的传送。下面我们先介绍一下关键概念,然后再介绍数据的完整路由过程。
首先来看一下下面这幅图,它对本文的理解至关重要,图中表示了一个接入internet的PC电脑,几乎每一个电脑都是用这种逻辑结构接入Internet的,这种结构也反映了PC接入Internet的主要行为。]
图中的方框代表了一个数据流入Internet的通信主体,横向的虚线代表的是通信电路(如:同轴电缆),*代表这是一个IP地址,@代表这是一个以太网地址,O代表这是一个接入节点;理解这幅图对于理解互联网技术很重要。
数据单元(UDP)流经Internet依赖于各种协议栈。在不同的协议模块中,数据单元有着不同的名字,如:
如果一个应用程序使用了TCP协议,那么数据就从应用程序流入TCP模块,同样的道理,数据也可能流入UDP模块。而FTP应用就是一个典型的使用TCP协议的应用程序,它的协议栈: FTP/TCP/IP/ENET ,同样的还有SNMP应用,使用了UDP协议,协议栈为: SNMP/UDP/IP/ENET。数据流流经协议栈的图标方式可以参考图1。
其实TCP、UDP以及以太网驱动模块既是一个多对一的多端合成器,又是一个一对多的多端分解器。当作为多端合成器时,它们将多个输入端口的数据处理然后从一个端口输出(如:TCP可以同时处理多个应用程序的数据,即多任务 *** 作);当作为多端分解器时,它们可以将1个输入端口的数据分解成多个输出传送到不同的模块。
概念可能有点抽象,我们举个例子理解,如以太网模块接入网络,当一个以太网帧流入以太网驱动模块,它接收到以太网帧,既可以传送到IP模块,也可以传送到ARP模块,以太网驱动模块会根据以太网帧头部的类型来判断将数据传送到IP模块或ARP模块。同样的道理,IP包流入IP模块,IP模块IP头部信息决定数据流向TCP模块还是UDP模块。
说到这里不得不说一下以太网地址,IP地址用来唯一的标示某个Internet网络,以太网地址采用的时6个字节的十六进制数,用于唯一的标识某个接入Internet的以太网驱动设备,即我们通常的网卡地址。IP地址随着PC的移动会改变,以太网地址只有在硬件设备更换才会改变。
有时候,某个设备可能同时有多个以太网,多个IP地址,如图所示:
路由器就是一种这样的设备,但是大部分路由器没有也不需要图中所示的TCP和UDP模块以上的模块。
IP模块的主要功能是路由寻址,负责根据目的IP地址查询路由表,决定下一跳的IP地址。
以太网驱动模块接入网络,它可以对外传送数据,并且可以接收自己的数据和广播数据,这里的自己的数据指的是以太网帧的目的以太网地址和自身的以太网地址相同,广播地址指的是FF-FF-FF-FF-FF-FF。
如下图所示是一个以太网帧里面的源/目的IP和以太网地址的对应关系,以太网帧只会被发送到目的以太网地址的以太网设备中:
ARP路由模块负责IP地址到以太网地址的映射,当IP包进入缓存队列,准备发给以太网模块时,ARP模块会查询自身的ARP表,返回一个跟目的IP匹配的以太网地址,然后,以太网才可以将数据发送到这个以太网地址。如果ARP表中没有这个映射关系,以太网模块会向以太网内广播,询问谁是这个IP的设备,来获取IP对应的以太网地址。以太网中的其他设备接收到以太网帧,查询自己的IP后发现这不是自己的IP,丢弃;如果是自己的IP,响应自己的以太网地址给源以太网。至此ARP表得到了更新,重新发送IP包。
如下图所示,有三个网络分别是Development、Accounting、factory。还有一个路由器delta,路由器接入到了三个网络中,所以它有3个IP地址和3个以太网地址。下面我们就来看看一个数据是怎么从alpha网络到达factory网络中的。
当alpha向factory发送数据时,IP路由模块首先会查询自己的IP路由表,IP路由表如下:
如表中所示,首先会根据目的IP的前三位网络号,遍历路由表,进行匹配,匹配到第三行factory选中,direct/indirect flag字段指示factory网络不能直达,只能间接通过devnetrouter路由器到达,可以从1号接口传送数据。IP包仍然包含目的IP地址即factory的IP地址,但是目的以太网地址应该是路由器的以太网地址,所以IP模块结下来查询ARP表,找到对应的devnetrouter路由器的以太网地址,将数据包发送到路由器,路由器以太网接收到以太网帧,发送到IP模块,IP模块发现目的IP不是自己的IP地址,接着查询自身的路由表:
如表中所示,factory网络可以通过3号接口直达,接下来,IP包中仍然带有目的IP地址,IP模块使用ARP表查询factory的以太网地址,然后将IP包发给路由器以太网模块,由以太网模块从3号接口发送出去。factory接收到数据到达IP模块,分离IP头部,发现这是自己的IP,进一步将数据转发至上层。
参考:
RFC 1180 - TCP/IP参考
Socket 是应用层和传输层之间的一层抽象协议,可以用来进行进程间通信,一般有 UDP 和 TCP 两种通信方式,前者速度稍快,稳定性不好,无法丢包重传。后者速度稍慢一点,但稳定性很好,可以丢包重传。
本文首先介绍使用 Socket 进行 UDP 通信。
使用 Socket 进行 UDP 通信的流程如下:
下面依次进行讲解。
要进行 Socket 通信,我们需要使用 socket 模块,首先需要创建一个 Socket 对象。下面是两种创建方式:
如果我们需要向别的主机发送数据,我们需要改主机的 IP 地址和相应的端口号。在使用 Socket 进行通信时,需要将两个信息写在一元组中,元组的第一项为目标主机 IP 地址,第二项为接受数据的端口号:
其中,IP 地址使用字符串类型,端口号使用数字类型。
如果不绑定端口,每次使用 Socket 时都会由 *** 作系统动态分配一个端口,我们也可以绑定为某个固定的端口。这样做的好处是:如果我们想要接受其他主机的信息,其他主机可以直接向这个端口发送数据,如果使用动态端口的话,发送方并不知道目标端口是什么,因此无法向接收方发送数据。
绑定端口需要使用 Socket 对象的 bind 方法:
bind 方法接受一个元组作为参数,元组的第一项为绑定的 IP 地址,第二项为绑定的端口号。我们可以把第一项指定为本机上的任意一个 IP 地址,也可以设置为一个空字符串 "" ,表示本机上任意合法的 IP 地址。
使用 UDP 套接字协议时,发送数据使用 Socket 对象的 sendto 方法,接受数据使用 Socket 对象的 recvfrom 方法。这两个方法的使用方式如下:
sendto 方法接受两个参数:发送的数据和目标主机的 IP 和端口元组,在 Python3 中,发送的数据应该转为 byte 类型发送,Python2 中可以直接发送字符串。
recvfrom 接受一个参数:本次接受的最大数据尺寸。该方法是阻塞的,只有在接收到数据后才能进行后续的 *** 作。
就像使用文件那样,在使用完套接字后,需要关闭它,调用 close 方法即可。
上面我们介绍了 Socket 的使用方式,下面我们来做一个单工通信的例子(一方负责发送信息,一方负责接收信息)。
我们这里来创建两个文件:用以发送信息的 sendpy 和用以接收信息的 recvpy。该实例在虚拟机中模拟(注意将虚拟机设置为桥接模式)。
创建 sendpy:
创建 recvpy:
运行结果如下:
上面实现了一个单工通信的例子:一方负责发,一方负责接收。下面我们继续实现一个双工通信的例子,使双方都能够收发消息。
由于接收和发送消息时是使用 while 循环不断轮询的,因此要实现同时发送和接受,我们需要进行多任务处理。
新建一个 msgpy:
这里我们使用 3000 端口发送数据,3001 端口接收数据,运行程序时只需填写目标主机的 IP 地址,就可以进行通信。
运行效果:
我们还可以进行局域网内的广播,只需对 Socket 加上一条设置:
同时,发送广播需要一个广播地址,以及目标主机接受广播的端口:
上面的设置只能给 0 网段的主机发送广播,要想给局域网中所有的主机发送广播,可以这样设置:
下面我们新建一个 sendpy 用来发送广播:
新建一个 recvpy 用来接收广播:
运行效果如图:
完。题主说的是哪个udp模块?字符串里面有没有多字节字符(如中文)?
xPC Target、Target Support Package TC6和Instrument Control Toolbox里面都有udp模块,前面两个接收的类型是uint8,最后一个可以自定类型。
作为普通ASCII码的字符串应该都没问题,但如果包含多字节字符,使用前两个模块可能会遇到一些麻烦。
首先我们确定是两者都是属于24G频段的无线产品
1蓝牙模块
蓝牙传输距离大约为10米,只要是两个可以支持蓝牙通讯的设备,即可在传输距离内实现数据传输。蓝牙采用分散式网络结构以及快跳频和短包技术,蓝牙使用的是FHSS方式,一般每秒钟跳变1600次,将835MHz的频带划分为79个频带信道,每个时刻只占1MHz的带宽。支持点对点及点对多点通信,工作在全球通用的24GHz ISM(即工业、科学、医学)频段,其数据速率为1Mbps,采用时分双工传输方案实现全双工传输,相对于其他的无线模块,其最大的特点是低功耗。它在智能设备的普及性高,应用广。成本低廉,产量大。使用方便,点对点。而它的缺点就是速度非常慢且距离信号受限。
(蓝牙模块)
2wifi模块
WiFi在24Ghz频段工作,所使用的协议是80211标准,大部分80211采用24GHz的ISM频段,所支持的速度最高达54Mbps,通过互联网连接上安装访问点来创建,传输距离大概为300英尺。只要手头有支持WiFi连接的设备,在热点覆盖的区域即可随时联网。其现在广泛应用在PC、平板、手机等设备中,成为人们最熟悉的短距离通讯方式。在传输距离和速率方面,wifi比蓝牙会有较大的优势。
在开发应用方面,不管是蓝牙还是wifi模块,其内部通信功能都已实现并封装好,可以作为一个网络透传的功能,实现与手机APP等的数据传输。软件方面只需要将电源、复位等打开,并将串口参数设置好,就可以通过串口AT命令对模块的一些必要参数进行配置,已达到通信的要求,比如查询版本信息,设置模块名称、密码,设置wifi的模式、ip、端口等。Wifi模块除AT配置外,一般还有web和app配置模式,可支持网页和app对其必要参数进行配置,并且还有smartlink快连功能。
所以总结下来,wifi模块的优点就是速度快。一对多,可多人连线。距离远。大功率路由器可穿墙覆盖百米。
而缺点就是成本高,需要单独网卡。
(wifi模块)
目前,在中远距离以及传输速度方面Wifi比蓝牙更有优势,而在低功耗和成本方面蓝牙也是得天独厚。这两种技术都在不断发展进步,为我们人类社会的科技生活带来更好体验,而厂家也可以根据自身需要,选择合适的模块。
物联网 *** 作系统由内核、辅助外围模块(文件系统、图形用户界面、通信协议栈、各类常见设备的驱动程序等)、集成开发环境等组成,基于此,可衍生出一系列面向行业的特定应用。物联网 *** 作系统与传统的个人计算机 *** 作系统和智能手机类 *** 作系统不同,它具备物联网应用领域内的一些独特特点,现说明如下。
物联网 *** 作系统内核的特点
1、内核尺寸伸缩性强,能够适应不同配置的硬件平台。比如,一个极端的情况下,内核尺寸必须维持在10K以内,以支撑内存和CPU性能都很受限的传感器,这时候内核具备基本的任务调度和通信功能即可。在另外一个极端的情况下,内核必须具备完善的线程调度、内存管理、本地存储、复杂的网络协议、图形用户界面等功能,以满足高配置的智能物联网终端的要求。这时候的内核尺寸,不可避免的会大大增加,可以达到几百K,甚至M级。这种内核尺寸的伸缩性,可以通过两个层面的措施来实现:重新编译和二进制模块选择加载。重新编译措施很简单,只需要根据不同的应用目标,选择所需的功能模块,然后对内核进行重新编译即可。这个措施应用于内核定制非常深入的情况下,比如要求内核的尺寸达到10K以下的场合。而二进制模块选择加载,则用在对内核定制不是很深入的情况。这时候维持一个 *** 作系统配置文件,文件里列举了 *** 作系统需要加载的所有二进制模块。在内核初始化完成后,会根据配置文件,加载所需的二进制模块。这需要终端设备要有外部存储器(比如硬盘、Flash等),以存储要加载的二进制模块;
2、内核的实时性必须足够强,以满足关键应用的需要。大多数的物联网设备,要求 *** 作系统内核要具备实时性,因为很多的关键性动作,必须在有限的时间内完成,否则将失去意义。内核的实时性包涵很多层面的意思,首先是中断响应的实时性,一旦外部中断发生, *** 作系统必须在足够短的时间内响应中断并做出处理。其次是线程或任务调度的实时性,一旦任务或线程所需的资源或进一步运行的条件准备就绪,必须能够马上得到调度。显然,基于非抢占式调度方式的内核很难满足这些实时性要求;
3、内核架构可扩展性强。物联网 *** 作系统的内核,应该设计成一个框架,这个框架定义了一些接口和规范,只要遵循这些接口和规范,就可以很容易的在 *** 作系统内核上增加新的功能的新的硬件支持。因为物联网的应用环境具备广谱特性,要求 *** 作系统必须能够扩展以适应新的应用环境。内核应该有一个基于总线或树结构的设备管理机制,可以动态加载设备驱动程序或其它核心模块。同时内核应该具备外部二进制模块或应用程序的动态加载功能,这些应用程序存储在外部介质上,这样就无需修改内核,只需要开发新的应用程序,就可满足特定的行业需求;
4、内核应足够安全和可靠。可靠性就不用说了,物联网应用环境具备自动化程度高、人为干预少的特点,这要求内核必须足够可靠,以支撑长时间的独立运行。安全对物联网来说更加关键,甚至关系到国家命脉。比如一个不安全的内核被应用到国家电网控制当中,一旦被外部侵入,造成的影响将无法估量。为了加强安全性,内核应支持内存保护(VMM等机制)、异常管理等机制,以在必要时隔离错误的代码。另外一个安全策略,就是不开放源代码,或者不开放关键部分的内核源代码。不公开源代码只是一种安全策略,并不代表不能免费适用内核;
5、节能省电,以支持足够的电源续航能力。 *** 作系统内核应该在CPU空闲的时候,降低CPU运行频率,或干脆关闭 CPU。对于周边设备,也应该实时判断其运行状态,一旦进入空闲状态,则切换到省电模式。同时, *** 作系统内核应最大程度的降低中断发生频率,比如在不影响实时性的情况下,把系统的时钟频率调到最低,以最大可能的节约电源。
物联网 *** 作系外围模块的特点
外围模块指为了适应物联网的应用特点, *** 作系统应该具备的一些功能特征,比如远程维护和升级等。同时也指为了扩展物联网 *** 作系统内核的功能范围,而开发的一些功能模块,比如文件系统、网络协议栈等。物联网 *** 作系统的外围模块(或外围功能)应该至少具备下列这些:
1、支持 *** 作系统核心、设备驱动程序或应用程序等的远程升级。远程升级是物联网 *** 作系统的最基本特征,这个特性可大大降低维护成本。远程升级完成后,原有的设备配置和数据能够得以继续使用。即使在升级失败的情况下, *** 作系统也应该能够恢复原有的运行状态。远程升级和维护是支持物联网 *** 作系统大规模部署的主要措施之一;
2、支持常用的文件系统和外部存储。比如支持FAT32/NTFS/DCFS等文件系统,支持硬盘、USB stick、Flash、ROM等常用存储设备。在网络连接中断的情况下,外部存储功能会发挥重要作用。比如可以临时存储采集到的数据,再网络恢复后再上传到数据中心。但文件系统和存储驱动的代码,要与 *** 作系统核心代码有效分离,能够做到非常容易的裁剪;
3、支持远程配置、远程诊断、远程管理等维护功能。这里不仅仅包涵常见的远程 *** 作特性,比如远程修改设备参数、远程查看运行信息等。还应该包涵更深层面的远程 *** 作,比如可以远程查看 *** 作系统内核的状态,远程调试线程或任务,异常时的远程dump内核状态等功能。这些功能不仅仅需要外围应用的支持,更需要内核的天然支持;
4、 支持完善的网络功能。物联网 *** 作系统必须支持完善的TCP/IP协议栈,包括对IPv4和IPv6的同时支持。这个协议栈要具备灵活的伸缩性,以适应裁剪需要。比如可以通过裁剪,使得协议栈只支持IP/UDP等协议功能,以降低代码尺寸。同时也支持丰富的IP协议族,比如Telnet/FTP/IPSec/SCTP等协议,以适用智能终端和高安全可靠的应用场合;
5、对物联网常用的无线通信功能要内置支持。比如支持GPRS/3G/HSPA/4G等公共网络的无线通信功能,同时要支持Zigbee/NFC/RFID等近场通信功能,支持WLAN/Ethernet等桌面网络接口功能。这些不同的协议之间,要能够相互转换,能够把从一种协议获取到的数据报文,转换成为另外一种协议的报文发送出去。除此之外,还应支持短信息的接收和发送、语音通信、视频通信等功能;
6、内置支持XML文件解析功能。物联网时代,不同行业之间,甚至相同行业的不同领域之间,会存在严重的信息共享壁垒。而XML格式的数据共享可以打破这个壁垒,因此XML标准在物联网领域会得到更广泛的应用。物联网 *** 作系统要内置对XML解析的支持,所有 *** 作系统的配置数据,统一用XML格式进行存储。同时也可对行业自行定义的XML格式进行解析,以完成行业转换功能;
7、支持完善的GUI功能。图形用户界面一般应用于物联网的智能终端中,完成用户和设备的交互。GUI应该定义一个完整的框架,以方便图形功能的扩展。同时应该实现常用的用户界面元素,比如文本框、按钮、列表等。另外,GUI模块应该与 *** 作系统核心分离,最好支持二进制的动态加载功能,即 *** 作系统核心根据应用程序需要,动态加载或卸载GUI模块。GUI模块的效率要足够高,从用户输入确认,到具体的动作开始执行之间的时间(可以叫做click-launch时间)要足够短,不能出现用户点击了确定、但任务的执行却等待很长时间的情况;
8、支持从外部存储介质中动态加载应用程序。物联网 *** 作系统应提供一组API,供不同应用程序调用,而且这一组 API应该根据 *** 作系统所加载的外围模块实时变化。比如在加载了GUI模块的情况下,需要提供GUI *** 作的系统调用,但是在没有GUI模块的情况下,就不应该提供GUI功能调用。同时 *** 作系统、GUI等外围模块、应用程序模块应该二进制分离, *** 作系统能够动态的从外部存储介质上按需加载应用程序。这样的一种结构,就使得整个 *** 作系统具备强大的扩展能力。 *** 作系统内核和外围模块(GUI、网络等)提供基础支持,而各种各样的行业应用,通过应用程序来实现。最后在软件发布的时候,只发布 *** 作系统内核、所需的外围模块、应用程序模块即可。
物联网 *** 作系统集成开发环境的特点
集成开发环境是构筑行业应用的关键工具,物联网 *** 作系统必须提供方便灵活的开发工具,以开发出适合行业应用的应用程序。开发环境必须足够成熟并得到广泛适用,以降低应用程序的上市时间(GTMT)。集成开发环境必须具备如下特点:
1、 物联网 *** 作系统要提供丰富灵活的API,供程序员调用,这组API应该能够支持多种语言,比如既支持C/C++,也支持Java、Basic等程序设计语言;
2、 最好充分利用已有的集成开发环境。比如可以利用Eclipse、Visual Studio等集成开发环境,这些集成开发工具具备广泛的应用基础,可以在Internet上直接获得良好的技术支持;
3、 除配套的集成开发环境外,还应定义和实现一种紧凑的应用程序格式(类似Windows的PE格式),以适用物联网的特殊需要。通过对集成开发环境进行定制,使得集成开发环境生成的代码,可以遵循这种格式;
4、 要提供一组工具,方便应用程序的开发和调试。比如提供应用程序下载工具、远程调试工具等,支撑整个开发过程。
可以看出,上述物联网 *** 作系统内核、外围模块、应用开发环境等,都是支撑平台,支撑更上一层的行业应用。行业应用才是最终产生生产力的软件,但是物联网 *** 作系统是行业应用得以茁壮生长和长期有效生存的基础,只有具备了强大灵活的物联网 *** 作系统,物联网这棵大树才能结出丰硕的果实。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)