Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Serial port XBee通信协议的开发_Serial Port_Communication_Xbee - Fatal编程技术网

Serial port XBee通信协议的开发

Serial port XBee通信协议的开发,serial-port,communication,xbee,Serial Port,Communication,Xbee,我在API模式下使用XBee Digimesh模块在不同的工业机器之间发送数据,允许它们共享数据、信息和命令 API模式提供了一些基本命令,主要用于执行寻址和与XBee模块本身对话,以便进行配置等 通过相应的XBee API命令发送用户数据,该命令允许发送最大负载为72字节的用户定义数据 因为我想扩展这种通信,以允许集成更多的机器,等等。我正在考虑如何实现一个基本的通信系统,它可以完美地适应只有72字节的超小负载 来自web,我通常会在这里使用某种JSON,但这会很快填满负载 此外,发送包含大量

我在API模式下使用XBee Digimesh模块在不同的工业机器之间发送数据,允许它们共享数据、信息和命令

API模式提供了一些基本命令,主要用于执行寻址和与XBee模块本身对话,以便进行配置等

通过相应的XBee API命令发送用户数据,该命令允许发送最大负载为72字节的用户定义数据

因为我想扩展这种通信,以允许集成更多的机器,等等。我正在考虑如何实现一个基本的通信系统,它可以完美地适应只有72字节的超小负载

来自web,我通常会在这里使用某种JSON,但这会很快填满负载

此外,发送包含大量信息的帧也是不可能的,因为这也会很快填满有效负载

所以我想出了一种不同的交流方式。与其发送包含信息的帧,不如发送类似这样的消息

  • 机器A广播:谁在那里
  • 机器B回答:是我,我是xxx机器
  • 机器C回答:是我,我是xxx机器
Machine-A现在评估回复并决定使用Machine-B(因为Machine-C作为接口不匹配):

  • 机器A对B:你好,B,请给我一些值
  • 机器B到A:好了,2.349590
这可以扩展到不同的短消息。在每条消息之后,发送方将消息类型保存在一个状态中,并且将根据状态/上下文对回复进行评估

我试图避免的是定义一个基于位的协议(比如MIDI),它将所有事件定义为基于位的标志。因为我们现在不知道将来会添加什么类型的硬件,所以我想要一个非常灵活的通信协议,不需要协调器或消息代理等


但由于这是我第一次考虑通信协议,我很想知道是否有一些现有的框架可以处理轻负载上的复杂通信

您可能希望通读规范,重点是常规命令。它描述了一个属性发现和检索系统。每个属性都有一个16位ID和一个确定其大小的数据类型(各种大小的整数、枚举类型、位图)

它是一个为802.15.4网络的小有效负载设计的协议,您可以基于它的一个子集建立您的协议。其他ZigBee规范只是一个给定16位集群ID的已定义属性(和命令)列表


您的主设备可以通过发现过程获取属性ID列表,然后发送一个请求,一次获取多个ID的值。响应将使用16位ID、8位属性类型和可变长度数据进行压缩。即使您的主设备不知道ID对应的是什么,它也可以将数据传递给其他知道的系统(如web服务器)。

您可能希望通读规范,重点是一般命令。它描述了一个属性发现和检索系统。每个属性都有一个16位ID和一个确定其大小的数据类型(各种大小的整数、枚举类型、位图)

它是一个为802.15.4网络的小有效负载设计的协议,您可以基于它的一个子集建立您的协议。其他ZigBee规范只是一个给定16位集群ID的已定义属性(和命令)列表

您的主设备可以通过发现过程获取属性ID列表,然后发送一个请求,一次获取多个ID的值。响应将使用16位ID、8位属性类型和可变长度数据进行压缩。即使您的主设备不知道ID对应的是什么,它也可以将数据传递给其他知道的系统(如web服务器)