How to decode a UDP packet without byte unpack

17 views (last 30 days)
I'm using simulink udp_receive to get some data. the data is a mix of different data types. I can't use the byte unpack block because it's not supported for code generation. i made a matlab function instead to read this. I'm using something like
function [data1,data2, data3] = fcn(u)
data1 = u(1,1);
data2 = u(2,1);
data3 = u(3:10,1);
end
to read the the specific byte wich works for data1 and data2 because they are 'uint8'. but i can't read data that are double or float in data3. using (3:10) read all the bytes but doesn't assume them as one variable.
Any suggestions?

Accepted Answer

Jonas
Jonas on 21 Sep 2021
Edited: Jonas on 21 Sep 2021
You can reassemble those 8 bytes into a 64 byte double by applying a bitshift to each byte to its correct position, using a bitor on all outputs of the bitshifts and then typecast the resulting uint64 to double.
Same can be done for the 4 bytes of a 'single' or float32.
It looks something like this:

More Answers (0)

Categories

Find more on Simulink Coder in Help Center and File Exchange

Products


Release

R2019b

Community Treasure Hunt

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

Start Hunting!