【发布时间】:2019-04-21 19:34:21
【问题描述】:
我正在尝试通过 USB 在 Arduino 和 MATLAB 之间建立串行通信。我有这个基本代码,我将“hello”从 MATLAB 发送到 Arduino,然后我读回它并在 MATLAB 中打印它。然而,从 Arduino 发出的“你好”看起来像一个奇怪的文本。
阿杜诺:
void setup() {
Serial.begin(57600);
Serial.println("ready");
}
void loop() {
String input;
if (Serial.available()) {
char c = Serial.read();
while (c != '\n') {
input += c;
c = Serial.read();
}
Serial.println("I received: " + String(input));
input = "";
}
}
MATLAB:
s = serial('COM3');
set(s, 'BaudRate', 57600);
fopen(s);
pause(1);
first = strtrim(convertCharsToStrings(fgetl(s)));
if first == "ready"
fprintf(s, '%s', 'hello\n');
for i = 1:10
tline = strtrim(convertCharsToStrings(fgetl(s)));
disp(tline);
if size(tline, 2) > 0
fprintf(s, '%s', 'hello\n');
end
end
end
fclose(s);
MATLAB 中的输出如下所示:
I received: hÿÿÿÿÿÿeÿÿÿÿÿÿÿlÿÿÿÿÿÿÿÿlÿÿÿÿÿÿoÿÿÿÿÿÿÿ
另外,如果对改进我的串行通信代码提出任何建设性的批评,我将不胜感激。这是我第一次尝试做一个简单的设置,让 Arduino 和 MATLAB 轮流读写。谢谢。
【问题讨论】:
-
在 MATLAB 端,尝试
fprintf(s, '%s\n', 'hello');(注意\n字符在格式字符串而不是消息字符串中是如何出现的) .
标签: string matlab arduino serial-communication