www.gusucode.com > vnt工具箱matlab源码程序 > vnt/vntblks/vntmasks/private/privatecanslconvertmsgs.m
function msgStruct = privatecanslconvertmsgs(canMsgObject) %PRIVATECANSLCONVERTMSGS Converts messages from message objects to structure. % % MSGSTRUCT = PRIVATECANSLCONVERTMSGS(CANMSGOBJECT) Converts CAN messages % from message objects, CANMSGOBJECT, to MATLAB structure of arrays, % MSGSTRUCT, as required by Simulink Replay block. % % CANMSGOBJECT: A valid can.Message object(s). % MSGSTRUCT: CAN Message structure with the following fields. % 1. ID: Array of unsigned 8-bit integers (UINT8) % 2. EXTENDED: Array of unsigned 8-bit integers (UINT8) % 3. ID: Array of unsigned 32-bit integers (UINT32) % 4. REMOTE: Array of unsigned 8-bit integers (UINT8) % 5. ERROR: Array of unsigned 8-bit integers (UINT8) % 6. TIMESTAMP: Array of doubles % 7. ID: Array of unsigned 8-bit integers (Row major) % SS 03-01-11 % Copyright 2011-2015 The MathWorks, Inc. % Check the argument count. narginchk(1,1); % Check the object validity. if ~isa(canMsgObject, 'can.Message') || ~all(isvalid(canMsgObject)) error(message('vnt:Message:InvalidMessageObject')); end % Create the required structure. nMsgs = length(canMsgObject); idField = uint32(zeros(1,nMsgs)); extendedField = uint8(zeros(1,nMsgs)); lengthField = uint8(zeros(1,nMsgs)); remoteField = uint8(zeros(1,nMsgs)); errorField = uint8(zeros(1,nMsgs)); timestampField = zeros(1,nMsgs); maxCANMessageLength = 8; dataField = uint8(zeros(maxCANMessageLength,nMsgs)); % Get the array of structures. tempStruct = [canMsgObject(:).PrivateRawStruct]; % Copy fields to individual arrays. [idField(:)] = [tempStruct(:).ID]; [extendedField(:)] = [tempStruct(:).Extended]; [remoteField(:)] = [tempStruct(:).Remote]; [errorField(:)] = [tempStruct(:).Error]; [timestampField(:)] = [tempStruct(:).Timestamp]; % Loop to copy data. for idx = 1:nMsgs currentData = tempStruct(idx).Data; dataLength = length(currentData); lengthField(idx) = dataLength; if (dataLength~=0) % Only copy when data exists. dataField(1:dataLength,idx) = currentData'; end end % Copy data to structure. msgStruct = struct('ID', idField, ... 'Extended', extendedField, ... 'Length', lengthField, ... 'Remote', remoteField, ... 'Error', errorField, ... 'Timestamp', timestampField, ... 'Data', dataField); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%