2013-10-07 2 views
0

Я разрабатываю простой графический интерфейс с MATLAB (руководство) с всплывающим меню в нем. Чтобы установить соединение через последовательный порт.Возвращает значение String из моего всплывающего меню в MatLab

function sendLog_OpeningFcn(hObject, eventdata, handles, varargin) 
set(handles.popupmenuSerialPort,'String', {'''COM1''','''COM2''','''COM3''','''COM4'''}); 
... 

Я хотел бы получить выбранное значение таким образом:

serialPortList = get(handles.popupmenuSerialPort,'String'); 
    serialPortValue = get(handles.popupmenuSerialPort,'Value'); 
    serialPort = serialPortList(serialPortValue); 
    disp('serialPort ' + serialPortValue); 

Но я получаю сообщение об ошибке на функции DISP:

Неопределенная функция «плюс» для входных аргументов типа 'cell'.

Указанный недопустимый PORT.

Как я могу получить выбранное значение?

ответ

1

Я ненавижу пахать через 2 ответов, которые явно не плохо, но вот дьявол кроется в деталях. Да, вы не можете объединить строки в MATLAB с оператором +, но первый красный флаг в вашем вопросе состоит в том, что ваше сообщение об ошибке указывает cell как один из аргументов +. Обратите внимание, что disp даже не выбрасывает ошибку на этом этапе, это было +. Это заставляет меня думать, что ваш код на самом деле disp('serialPort ' + serialPort); не disp('serialPort ' + serialPortValue); с serialPortList - это массив cell. Это опечатка?

Итак, указав его как serialPort = serialPortList(serialPortValue);, вы получите одну ячейку в serialPort, которая не будет работать с правильной конкатенацией строк или disp. Коррекция здесь заключается в использовании фигурных скобок ({}).

вместе с действительной конкатенацией,

>> serialPort = serialPortList{serialPortValue}; 
>> disp(['serialPort ' serialPort]) 
serialPort 'COM3' 

Одиночные кавычки в строке из-за того, как вы установите строки с set(handles.popupmenuSerialPort,'String',..., так что если вы хотите, чтобы раздеться, что вы можете использовать strrep(serialPort,'''','').

Обратите внимание, что вы также можете использовать fprintf, если вам более удобно с этим стилем форматирования строк.

0

Вы не можете использовать '+', чтобы комбинировать строки в matlab. вы можете сделать:

disp(['serialPort',num2str(serialPortValue)]); 
0

Try массива конкатенации:
disp(['SerialPort : ' serialPortValue]);

Смежные вопросы