Jump to content

    

чтение строки БАЙТОВ по UART

Изучаю АЦП, 24 битное.

Формирую контроллером пакет из 200 измерений по 3 байта и сбрасываю пакетом по UART. Пакет завершаю CR/LF по нему matlab принимает 602 символа. Вроде все правильно.

Не могу понять как настроить matlab т.к. в принимаемой переменной все перекодировано в русские символы.  

Пробовал по разному

data_RS = query(obj1, 'S', '%c','%с')

data_RS =query(obj1, 'S', '%c' ,'unsigned character (uchar)');

data_RS =query(obj1, 'S', '%c' ,'unsigned integer 8 bits (uint8)');

в итоге мусор "  &  /  !   яы          яяря... итд"

Share this post


Link to post
Share on other sites

data_RS =uint8(query(obj1, 'S', '%c' ,'unsigned integer 8 bits (uint8)'));

добавил uint8

Доброй ночи)

Share this post


Link to post
Share on other sites

Так и не смог пока разобраться. В итоге кроме последних символов в пакете "\r\n" После uint8 случайный результат 80% числа 255 и 0 и редко от 0-20. Такое ощущение что "\r\n" добавляет библиотека матлаба.

Пробовал вторым байтом передавать константу 0хСС. Terminal com порта видит все адекватно. 

Share this post


Link to post
Share on other sites

to x893 - Спасибо!

Так сразу и не догадаешься, что есть другие функции. Все получилось через  data_RS = fread(obj1).

Может быть знаете от чего зависит скорость обновления графиков в матлабе? Таймаут по UART 0,1c, а график  plot обновляется не чаще 0.5 -1 с.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this