Как прочитать последовательные данные правильно через Matlab

Я использую Matlab, чтобы прочитать данные из последовательного порта, проникающего через микропроцессор. Данные находятся в шестнадцатеричном формате с каждым образцом 4 байтов (32 бита). Когда я прочитал эти данные, я получаю некоторую случайную последовательность чисел, которые не соответствуют переданным данным. Ниже мой код

s = serial('COM16'); %assigns the object s to serial port

set(s, 'InputBufferSize', 128); %number of bytes in inout buffer
set(s, 'FlowControl', 'none');
set(s, 'BaudRate', 921600);
set(s, 'Parity', 'none');
set(s, 'DataBits', 8);
set(s, 'StopBit', 1);
set(s, 'Timeout',100);
%clc;

disp(get(s,'Name'));
prop(1)=(get(s,'BaudRate'));
prop(2)=(get(s,'DataBits'));
prop(3)=(get(s, 'StopBit'));
prop(4)=(get(s, 'InputBufferSize'));

disp([num2str(prop)]);

fopen(s);           %opens the serial port

data = fscanf(s);

fclose(s); %close the serial port

Пожалуйста, скажите мне, что я делаю, неправильно делают это, я могу получить правильный сердечный звук. спасибо

3
добавлено отредактировано
Просмотры: 2
nl ja de
@HebeleHododo вы могли объявить о своем наблюдении как об ответе, чтобы препятствовать вопросу остаться нерешенными?
добавлено автор Dennis Jaheruddin, источник
Можете вы регулировать свой microcontroller' s baudrate? Если так, вы могли попробовать более низким baudrate? 921600 довольно высоко. 115200, возможно?
добавлено автор HebeleHododo, источник
Кроме того, вы пробовали предельной программой?
добавлено автор HebeleHododo, источник
Предельные программы позволяют вам соединяться с последовательным портом и посылать/получать данные. Можно попробовать Eltima' s программа. Это - 14-дневное испытание. Было хорошее бесплатное программное обеспечение один, но я can' t помнят имя прямо сейчас. Я попытаюсь найти его, когда у меня будет шанс.
добавлено автор HebeleHododo, источник
Я wouldn' t знают об аппаратных средствах:), Возможно, можно попробовать Электротехника
добавлено автор HebeleHododo, источник
@DennisJaheruddin сделан:)
добавлено автор HebeleHododo, источник
Я понял что я haven' t письменный терминал бесплатного программного обеспечения program' s имя. Это Realterm, в случае, если будущему посетителю нужен он.
добавлено автор HebeleHododo, источник
Несомненно, я дам ему попытку. На самом деле алгоритм требует, чтобы моя скорость UART была довольно высока, that' s, почему я установил его в 921600.
добавлено автор Khushboo, источник
Что вы подразумеваете под предельной программой? Я don' t знают об этом. Можно ли объяснить его?
добавлено автор Khushboo, источник
Эй, я попробовал более низкой Скоростью в бодах, и она работает отлично:) Большое спасибо. Я просто должен видеть, позволяют ли мои аппаратные средства мне использовать эту Скорость в бодах. В случае, если, если это doesn' t - там какой-либо способ заставить его работать на более высокой скорости в бодах?
добавлено автор Khushboo, источник
Мое аппаратное ограничение doesn' t позволяют быть, понижаются 921600, таким образом, я думаю, что переключился бы на C или Яву. Какая-либо идея, если 921600 скоростей в бодах приемлемы там?
добавлено автор Khushboo, источник
Я получаю его работающий в C:)
добавлено автор Khushboo, источник

2 ответы

Можно понизить baudrate к чему-то более стандартному, как 115200.

Можно также попробовать предельной программой.

2
добавлено
serialOne=serial('COM1', 'BaudRate', 9600);

fopen(serialOne);

fprintf(serialOne,'textFile.txt'); <<<---this is for write  (for read, use fscanf)

fclose(serialOne);
0
добавлено