【问题标题】:Trying to understand UART packets I'm sending/receiving over a TCP connection试图理解我通过 TCP 连接发送/接收的 UART 数据包
【发布时间】:2016-01-11 09:53:22
【问题描述】:

我正在处理一个以前的工程师开始的项目。基本上,我们使用 WiFi 模块将数据从微控制器发送到我们的服务器。

到目前为止,我是这样解释代码的:

-模块创建一个AP,用户连接到该AP。
- 然后用户输入一个 IP/URL,允许他们选择他们的 WiFi 网络。
- 模块现在通过选定的网络进行通信。
- 模块每秒将一个套接字连接到我们的 TCP 服务器并发送一个数据包。
-如果服务器有一个命令给客户端,它会用一个命令包来响应。

我的困惑是试图理解数据包结构。

客户端发出的数据包以 [ESC][Z]['Connection ID'][0][0][0][6] 开头。我假设这与预定义的 UART 布局有关,但我以前从未使用过 UART。

然后,如果有命令,服务器会响应一个同样以 [ESC][Z]['Connection ID'][0][0][0][6] 开头的数据包。但是,客户端随后会使用一个以 [ESC][Z]['Connection ID'] 开头的数据包进行响应,然后是数据。

那么,我的数据包标题中的“0006”是什么?为什么客户端响应中不需要这些值?我假设“ESC”是向网络外部发送数据所必需的,并且“Z”是预定义的标头。但是,如果我错了,请纠正我!

【问题讨论】:

  • 可以是字节长度吗? IE。不。数据字节以下。客户端对命令的响应看起来就像一个确认。
  • 我真的不知道为什么我没有立即想到这一点,是的,下面的代码是序列号,它达到 6 个字节。 WiFi 模块的文档列出了一些 UART 命令,但没有解释数据,这就是我如此迷惑的原因。非常感谢!

标签: c tcp command packet uart


【解决方案1】:

标头中的数字只是标头字节之后数据包中剩余的字节数。 >

【讨论】:

  • 嘿!这就是我的答案;-)
猜你喜欢
  • 2021-12-14
  • 2012-03-10
  • 2012-09-27
  • 1970-01-01
  • 2014-07-01
  • 1970-01-01
  • 2013-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多