2012-06-24 117 views
1

我想让GUI有一个滑块,这个滑块的值将用于传输串行数据到PIC单片机。Matlab GUI,带字符输出的Slider

滑块的输出值必须是字符或字符串。

  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属性的类型是它当前具有的标量值。该值将在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

但我应该将数据转换为字符以便连续发送? – user1478421

+0

转换为字符数组(在MATLAB中的字符串类型)正在''fprintf'函数。我使用'%u''格式来格式化32位无符号整数。我使用'uint32'来允许尽可能大的范围。在这个具体的例子中,范围从0到100,你也可以使用'uint16'或'uint8'。 –

0

一般而言滑块的输出值将具有INT的类型。我会期待一个int,因为滑动的特性是滑动的,在滑动的过程中会沿着某种类型的增加/减少的数字滑动。

您还可以使用matlab中的'class()'函数来确定变量的类别。

此外,通过在滑块的回调例程中指定滑块,您可以使滑块为您提供所需的任何输出。