Main Site Documentation

Decode


#1

Hello,
i linked an arduino and a fezpanda2 by UART. But when i send for exemple 20, fez receive 48. So i saw that the message is cut in chars or something else.
Can you help me to convert to recover 20.
thx.


#2

Show us your code, please.


#3

byte[] recu_data = new byte[1];
bool recue = false;

 while (recue == false)
                {
                    read_count = Sender.Read(recu_data, 0, 1);
                    if (read_count > 0)
                    {
                       
                        recue = true;
                    }
                }


 Debug.Print(recu_data[0].ToString());



#4

try…

Debug.Print(new string(Encoding.UTF8.GetChars(recu_data[0], 0, 1);

#5

You are probably sending 20 as a string. 48 is decimal value of the ascii character ‘0’. So you probably receiving 50 and 48.


#6

i can’ write

 Debug.Print(new string(Encoding.UTF8.GetChars(recu_data[0], 0, 1);

there are an error. But when i write :


Debug.print(Encoding.UTF8.GetChars(recu_data).ToString();)

it print : System.Char[]

yes,i saw that i receive 2 different values : 48 and 50. How can i convert them and assemble them ?
Because i receive the second value, just if i do a second read of the message.


#7

My bad. That was quick & dirty… Try it like this.

Debug.Print(new string(Encoding.UTF8.GetChars(recu_data, 0, 1);

#8

no, i have an error


#9
Debug.Print(new string(Encoding.UTF8.GetChars(recu_data, 0, read_count);

#10

Finally i succeeded,

fez code :


String part1 = recu_data[0].ToString();
Debug.print(par1);

but i used an other method to send message in arduino.

 Serial.write(20);

Before i used

Serial.print(20);

and it send String. But the “Serial.write” send a single byte.

Thanks for help :wink:


#11

Excellent. I figured all you needed was to know about the Encoding library and you’d figure it out :wink: