VirtualWire

Modified ! Thanks . hope you can help me

What does it means ?

In a nutshell, see if there's any data to read, read it if (vw_get_message(buf, &buflen)), and then print it

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

.

Is this the syntax ? Thanks

AWOL:

What does it means ?

In a nutshell, see if there's any data to read, read it if (vw_get_message(buf, &buflen)), and then print it

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

.

Then how about vw_have_message()?

From the reference:

uint8_t vw_have_message ( )

Returns:
true if a message is available to read

OK..so means I can use the idea that vw_have_message () then do something ?

If you don't mind blocking, you could just use "vw_wait_rx", or just use "vw_get_message" as you've shown.

Blocking of what ? Blocking of the signal from transmitter ?

No, blocking of your code, waiting for a message to arrive.

Oh..it means the code sometimes will fail to execute ? Am I correct ?

it means the code sometimes will fail to execute ? Am I correct ?

During development, code will always sometimes fail to execute as we expect it to.
But, no, you are not correct. "Blocking" means the code will loop waiting until a message is received. This may or may not be a problem for you.

The great thing about the Arduino is that you can try things, and if they don't work, try something different.
The frequency of your questions leads me to suspect you're not trying the things you're asking about.

Cool..yea I shall work for it now..thanks so much ..This library is easy to use !

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

It isn't "like a data type". It IS a data type, just like int, float, byte, char, long, etc.

The u up front indicates unsigned. The int differentiates the type from floating point types. The 8 explicitly defines the size of the variables, in bits. The _t indicates that the type is a standard type. Every compiler is supposed to recognize the type, and allocate the same space for it.

This is not true of types like int. An int can be 16 bits, 32 bits, or 64 bits (or other unusual sizes), depending on the platform. A uint8_t is always 8 bits. A int32_t is always 32 bits. A uint64_t is always 64 bits.

AWOL:

it means the code sometimes will fail to execute ? Am I correct ?

During development, code will always sometimes fail to execute as we expect it to.
But, no, you are not correct. "Blocking" means the code will loop waiting until a message is received. This may or may not be a problem for you.

The great thing about the Arduino is that you can try things, and if they don't work, try something different.
The frequency of your questions leads me to suspect you're not trying the things you're asking about.

#include <VirtualWire.h>
#undef int
#undef abs
#undef double
#undef float
#undef round
void setup()
{
    Serial.begin(9600);	// Debugging only
    Serial.println("setup");

    // Initialise the IO and ISR
    vw_set_ptt_inverted(true); // Required for DR3100
    vw_setup(2000);	 // Bits per sec

    vw_rx_start();       // Start the receiver PLL running
    pinMode(13, OUTPUT);
}

void loop()
{
  uint8_t count; 
if(count==true)
{
  count = false;
}
  count = vw_wait_rx_max(2000);// Non-blocking
  if (true)
  {
        digitalWrite(13, HIGH); // Flash a light to show received good message
	delay(500);// Message with a good checksum received, dump it.
	digitalWrite(13, LOW);
        delay(500);
  }
  else if(false)
  {
    digitalWrite(13, HIGH);
    delay(100);
    digitalWrite(13,LOW);
    delay(100);
  }
        

    
}

I write this code..I want it to be like when it does not receive message for 2s, then it will return false. If it receive message, then return true. Then it will only blink once then the whole system become false again. So what moddification I need to do ?

Thanks

void loop()
{
  uint8_t count; 
if(count==true)

It doesn't make sense to test an automatic variable like this.
If you want "count" to retain its value, make it "static".

 if (true)

Will always be true.

if(false)

Will always be false.

Then how can I implement my that idea ?

Then how can I implement my that idea ?

Seeing as how you are the only one that has a clue what your idea is, I think the answer is "by yourself".

Did you mean

count = vw_wait_rx_max(2000);// Non-blocking
  if (count)
  {

?

This is a really great thread. However, Wouldnt it be easier for all of us newbs if someone would just take the time to make a document or tutorial of this information (in plain terms)? This seems to be a hot topic. Not only here but also in other forums as well. I have learned a great deal just reading the questions and answers on this thread and like a good movie, I don't want it to end...LOL

Maybe a real world example would be appropriate. I can post my remote control code. It reads a keypad press and sends out 1 character.
On the receive side, it acts on the 1 character received.

Will be later tonight. The code is from the Virtualwire example, with the message sent being a 1 byte array
byte msg[1];
with the byte coming from the keypad.h library.

Hmm, looks like the document has been updated to remove the examples!
They look to be online only now
http://www.open.com.au/mikem/arduino/VirtualWire/examples.html