2016-11-25 76 views
0

私はMatlabからarduinoにいくつかのデータを送信しようとしています。それは[1 by 2]の行列です。私の計画は、この2つの数字を文字列に変換し、arduinoに送信することです。しかし、シリアルモニタでは、私はmatlabから来る任意の値を読み取ることができません。Matlab arduinoシリアル通信

これは、

val_a = matt(n,:); 
       A = [val_a]; 

       asd = A(1:1); 
       asb = A(:,2); 
       strA = num2str(asd); 
       strB = num2str(asb); 
       comma = ','; 
       endVal = '#'; 
       theString = strcat(strA,comma,endVal); 

       obj1 = instrfind('Type', 'serial', 'Port', 'COM19', 'Tag', ''); 

       if isempty(obj1) 
        obj1 = serial('COM19'); 
       else 
        fclose(obj1); 
        obj1 = obj1(1); 
       end 

       fopen(obj1); 
       fprintf(obj1,theString) 

       fclose(obj1); 
       delete(obj1); 
       A = []; 

私のMathWorks社のMATLABコードであり、これはarduinoの

bool gotalfa = false; 
bool event = false; 
void serialEvent() { 
while (Serial.available()) 
{ 
    char inChar = (char)Serial.read(); 
    event = true; 
    if (inChar == , && !gotalfa) 
    { 
    alfa = inputString; 
    inputString = ""; 
    gotalfa = true; 
    event = false; 
    } 
    if (inChar == '#' && gotalfa) 
    { 
    theta = inputString; 
    gotalfa = false; 
    inputString = ""; 

    Serial.print("alfa "); 
    Serial.print(alfa); 
    Serial.print("theta "); 
    Serial.println(theta); 

    //some program.... 
    event = false; 
    } 
    if(event) 
    { 
    inputString += inChar; 
    }}} 

のシリアルイベントである私は、MATLAB/Arduinoのコードに何も変更する必要があります。役立つヒントをいただければ幸いです。

がうまくいけば、それは答えにあなたを指し、事前

答えて

0

にだけヒントをいただき、ありがとうございます。

エラーの根本原因を特定するために、puttyやteratermのような端末プログラムを使用します。

つまり、arduinoのシリアルポートに特定の文字列を送信し、予想される文字列を返すかどうかを確認するためにputty/teratermを実行します。

http://www.putty.org/ https://ttssh2.osdn.jp/index.html.en

また、Arduinoの中ReadStringUntilを使用することを検討してください。 https://www.arduino.cc/en/Serial/ReadStringUntil

希望します。

関連する問題