我正在尝试使用以下Arduino代码从我的Simblee Rfduino通信到Matlab:
char testing[] = {1,2,3,4,5,6,7,8,'\0'};
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(6,OUTPUT);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(6,LOW);
Serial.flush();
testing(EMG);
Serial.flush();
digitalWrite(6,HIGH);
}
在Python中,我能够以正确的顺序正确地读取1-8。
然而,在Matlab中,它不断改变顺序,没有一致性,使用以下代码:
function serial()
global ser
ser = serial('COM5', 'BaudRate', 9600, 'FlowControl', 'hardware');
fopen(ser);
end
function serial_callback(~, ~)
global ser
time = tic;
fread(ser,1) % pull in data from serial port
toc(time);
end
我认为串口缓冲区可能存在一些问题。 您能否就如何始终如一地让Matlab按顺序读取数据提供一些指导?有其他人能够让Matlab可靠地从串口读取吗? 谢谢!
答案 0 :(得分:0)
您可以将FlowControl设置为软件(xOn和xOff标志)。仅当您具有“硬件资源”时,才可以使用硬件。
matlab的输入缓冲区通常符合fifo原理。
在 fopen()之后,您必须等待一秒钟。因为某些微控制器(如arduino uno ...)在uart接口初始化后会重新启动。
-> 暂停(1);