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

4 次查看(过去 30 天)
how can I pack the data in simulink without Vehicle Toolbox?

回答(1 个)

Adel Fernandez
Adel Fernandez 2019-3-25
编辑:Adel Fernandez 2019-3-26
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

类别

Help CenterFile Exchange 中查找有关 Simulink 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by