我正在尝试启动并运行一些基本的串行通信。我的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
并且不分别输出
答案 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