Arduino Serial readBytes and Read Bytes Until Functions, Example of Serial.readBytes() and Serial.readBytesUntil()
Содержание
- Arduino Serial Read Bytes Function Serial.readBytes()
- Arduino readBytes
- How Serial.readBytes() Function Works
- Arduino readBytes Example
- Arduino Serial Read Bytes Until Function readBytesUntil
- How readBytesUntil Function Works
- Arduino Serial readBytesUntil Function Example
August 2nd, 2019 Nilesh Chaurasia
Arduino Serial Read Bytes Function Serial.readBytes()
- Arduino Serial.readBytes() Function reads the multiple bytes from the received buffer into a character array (also called buffer).
- The readBytes function will read the specified number of bytes in the specified variable from serial buffer.
- The function return the integer value, which specify how many bytes successes-fully read in the variable.
- The readBytes() function wait for timeout time, by default it is one second.
- The readBytes() function will complete by two events, either it will read the number of bytes specified or by timeout time completes.
The most popular Serial.find() function is having an issue, that it will clear the serial receive buffer after the test. If you want to test multiple string in the same received data than you have to read first in the variable, so that you can test as many times as you want.
Arduino readBytes
Syntax of Serial.readBytes function
char readData[10];//The character array is used as buffer to read into.
int x = Serial.readBytes(readData,10);//10 is the length of data to read.
The function require two things, variable name to read into, number of bytes to read.
The variable x will hold the bytes read and readData will hold the string received.
Caution: The Serial.readBytes function return the number of bytes read in the buffer variable. In the above code syntax integer x will hold the number of valid character in the readData buffer.
The Serial.readBytes() function is mostly used to test some target word or string is received or not.
How Serial.readBytes() Function Works
The function continuously read the received data from the buffer and if target number of character is received it will return with the number of character. And if the number of character it read is less than specified number and timeout time is completes than it will return the number of characters, which is less than the target length.
And if the target number or length is not received until one second ( timeout ) than it will return with less number of characters.
Caution: The default wait time of timeout is one second, which can be modified with the help of function Serial.setTimeout().
Arduino readBytes Example
In this small project code we will send some data from serial monitor and return back the same data with number of bytes it read.
Example 1 Serial.readBytes() function code to loop-back from PC (serial monitor).
In the example below we have send three bytes “123” first and than we have sent 6 characters “123456”. Otherwise it will show “0” numbers and same previous data.
Note: if you send less than 10 character it will show some previous data in the buffer variable also.
Fig.1 Arduino Example for Serial read bytes function.
Arduino Serial Read Bytes Until Function readBytesUntil
- Arduino Serial readBytesUntil Function reads the received buffer until it receive a terminating character.
- If the specified number of character is received in the buffer than the function return or complete.
- By default the readBytesUntil function wait for terminating character or number of character or timeout to complete.
- The Serial.readBytesUntil() function wait for one second or timeout time.
- You can consider the terminating character as command end symbol, like in c language compiler look for “;” for end of statement.
The concept of terminating character in readBytesUntil solve the problem of delay in case the number of character in the command is less than the specified number of characters. As soon as the function receive terminating character it will return with a number, depends upon how many character received before terminating character.
Syntax of Serial.readBytesUntil function
char readData[10];//The character array is used as buffer to read into.
int x = Serial.readBytesUntil(“\n”,readData,10);//10 is the length of data to read.
The “\n” is a newline character, used as terminating character in this function.
How readBytesUntil Function Works
The function continuously read the received data and store in the variable provided.
The function can exit by three events-
- The timeout time completes, by default the timeout time is one second.
- Before the timeout time, the function received the specified number of characters ( 10 char ).
- Before above two events, the function received terminating character ( “\n” newline character ).
- In all the three exit case the Serial.readBytesUntil() function return the number of character read in the buffer variable.
Caution: The default wait time is one second, which can be modified with the help of function Serial.setTimeout().
Arduino Serial readBytesUntil Function Example
In this small project code we will send some data from serial monitor ( with set line ending character as Newline ) and return back the same data with number of bytes it read.
Example 1 Serial.readBytes() function code to loop-back from PC (serial monitor).
In the example below we have send three bytes “abc” first and than we have sent 6 characters “123456”. Otherwise it will show “0” numbers and same previous data.
The function executes after every 500 ms.
Posted in Arduino Tags: Arduino Programming
Источник: