Go Down

Topic: VirtualWire (Read 4602 times) previous topic - next topic

Vincent19


Quote
So, everytime I sent a message using vw_send, I have to type it like this : vw_send((uint8_t*)msg, length ) ?

Yes.

Any alternatif ? And why got a * ?

AWOL

#16
Jan 21, 2013, 06:04 pm Last Edit: Jan 22, 2013, 08:41 am by AWOL Reason: 1
Because you're casting a pointer.
"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.

Vincent19

Okay, I think I have to read more about pointer and array. Thanks !

vw_send(message, length)
Transmit a message. "message" is an array of the bytes to send, and "length" is the number of bytes stored in the array. This function returns immediately and the message is sent slowly by an interrupt-based background process.

so the message is refering to ((uint8_t*)msg), where msg is any number of words ? It is not array anymore because we include the uint8_t already ?

Thanks

AWOL

Quote
For example msg = '2' ?

No.
2 != '2' != "2"

Quote
It is not array anymore because we include the uint8_t already ?

I don't understand what you're saying, but obviously it still is an array, because if it were not, then we wouldn't need to specify a buffer length to transmit.
"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.

Vincent19

I mean I can also write like this vw_send(char msg[8],8) ? Instead of writing it like vw_send((uint8_t*)msg,8), char msg[8] = {'1','2','3','4','5','6','7','8'}

Hahaha.. well, so confuse ><

AWOL

Yes, you can write it like that, but you need to declare the array before the call.
"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.

Vincent19

So the  purpose of adding (uint8_t*)msg is just to tell that the message is an array of 8 bits.

Am I correct ?

AWOL

The function expects to be given an array of type uint8_t.
If you give it an array of that type, you don't need the cast.
"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.

Vincent19

Okay. Got it.

Means if I give the function unsigned integer with 8 bits(An array), then I do not need to write the keyword uint8_t ?

Correct ?
Heheh

PaulS

Quote
Means if I give the function unsigned integer with 8 bits(An array), then I do not need to write the keyword uint8_t ?

Correct ?

No. An unsigned integer is not an array and it isn't 8 bits.

Vincent19

So, if I want to send a number 2, then how do I wrote it in array of 8 bits ??? Thanks

PaulS

Quote
So, if I want to send a number 2, then how do I wrote it in array of 8 bits ??? Thanks

Code: [Select]
uint8_t msg[1] = 2;
vw_send(msg, 1);

Vincent19

So from this can I say uint8_t is like a data type ?

For example int variable, so uint8_t variable ?

Thanks

Vincent19

#28
Jan 22, 2013, 03:13 am Last Edit: Jan 22, 2013, 08:55 am by Vincent19 Reason: 1

Quote
So, if I want to send a number 2, then how do I wrote it in array of 8 bits ??? Thanks

Code: [Select]
uint8_t msg[1] = 2;
vw_send(msg, 1);



So how about the receiving part ?
Code: [Select]
void loop()
{
   uint8_t buf[VW_MAX_MESSAGE_LEN];
   uint8_t buflen = VW_MAX_MESSAGE_LEN;

 [b]  if (vw_get_message(buf, &buflen)) // Non-blocking[/b]
   {
int i;

       digitalWrite(13, true); // Flash a light to show received good message
// Message with a good checksum received, dump it.
Serial.print("Got: ");

for (i = 0; i < buflen; i++)
{
   Serial.print((char)buf[i]);
   Serial.print(" ");
}
Serial.println("");
       digitalWrite(13, false);
   }
}

What does it means ?

AWOL

Quote
What does it means ?
As you posted it, it means nothing, which is why you should post your code between code tags [code] [/code]
"Pete, it's a fool looks for logic in the chambers of the human heart." Ulysses Everett McGill.
Do not send technical questions via personal messaging - they will be ignored.

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy