重定向串行数据输出(例如,串行到串行1)的最佳方法是什么

时间:2019-04-02 22:55:15

标签: c++ arduino embedded

我正在做一个项目,其中使用Arduino IDE和标准ATmel328p与用户的接口取决于他们的情况。 (微型)

某些用户将通过串行终端进行接口。 (使用Serial.print) 有些用户将通过串行终端与蓝牙进行接口。 (使用Serial1.print,micro具有2个串行接口) 某些用户将具有LCD屏幕。 (尚未实施)

我正在寻找从我的使用类的应用程序将数据重新路由到正确接口的最佳方法,而不必重写所有代码。

我考虑过使用函数指针并将其用作类对象构造函数中的参数。因此,我只更改了一个函数,所有数据便以正确的方式汇集到一起。

void wrapperfunction(char* data) {Serial.print(data);}

Class SOMETHING {
SOMETHNG(void (output)(char*)){}
}

我正在使用char *来传输数据,所以我正在发送一些字符串。 (这会给出将字符串强制转换为char *的编译警告,但好的,我可以忍受吗?)。

适用于字符串,但是问题是我的程序还使用了int和float值。 因此,仅更改用于早期原型制作的所有Seri​​al.print语句是行不通的。我必须先将所有内容都转换为字符串或char。

当我使用String()函数将所有整数转换为浮点数并转换为字符串时 我还注意到这非常昂贵,所有的字符串函数都占用我大约20%的内存...:(

这让我想知道我是否在正确的道路上解决这个问题... 我希望嵌入式C ++中的一些经验丰富的编码人员可以给我一些有关此类问题的最佳实践的建议。

预先感谢

PS:关于SO的第一个问题,如果我违反了一些规则,我已经很抱歉;-)

0 个答案:

没有答案