【问题标题】:Matlab GUI, Slider with char outputMatlab GUI,带有字符输出的滑块
【发布时间】:2012-06-24 18:27:28
【问题描述】:

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

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

  1. 如何在 matlab gui 中定义 enter code here 变量?

  2. 如何知道滑块输出值的类型? (int, char, ...)

代码:

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

【问题讨论】:

    标签: matlab user-interface slider serial-port matlab-guide


    【解决方案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)
    

    以上只是一个例子。您应该将MinMaxSliderStep 设置为您想要的。在我一开始链接到的 UIcontrol 属性文档中找到相关部分。您还应该注意,我将数据作为无符号 32 位值(不是重铸)发送。

    【讨论】:

    • 但我应该将数据转换为 char 以便串行发送吗?
    • 通过fprintf 函数转换为char 数组(MATLAB 中的字符串类型)。我使用'%u' 模式来格式化 32 位无符号整数。我使用uint32 来允许尽可能大的范围。在这个特定示例中,范围从 0 到 100,您也可以使用 uint16uint8
    【解决方案2】:

    一般情况下,滑块的输出值将具有 int 类型。由于滑块的性质,我期望一个 int ,您在其中沿着某种增加/减少的数字滑动。

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

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

    【讨论】:

      猜你喜欢
      • 2015-10-03
      • 1970-01-01
      • 2014-12-25
      • 1970-01-01
      • 2022-01-01
      • 2016-02-11
      • 1970-01-01
      • 2012-07-05
      相关资源
      最近更新 更多