在ESP32上使用ASyncUDP将packet.data()保存为字符串

时间:2019-10-05 23:47:07

标签: arduino esp32

我基本上已经使用了AsyncUDP Server example,并且试图将rowSums(anscombe[grep("^x", names(anscombe))] > 10 & anscombe[grep("^y", names(anscombe))] > 9) # [1] 0 0 1 0 1 1 0 1 2 0 0 的内容保存到字符串中。我遇到了关于packet.data()的各种错误。我已经为此苦苦挣扎了好几个小时,而且还没有记录每一步。

如果我使用invalid conversion,我会得到String testString = packet.data();

我显然不擅长C语言,无法完全理解所有这些数据类型,指针等,以及如何摆脱似乎很简单的问题。

1 个答案:

答案 0 :(得分:0)

保存版本:

self.show_frame(Class_second)

如果数据包的数据以null结尾,则以下操作应该有效:

char* tmpStr = (char*) malloc(packet.length() + 1);
memcpy(tmpStr, packet.data(), packet.length());
tmpStr[packet.length()] = '\0'; // ensure null termination
String testString = String(tmpStr);
free(tmpStr); // Strign(char*) creates a copy so we can delete our one

这是可能的,因为 unit8_t *本质上与 char *相同,但是编译器本身无法进行此转换,因此您必须执行显式操作投。 然后可以使用 String(char *)的构造函数。