【发布时间】:2015-01-17 22:27:34
【问题描述】:
从 'byte*' 到 'byte' 的无效转换
我已经写了这个arduino函数
byte receiveMessage(AndroidAccessory acc,boolean accstates){
if(accstates){
byte rcvmsg[255];
int len = acc.read(rcvmsg, sizeof(rcvmsg), 1);
if (len > 0) {
if (rcvmsg[0] == COMMAND_TEXT) {
if (rcvmsg[1] == TARGET_DEFAULT){
byte textLength = rcvmsg[2];
int textEndIndex = 3 + textLength;
byte theMessage[textLength];
int i=0;
for(int x = 3; x < textEndIndex; x++) {
theMessage[i]=rcvmsg[x];
i++;
delay(250);
}
return theMessage;
delay(250);
}
}
}
}
}
这是错误
In function byte receiveMessage(AndroidAccessory, boolean) invalid conversion from byte*' to 'byte"
这个函数是从android接收数据并以字节数组的形式返回
【问题讨论】:
-
你不能这样做
return theMessage;,因为theMessage是一个局部变量,而且delay(250)在那里什么也不做。 -
有几个问题:1)return 语句返回一个'pointer to byte',但声明的返回类型是'byte' 2)在移动内存时不需要第一次延迟到记忆中。 3)第二个延迟将永远不会执行,因为它之前的return语句。 4) 当函数退出时,message[] 数组未定义,因此需要 malloc 一个区域并返回一个指向该 malloc'd 区域的指针。