I have searched the internet for arduino serial communication tutorials, but all are speaking in terms of functions , functions are just to tell the arduino to do something but what i needs is the explain of how serial porting works in arduino in general and what is the role and position of buffering , and how to deal with a stream of non stop incoming data how the port handle them, pls can any one directs me to the correct direction …thnx
Have a look here http://gammon.com.au/serial
The Arduino HardwareSerial code (which is included with the IDE if you want to study it) adds each character as it arrives to a 64 byte circular buffer. Everytime you issue a Serial.read() command it takes the "oldest" byte from the buffer - thus making room for another incoming byte. If more than 64 bytes arrive before any are removed from the buffer the subsequent bytes will be lost - no flow-control signal is sent back to the PC to tell it to stop sending.
Serial.available() will tell you how many bytes are in the buffer.
The Serial Port on an Uno will communicate with a PC over the USB cable at up to 1,000,000 baud - or about 100,000 chars per second. At that rate it would be difficult for the Arduino to consume, and make use of, an unlimited stream of bytes. But at lower baudrates it should be possible.
Of course the Arduino has very little SRAM so sending a huge quantity of data is probably pointless.