具有十进制元素的串行发送和接收矩阵

时间:2016-10-11 15:29:39

标签: matlab arduino simulink arduino-uno arduino-ide

我使用我的arduino作为硬件在环(HIL)模拟以及simulink。现在我想要的是将带有十进制元素的矩阵串行传输到我的arduino,让arduino执行一些简单的计算并返回小数值。

这是我用于我的arduino接收数据的代码:

#include <MatrixMath.h>

float incomingbyte;

void setup() 
{

Serial.begin(9600);

}

void loop() 
{

 if(Serial.available()>0){
 incomingbyte = Serial.read();
}

Serial.write(incomingbyte*2);
delay(1000);

}

总是会给我以下错误:

exit status 1
call of overloaded 'write(float)' is ambiguous

我所做的simulink图如下所示:

Simulink Diagram

我注意到只通过串口发送uint8有效,我在发送之前没有尝试将数字转换为uint8,基本上没有任何反应。

有没有办法传输带十进制元素的矩阵?

感谢。

1 个答案:

答案 0 :(得分:1)

如果你想以文本格式发送浮动,你必须使用Serial.print(float_var);和一些分隔符,如空格或换行符(使用println)。

如果要在其二进制表示中发送浮点值,则必须使用Serial.write((byte*)&float_var, sizeof(float_var));,因为写入目的是发送原始字节。

我没有使用你的float incomingbyte,因为这是一个非常误导的名字。