how can I pack the data in simulink without Vehicle Toolbox?
2 ビュー (過去 30 日間)
古いコメントを表示
how can I pack the data in simulink without Vehicle Toolbox?
0 件のコメント
回答 (1 件)
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
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Vehicle Network Toolbox についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!