Broken String对象 - Arduino

时间:2014-06-18 15:44:55

标签: c string arduino

我正在使用带有Asynclabs库的Arduino平台(一个用于旧的yellowjacket和redback wifi板的开源wifi库)。

某些东西打破了Arduino String对象(注意大写S)。

我只是使用一个简单的测试:

Serial.println("Test Strings:\n");
String junk = "Do Strings print or what?";
Serial.println(junk);
while (1) { delay(2000); Serial.print("+");}

这会在setup()块开始时按照您的预期进行打印。当我将它移动到wifi.init()调用之后,它仍然有效。但是当我在调用短网络交互后移动它时,它会被忽略,就好像它不在那里一样。除了第一个没有String对象的打印外,不会生成任何输出。

一切都编好了 - 我希望编译器会告诉我是否有库冲突。 我通过库文件grep'd用于“String”和“string”这个词的其他用途但是在那里什么都没看到。我将名为strings.c的文件重命名为canned_strings.c。仍然没有改善。

我有点失落。还有其他要寻找的东西吗? [一个注意事项 - 我看到几个库文件包含<string.h> - 这是一个不推荐使用的Arduino lib文件,应该切换到其他文件吗?调查......]

-Ross

1 个答案:

答案 0 :(得分:0)

最终很明显,String对象对于Arduino的紧凑资源来说太过密集了。

通过从代码中消除所有String类型的使用,并使用包含大量指针的char数组,解决了这个问题。这对RAM更加友好。

[另外 - 在Asynclabs Wifi库中,减少数据包的大小有助于进一步释放一些RAM。强烈推荐的策略,以取得任何进展。]