how can I pack the data in simulink without Vehicle Toolbox?

2 views (last 30 days)
Gabriela
Gabriela on 2 Apr 2014
Edited: Adel Fernandez on 26 Mar 2019
how can I pack the data in simulink without Vehicle Toolbox?

Answers (1)

Adel Fernandez
Adel Fernandez on 25 Mar 2019
Edited: Adel Fernandez on 26 Mar 2019
data = zeros(1,8);
data = can_pack(data, hex2dec('FA0') ,8,12);
data = can_pack(data, hex2dec('C0BC4') ,22,20);
data = can_pack(data, hex2dec('2') ,45,2);
dec2hex(data)
function data = can_pack(data,value,start,len)
masks = [1,3,7,15,31,63,127,255];
while len > 0
%% compute local variables in current iteration
byte_index = floor(start/8)+1; % get byte inside payload
bits_to_shift = mod(start,8); % get start bit inside byte
% get bits quantity to put inside a byte
bits_packed = (8-bits_to_shift);
if bits_packed > len
bits_packed = len;
end
mask = masks(bits_packed); % get the mask to use, alternatives bitshift(1,bits_packed)-1 or 2^bits_packed-1
%% update message payload
% bit operation data[i] = data[i] | ( (value & mask) << bits)
data(byte_index) = bitor(data(byte_index),bitshift( bitand(mask,value),bits_to_shift));
%% update input parameters to next iteration
start = start + bits_packed; % update start bit to continue processing
value = bitshift(value,-bits_packed); % update value to continue processing
len = len - bits_packed; % update the length to continue processing
end
end

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!