javascript - 通过 MQTT 将图像从 Arduino 发送到 MOSCA 主机

标签 javascript node.js arduino mqtt mosca

我想使用 MQTT 将(jpeg)图像数据从 arduino 发送到 mosca 主机。 在 arduino 上我使用 PubSubClient-library。图像数据存储在 SPI 连接的 FIFO 上。

Arduino 草图:

size_t len = myMemory.read_fifo_length();
static const size_t bufferSize = 2048;
static uint8_t buffer[bufferSize] = {0xFF};

while (stuff) {
      size_t copy = (stuff < bufferSize) ? stuff : bufferSize;
      myMemory.transferBytes(&buffer[0], &buffer[0], copy);
      client.publish("transfer", &buffer[0], will_copy);
      stuff -= copy;
  }

在服务器端,我将 NodeJS 与 mosca 结合使用:

var image;
server.on('published', function(packet, client) {
  if(packet.topic == "transfer")
    image+=packet.payload;

   if (packet.topic == "eof")
    {
         fs.writeFile(client.id+".jpg", image, (err) => {
          if (err) throw err;
         console.log('It\'s saved!');
      });
    }
 });

到达的数据在保存到文件时甚至具有正确的 JFIF header ,但它是垃圾。

有什么建议吗?

最佳答案

PubSubClient 的默认最大数据包大小为 128 字节 ( http://pubsubclient.knolleary.net/api.html#configoptions ),这限制了您可以发送的消息的大小。

此大小适用于整个 MQTT 消息,因此包括 MQTT header 和有效负载。

除非您更改此设置,否则 2048 字节的缓冲区太大,无法一次性发送。

关于javascript - 通过 MQTT 将图像从 Arduino 发送到 MOSCA 主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37838003/

相关文章:

javascript - 如何使用 Realtime API 加载现有的大数据模型?

javascript - 使用字符代码获取字符串中单词的频率,JavaScript

javascript - Shopify 变体链接 - 显示选择的变体图像

javascript - 在另一个函数中使用异步

jquery - 是否可以用js、canvas、freetype在浏览器中进行实时排版?

c++ - 使用 USERNAME :PASSWORD but not for SERIAL:TOKEN? 进行字符串化

java - 我正在尝试使用 Socket 连接到 URL,但只能通过提供 IP 地址(Java android)进行连接

javascript - Ionic,从侧面菜单隐藏和显示元素

node.js - 有关异步编程实践的阅读 Material

arduino - 有没有办法处理 AVR/Arduino 微 Controller 中的堆内存碎片?