Ports for Embedded Systems
The getsUSART function can read multiple characters but requires specifying
how many characters to read and blocks until all of the characters arrive:
char received_data[8];
getsUSART(received_data, 8);
To read a string without blocking, firmware can call the getcUSART function
repeatedly to read individual bytes into a char array. A task loop can call the
routine below to read a specified number of bytes into an array:
byte index;
void receive_serial_data(void)
{
byte bytes_to_read;
char received_data[8];
bytes_to_read = 8;
if DataRdyUSART()
{
// A byte is available. Read it into the array.
received_data[index] = getcUSART();
// Increment the position in the array.
index++;
if (index == bytes_to_read)
{
// Do something with the received bytes.
// Reset the index for the set of received bytes.
index = 0;
}
}
$
A defined terminating character can indicate the end of a command, string, or
other block of data. The examples below check for a CR character (0Dh) in
received data.