Matlab& Arduino串口通讯

时间:2015-03-07 12:11:57

标签: matlab serial-port arduino

我正在尝试启动并运行一些基本的串行通信。我的arduino代码如下所示。

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

      Serial.println('a');
      char a = 'b';
      while (a != 'a')
      {
        a = Serial.read();
      }
    }
    void loop()
    {
    }

和我的matlab代码:

delete(instrfindall);
s = serial('/dev/tty.usbmodem1421');
set(s, 'BaudRate', 9600);
set(s, 'DataBits', 8);
set(s, 'StopBits', 1);
set(s, 'Parity', 'none');
set(s, 'Terminator', 'LF');
fopen(s);

% VERIFY SERIAL COMMUNICATION HAS BEEN SETUP
a = 'b';
while (a~='a')
        a = fread(s,1,'uchar');
end
if (a == 'a')
    disp('Serial read')
end
fprintf(s,'%c','a');
mxbox = msgbox('Serial Communication Initialized'); uiwait(mxbox);

matlab代码执行,我得到消息框告诉我它已初始化,但是变量 a 未成功读取而while循环过早退出,调试我发现它实际上只是循环一次迭代然后继续。永远不会显示' Serial read'

任何帮助将不胜感激,提前谢谢。

注意

disp(size(a));disp(double(a));输出 1 0 之后添加fread并且不分别输出

1 个答案:

答案 0 :(得分:0)

看起来你的条件是合乎逻辑的否定,但事实并非如此。 a=[](或a=['a','b'])的条件均为假。什么都读不能解释你观察到的行为。请尝试使用此代码:

a = 'b';
while (~strcmpi(a,'a'))
        a = fread(s,1,'uchar');
end
if (strcmpi(a,'a'))
    disp('Serial read')
end