2013-10-07 21 views
0

我正在開發一個簡單的GUI,帶有一個彈出菜單的MATLAB(指南)。爲了通過串口建立連接。從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功能的錯誤消息:輸入參數

未定義功能「加號」類型'細胞'。

指定了無效的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

嘗試陣列連接:
disp(['SerialPort : ' serialPortValue]);