Проблема с последовательным буфером Matlab

Я пытаюсь связаться с моим Simblee Rfduino с Matlab со следующим кодом Arduino:

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 надежно читать с последовательного порта? Спасибо!


person pjay    schedule 01.06.2016    source источник


Ответы (1)


Вы можете установить FlowControl на программное обеспечение (флаги xOn и xOff). Аппаратное обеспечение возможно только в том случае, если у вас есть «аппаратные ресурсы».

Входной буфер Matlab обычно работает по принципу fifo.

После fopen() вам нужно подождать одну секунду. Потому что некоторые микроконтроллеры (типа arduino uno...) перезагружаются после инициализации интерфейса uart.

--> пауза(1);

person matt    schedule 28.05.2019