2012-06-24 3 views
1

Я хочу, чтобы GUI имел ползунок, это значение ползунка будет использоваться для передачи последовательных данных на микроконтроллер PIC.Matlab GUI, слайдер с выходом char

Выходное значение ползунка должно быть символом или строкой.

  1. Как я могу определить, введите здесь переменную переменной в matlab gui?

  2. Как узнать тип выходного значения ползунка? (INT, символ, ...)

код:

s=serial('COM7'); 
slider_value = get(handles.slider3, 'value'); 
fopen(s); 
fprintf(s,'%s',slider_value); 
fclose(s) 

ответ

1

Полезная информация: http://www.mathworks.se/help/techdoc/ref/uicontrol_props.html.

Тип свойства Value - скалярное значение, которое в настоящее время имеет. Это значение будет находиться между Min и Max, которое по умолчанию равно 0 и 1 соответственно. Вы установили их в другие значения? Скалярная величина, вероятно, будет в двойном представлении, так что вам нужно преобразовать в строку:

Поместите это в Init-секции (ползунок, который идет от 0 до 100):

set(handles.slider3, 'Min', 0); %set min to 0 (default) 
set(handles.slider3, 'Max', 100); %set min to 100 (default) 
set(handles.slider3, 'SliderStep', [1 10]); 

И это ваша обратная связь:

s = serial('COM7'); 
slider_value = get(handles.slider3, 'Value'); 
fopen(s); 
fprintf(s, '%u', uint32(slider_value)); 
fclose(s) 

Выше приведен пример. Вы должны установить Min, Max и SliderStep, что вам нужно. Найдите соответствующие разделы в документации по свойствам UIcontrol, с которой я ссылаюсь в начале. Следует также отметить, что я отправляю данные в виде 32-битного значения без знака (а не для перезаписи).

+0

но мне нужно преобразовать данные в char, чтобы отправить их серийно? – user1478421

+0

Преобразование в массив символов (тип строки в MATLAB) осуществляется функцией 'fprintf'. Я использовал шаблон ''% u'' для форматирования 32-разрядного целого числа без знака. Я использовал 'uint32', чтобы разрешить как можно больший диапазон. В этом конкретном примере с диапазоном от 0 до 100 вы также могли использовать 'uint16' или' uint8'. –

0

В целом выходное значение ползунка будет иметь тип Int. Я ожидал бы int из-за характера ползунка, в котором вы скользите по возрастающим/уменьшающимся числам.

Вы также можете использовать функцию «class()» в matlab для определения класса переменной.

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