how can I pack the data in simulink without Vehicle Toolbox?
1 view (last 30 days)
Show older comments
how can I pack the data in simulink without Vehicle Toolbox?
0 Comments
Answers (1)
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
0 Comments
See Also
Categories
Find more on Vehicle Network Toolbox in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!