How to decode a UDP packet without byte unpack

15 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)

Products


Release

R2019b

Community Treasure Hunt

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

Start Hunting!