Go Down

Topic: VirtualWire (Read 3942 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