2013-10-07 1 views
0

팝업 메뉴가있는 MATLAB (안내)을 사용하여 간단한 GUI를 개발 중입니다. 직렬 포트를 통해 연결을 설정하려면.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

내가 분명히 나쁘지 않아이 개 답변을 통해 쟁기 싫지만 여기 악마는 세부 사항에 있습니다. 예, MATLAB의 문자열을 + 연산자로 연결할 수는 없지만 첫 번째 빨간색 플래그는 +에 대한 인수 중 하나로 오류 메시지가 cell임을 나타냅니다. disp도 오류가 발생하지 않았으므로 +입니다. 이것은 내가 이 아니고 disp('serialPort ' + serialPortValue);이 아니기 때문에 코드가 serialPortListcell 어레이라고 생각합니다. 이것은 오타 였습니까?

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]);