2012-06-24 3 views
1

GUI를 슬라이더로 만들고 싶습니다.이 슬라이더의 값은 직렬 데이터를 PIC 마이크로 컨트롤러로 전송하는 데 사용됩니다.Matlab GUI, char 출력이있는 슬라이더

슬라이더의 출력 값은 문자 또는 문자열이어야합니다.

  1. 여기에 입력 코드를 matlab gui에서 어떻게 정의 할 수 있습니까?

  2. 슬라이더의 출력 값 유형을 어떻게 알 수 있습니까? (INT, 숯, ...)

번호 : 슬라이더의 출력값 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 속성의 유형은 현재 가지고있는 스칼라 값입니다. 이 값은 각각 MinMax 사이이며 기본값은 각각 0과 1입니다. 다른 값으로 설정 했습니까?

이 초기화 섹션에 넣고 (슬라이더를 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, MaxSliderStep을 원하는 값으로 설정해야합니다. 처음에 링크 된 UIcontrol 속성 문서에서 관련 섹션을 찾으십시오. 또한 데이터를 부호없는 32 비트 값 (리스터가 아님)으로 보냅니다.

+0

하지만 직렬로 보내려면 데이터를 char로 변환해야합니까? – user1478421

+0

char 배열 (MATLAB의 문자열 유형) 로의 변환은'fprintf' 함수에 의한 것입니다. 32 비트 부호없는 정수를 포맷하기 위해 '% u'패턴을 사용했습니다. 나는 가능한 한 큰 범위를 허용하기 위해'uint32'를 사용했습니다. 이 특정 예에서는 0에서 100 사이의 범위에서'uint16' 또는'uint8'을 사용할 수도 있습니다. –

0

. 나는 당신이 어떤 종류의 숫자를 증가/감소시키는 슬라이더의 특성 때문에 int를 기대할 것입니다.

matlab의 'class()'함수를 사용하여 변수의 클래스를 결정할 수도 있습니다.

또한 슬라이더에 대한 콜백 루틴에서 슬라이더를 지정하여 필요한 출력을 제공 할 수 있습니다.