www.gusucode.com > robotsimulink 工具箱 matlab源码程序 > robotsimulink/robotslros/+robotics/+slros/+internal/+block/SubscribeBlockMask.m
classdef SubscribeBlockMask < robotics.slros.internal.block.CommonMessageMask %This class is for internal use only. It may be removed in the future. %SubscribeBlockMask - Block mask callbacks for Publish block % Copyright 2014-2015 The MathWorks, Inc. properties (Constant) MaskParamIndex = struct( ... 'TopicSourceDropdown', 1, ... 'TopicEdit', 2, ... 'MessageTypeEdit', 3 ... ); MaskDlgIndex = struct( ... 'TopicSelect', [2 1 3], ... % Tab Container > "Main" tab > Topic Select Button 'MessageTypeSelect', [2 1 5] ... % Tab Container > "Main" tab > Msg Select Button ); SysObjBlockName = 'SourceBlock'; end methods function updateSubsystem(obj, block) sysobj_block = [block '/' obj.SysObjBlockName]; const_block = [block '/Constant']; % Do not canonicalize the topic name (i.e., if user entered % "foo", don't convert it to "/foo"). This enables user to % control whether to have a relative or absolute topic name in % generated code. topic = get_param(block, 'topic'); rosMessageType = get_param(block, 'messageType'); [busDataType, slBusName] = robotics.slros.internal.bus.Util.rosMsgTypeToDataTypeStr(rosMessageType, bdroot(block)); % note: we use the block id of the parent, not the sys_obj block blockId = robotics.slros.internal.block.getCppIdentifierForBlock(block, 'Sub_'); modelName = bdroot(block); set_param(sysobj_block, 'SLBusName', slBusName); set_param(sysobj_block, 'ROSMessageType', rosMessageType); set_param(sysobj_block, 'ROSTopic', topic); set_param(sysobj_block, 'ModelName', modelName); set_param(sysobj_block, 'BlockId', blockId); set_param(const_block,'OutDataTypeStr', busDataType); end end methods(Static) function dispatch(methodName, varargin) obj = robotics.slros.internal.block.SubscribeBlockMask(); obj.(methodName)(varargin{:}); end end end