MATLAB Answers


Simulink: uint8 vector to individual uint8s

Asked by Andreas Nagl on 14 Oct 2017
Latest activity Commented on by Andreas Nagl on 17 Oct 2017
I need to send 6 bytes via the Arduino TCP/IP Send block (be careful: the ethernet one, not the wifi one, which accepts uint8 vectors): The problem is that it only allows uint8.
However, I have a vector of 6 uint8 values, let's say [1,2,3,4,5,6] returned by my custom MATLAB function:
Now as you see, I have become rather desperate to bring my uint8s into a form suitable to send. Is there a way to use that Unbuffer properly? Or is it possible to somehow loop through the uints8 and pass them on to the block? Any other workaround?
Any help is appreciated - thanks a lot!
Best, Andreas


Sign in to comment.

1 Answer

Answer by David Ding
on 17 Oct 2017
 Accepted Answer

Hi Andreas,
I see that you are trying to serialize the vector of uint8s coming from a MATLAB Function block. In this case, instead of using the "unbuffer" block, consider using a "Byte Unpack" block from the "Utilities" folder of the Simulink Support Package for Arduino Hardware, found in the Simulink Library Browser. I have attached the image for your reference.
For more information about the "Byte Unpack" block in the Arduino Support Package, please refer below:


Thanks. So, for example in order to get 1 uint8, 1 uint16 and again 1 uint8, I would simply set:
Output port dimensions: {[1], [2], [1]}
Outport datatypes: {'uint8', 'uint16', 'uint8'}
Did I understand that correctly? Seems easy enough...
Hi Andreas,
That is exactly correct! The "Byte Unpack" block of the support package is especially designed to serialize data to communicate to the Arduino Hardware.
Thank you, that was very helpful!

Sign in to comment.