ESP NOW 接收器报告的 int 与我发送的相比不正确

问题描述 投票:0回答:0

使用 ESP8266 和 ESP NOW 以及随机书呆子教程中的公共域代码模板,我有一个字节到十进制的问题需要帮助解决。

在 ESP Sender 草图中,我存储从 Arduino 的 AnalogRead(A0) 发送的“int”。我可以在接收器串行监视器中 Serial.print(Analog_value) 这个 int 完全正常,例如它看起来像“1035”

但是当我将此值分配给“Senders struct 的 int 成员”,然后实际将该结构发送到第二个 ESP8266,该 ESP8266 被指示打印接收到的“来自结构的 int”,它不起作用。它只看到ASCII 值 .

为了排除故障,我剥离了另一个结构体的成员,只拥有 int 本身并重复该过程,但现在,打印出接收到的 int,为模拟值的每个数字给出了单独的 ASCII 代码! (比以前更好 - 至少我可以看到数据的表示,但它引出了一个问题:为什么以前没有出现这整套 ASCII 值?)。

对于 1035 的模拟值,我看到第一个数字 1(千)的 ASCII 代码为“49”,第二个数字 0(百)的 ASCII 代码“48”,3(十)的 ASCII 代码“51”,然后是 ASCII代码“53”代表 5(单位)。然后是 ASCII 代码和 /r & /n 代码。
接收端我看到了...
收到的字节数:4
智力:49
收到的字节数:4
智力:48
收到的字节数:4
智力:50
收到的字节数:4
智力:51
收到的字节数:4
智力:13
收到的字节数:4
智力:10

但是,当要发送的 int 只有一个数字时,例如‘8’并生成这样的serial.print数据...
收到的字节数:4
智力:56
收到的字节数:4
智力:13
收到的字节数:4
智力:10

无论发送“8”还是“1035”,接收 4 个字节的一致性一定意味着正在发送的是 2 字节“空间”来包含我的 int 值 - 当然由代表“的位”填充8' 或 '1035'。那么为什么这个 2 字节值后来被分割成 int 的每个十进制数字的 10 次幂,并且当我执行 serial.print 命令时打印该字符数字的 ASCII 值呢?其他 int 类型的serial.prints 显示正常的小数。我怎样才能打印出发送的前两个(4个)字节的十进制值并让变量保存正常的十进制值?

struct esp-now
© www.soinside.com 2019 - 2024. All rights reserved.