我正在使用MATLAB(指南)开发一个带有弹出菜单的简单GUI。为了通过串口建立连接。
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函数上收到错误消息:
未定义函数'plus'表示'cell'类型的输入参数。
指定了无效的PORT。
我怎样才能获得所选的值?
答案 0 :(得分:1)
我讨厌通过两个明显不错的答案,但这里的魔鬼就是细节。是的,您不能在MATLAB中将字符串与+
运算符连接,但问题中的第一个红色标记是您的错误消息指示cell
作为+
的参数之一。 请注意,disp
此时甚至没有抛出错误,它是+
。这让我相信您的代码实际上是disp('serialPort ' + serialPort);
而不是{{ 1}}因为disp('serialPort ' + serialPortValue);
是一个serialPortList
数组。这是一个错字吗?
因此,通过像cell
那样对其进行索引,您会在serialPort = serialPortList(serialPortValue);
中获得单个单元格,但这不适用于正确的字符串连接或serialPort
。这里的更正是使用花括号(disp
)。
与有效的字符串连接一起,
{}
由于您使用>> serialPort = serialPortList{serialPortValue};
>> disp(['serialPort ' serialPort])
serialPort 'COM3'
设置字符串的方式,单引号位于字符串中,因此如果要删除它,可以使用set(handles.popupmenuSerialPort,'String',...
。
请注意,如果您更熟悉这种字符串格式,也可以使用strrep(serialPort,'''','')
。
答案 1 :(得分:0)
你不能使用'+'来组合matlab中的字符串。 你可以这样做:
disp(['serialPort',num2str(serialPortValue)]);
答案 2 :(得分:0)
尝试数组连接:
disp(['SerialPort : ' serialPortValue]);