Read a split integer in matlab sent over TCP?

2 次查看(过去 30 天)
So i m sending an integer over tcp using arduinos Serial.write() function. This function can only write 1 byte at a time meaning you have to split an integer into 2 bytes . I had been doing this successfully before using I2C with the code
first_part = (byte) (testInt & 0xFF);
second_part = (byte) ((testInt >> 8) & 0xFF);
where testInt is the integer. However when i send the two bytes over wifi to matlab, when i try read them, it fails and i get this weird symbol ‡. So when the two bytes become available in matlab i tried reading as a byte eg fscanf(t, '%x',1). I also tried reading as a character but this didnt work?

采纳的回答

Guillaume
Guillaume 2015-5-19
编辑:Guillaume 2015-5-19
Whereas before you were sending the integer encoded as a string, you're now sending the integer bytes. It's a different function to send, and thus a different function to read. You want to use fread:
t.ByteOrder = littleEndian; %see comment below
value = fread(t, 1, 'uint16') %assuming your integer is unsigned. Otherwise use 'int16'.
Make sure that the ByteOrder property of your connection is set correctly for the order you send the bytes in. If you send first_part first, then you're using littleEndian. Otherwise, you're using bigEndian.
My example assumes an unsigned 16-bit (2-bytes) integer, that is it's in the range 0-65535. If your integer is actually signed (in the range [-32678, +32767]), then use 'int16'.
  1 个评论
Ronan
Ronan 2015-5-19
Ha, so you recognise its me again. The previous way, sending characters was working fine but the reason i m switching to this way is because its more efficient and faster to have less bytes transmitted rather than having all those extra bytes for characters. Its also a good learning exercise to know multiple ways of doing things. This worked great. Thank you very much for your help.

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 MATLAB Support Package for Arduino Hardware 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by