2016-07-18 7 views
0

Я пытаюсь отправить некоторые данные из Matlab в Arduino, но я не получаю то, что ожидаю, когда я отправляю '5' в двойной переменной, я получаю символ ' e 'на Терминале Arduino.Matlab -> Arduino Serial commnication

На платформе Arduino код:

void setup() 
{ 
    Serial.begin(9600); 
} 

void loop() 
    { 
     if (Serial.available()) 
     { 
      Serial.write(Serial.read()); 
     } 
} 

И код MATLAB является:

data=5 
PS=serial('COM11','BaudRate',9600); 

fopen(PS); 

fwrite(PS,data) 

fclose(PS); 
delete(PS); 
clear PS; 
+0

вы пробовали использовать [ 'fprintf'] (http://de.mathworks.com/help/matlab/ref/serial.fprintf.html) вместо ? Ваш '5' не будет отправлен как строка, а как двоичные данные, см. [' Fwrite'] (http://de.mathworks.com/help/matlab/ref/serial.fwrite.html). Я думаю, что Ардуини работает над струнами, не так ли? 'fwrite' позволяет вам установить« точность », это также может помочь, если вы используете его как двоичный код в коде Arduino. –

ответ

0
 Serial.write(Serial.read()); 

это отправляет именно то, что вы получите, так что это не очень полезно узнайте, что вы получили.

  • У вас есть возможность отправить его в другое место?
    Serial1, Softserial, lcd?
  • Serial.read() возвращает Int, так что вы можете использовать Serial.println (Serial.read())
    , чтобы увидеть код, что вы получили
  • ... и число байтов, полученных
  • отправка/reveiving текст вместо двоичного иногда делает жизнь проще

 Смежные вопросы

  • Нет связанных вопросов^_^