我想获取到行为端的数据,以及控制TFT屏幕显示不同的内容。之前只是简单地使用过arduino ide的串口调试器,将刺激呈现的时间戳发送给串口。昨天看到一篇教程,提及matlab可以接收串口数据,经查阅,也可以向串口发送数据,这样一来就可以在matlab中直接获取串口内的时间戳,也可以通过串口给arduino发送控制信息。

matlab端

1
2
3
4
5
6
s = serialport('COM7', 9600);
while 1
write(s, trial_types(randi(size(trial_types,2))), "string"); % 向串口写数据
str = readline(s); % 从串口读数据
disp(strtrim(str));
end

arduino端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
void setup() {
Serial.begin(9600);
}

String readLine(){
String str = "";
while(Serial.available()){
str += char(Serial.read());
delay(2);
}
return str;
}

void loop() {
String str = readLine();
if (str.length() != 0){
Serial.println("Arduino: " + str);
}
}

补充

  1. 端口号可以在设备管理器的端口中查看
  2. 使用matlab向串口发送数据有一定的延时,最好的解决方案是放在while循环中

参考文章