在arduino中解析canbus数据的最佳方法?

时间:2019-07-15 14:32:24

标签: c++ c parsing arduino

我将esp32和arduino ide连接到canbus。我从rx_frame.data.u8 []获取数据流,它具有8个字节,例如。 [FF,FF,FF,61、3F,FF,FF,FF];

我需要使用rx_frame.data.u8 [3]和rx_frame.data.u8 [4]例如61和3F,将它们设置为intel字节顺序(反向字节顺序?),例如。 3F61并转换为DEC。它应该返回16255。

问题:我无法将rx_frame.data.u8 []转换为Intel字节顺序,然后转换为DEC。我已经尝试了几件事,我能够使用String engspd1 = String(rx_frame.data.u8 [4],HEX)+ String(rx_frame.data.u8 [3],HEX)来设置intel字节顺序。但是现在我无法将String engspd1转换为DEC。 另外,我将解析大量数据,所以我不确定哪种方法最适合解析这种数据流。

P.S。很抱歉,如果我通过不同的命名方式在问题中犯了一些错误。我只是从C,C ++和arduino ide开始。

dblclick

2 个答案:

答案 0 :(得分:0)

在您的代码中,您正在访问字节5和4,而不是3和4。这是您的问题吗? C数组的索引为零,因此3和4是您想要的字节的位置。

答案 1 :(得分:0)

您只需添加字节即可获得所需的结果。 (您的数组不是十六进制的,因为这只是控制器不了解的一种表示形式。

int engspd2 = rx_frame.data.u8[4] << 8 + rx_frame.data.u8[3];