如何优化大数据字符串的串行通信?

How do I optimize serial communication for large data strings?

我正在使用 Arduino Uno 和 WS2812b LED 条纹。

我想做什么:

所以我有一个 12 x 10 的 LED 网格,我制作了一个软件,可以将这些 LED 映射到我可以绘制的相同大小的纹理。 我现在想制作多个纹理并将它们一个一个地发送到arduino以创建类似动画的东西,这样我就不必自己编写像素位置代码了。

问题:

如果我只是将此数据作为字符串中的数字发送,则缓冲区大小需要 120 * 12 字节 = 1440 字节。 我试图将数字转换为十六进制值。但是我仍然需要 960 字节的缓冲区。 任何更高的基在这里都无济于事,因为即使使用 base36,我也需要 2 个字符来表示 255。

我的做法:

我能否以某种方式扩展 ASCII 字符 table 或创建自己的字符? 或者我可以将原始字节数据发送到 arduino 而不是使用 strings/char 数组吗?

或者你有其他的方法吗?我很好奇。

我现在有一个或多或少好的解决方案。

我只是将 LED 索引作为十六进制字符串和一个字符发送过来,告诉我它是打开还是关闭。 这将总量减少到 360 字节,但我只能在 arduino 端设置颜色。

RGB 有 3 个字节,寻址一个 120 的 LED 需要 1 个字节。为什么您认为它需要 12 个字节而不是 4 个字节?也许你必须在真实地址转换中添加一些内部索引。

而且如果您始终发送所有像素,则根本不需要发送地址。进行 360 字节 + 一些开始同步,这可能是串行线路上的“中断”。

在 115200 这将以大约 30 fps 结束。

此外,您可以进行一些“打包”,例如之前发送一次色图,然后 select 使用 256 色色图中的 1 个字节,以 90 fps 结尾。