Я хотел бы отправить более 150 целых чисел (16 бит) из Matlab (R2015a) в Arduino (Mega 2560). По этой причине я отправляю эти числа в массив. Однако размер буфера составляет 64 байта. Мое решение здесь: после того, как Matlab записывает массив в буфер, он ждет сообщение (номер) от Arduino. После того, как Arduino читает буфер, он отправляет сообщение (номер) в Matlab.Отправить Array от Matlab до Arduino
Matlab код:
arduino=serial('COM5','BaudRate',9600);
fopen(arduino);
q=150;
X=rand(1,q);
d=floor(q/64);
r=rem(d,64);
n=1;
while(n<=d+1)
if(n~=d+1)
Z=[];
for w=(64*(n-1)+1):64*n
Z=[Z X(w)];
end
fprintf(arduino,'%d',Z);
b1=fread(arduino,1);
if(b1==99)
n=n+1;
end
else
Z=[];
for w=1:r
Z=[Z X(w)];
end
fprintf(arduino,'%d',Z);
b2=fread(arduino,1);
if(b2==99)
n=n+1;
end
end
end
fclose(arduino);
Arduino Код:
char matlabdata[64];
int index;
int mode=0;
void setup() {
Serial.begin(9600);
}
void loop() {
if(mode==0){
if(Serial.available()>0){
index = Serial.readBytesUntil(' ',matlabdata,64);
matlabdata[index] = '\0';
mode=1;
}
}
else if(mode==1){
Serial.write(B01100110);
mode=0;
for(int x=0; x<64;x++){
matlabdata[x]='\0';
}
}
Serial.flush();
}
Matlab Ошибка:
Unexpected error: The number of bytes written must be less than or equal to OutputBufferSize-BytesToOutput..
Daniel, я хотел бы написать массив в буфер при одном соединении. Как я могу обработать его с помощью fwrite? – blknt
Я не понимаю ваш вопрос. – Daniel
Я хотел бы отправить массив в Arduino, используя буфер один раз. – blknt