c++ - 如何从 MPU 陀螺仪发送的字节数组中获取整数

标签 c++ mqtt esp8266 mpu

我正在尝试读取 HTML 网站上的 MPU 数据。我使用 MQTT 进行连接,使用 ESP8266 发送数据。这工作得很好,但我的问题是 esp 只是发送字节数组,我不知道如何将它们转换成数值。

这是 MQTT 发送数据时 JavaScript 控制台向我显示的内容:

[Log] Buffer [51, 50] (2) 
[Log] Buffer [51, 50] (2) 
[Log] Buffer [51, 50] (2) 
[Log] Buffer [51, 50] (2) 
[Log] Buffer [51, 50] (2) 
[Log] Buffer [51, 50] (2) 

在我的代码中,我尝试将值转换为字符串,因为 MQTT 似乎不发送普通整数。

if (myMPU.readByte(MPU9250_ADDRESS, INT_STATUS) & 0x01)
{
  myMPU.readAccelData(&myResultAcc);
}

myMPU.updateTime();

//myResultAcc.printResult();
//myResultGyro.printResult();
//myResultMag.printResult();

//i think this converts a undefined value into a string
char str[12];
sprintf(str, "%d", myResultAcc);
Serial.println(str);
client.publish("esp/gyro",str);
Serial.println();

delay(600);

最佳答案

所有 MQTT 负载都是字节数组,这意味着它可以轻松传输任何内容。

您可以使用 paho 客户端从 HTML 页面中接收的字节数组中读取整数。您需要使用 Typed Arrays您使用哪种类型取决于您尝试读取的整数的大小。鉴于它看起来像你有 2 个字节那么它可能是一个 16 位整数所以你需要一个 Int16Array

var intArray = Int16Array.from(buffer);
var value = intArray[0];

您可以在我的博客上找到示例 here

关于c++ - 如何从 MPU 陀螺仪发送的字节数组中获取整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48380286/

相关文章:

c++ - 引用对象的良好做法

windows - MQTT 代理窗口

ssl - 使用带 mosquitto 的 TLS 运行 mosquitto 代理时遇到错误

arduino - 如何通过 ESP8266 创建 TCP 服务器?

c++ - 休眠功能但不阻止其他功能和代码

c++ - EnumProcessModulesEx 无法返回错误代码 299 (ERROR_PARTIAL_COPY)

C++ 函数定义和变量声明不匹配?

c++ - 在 comparable_distance 中使用 boost 段失败,而 linestring 有效

arduino - MQTT client.publish() 和 delay()

linux - 使用 telnet 从远程主机检索变量(或状态文件)?