Welcome to Roboduino V2 repository
05.Serial Parse Data
Serial Parse Data
Serial Parse DataDevice connectionHardware connectionSoftware connectionSerial port parsing dataControl principleControl pinData format (communication protocol)Code analysisExperimental results
Parse data in a specified data format through the serial port.
xxxxxxxxxxThe format of the serial port parsed data refers to the communication protocol of the WiFi camera module. The serial port control tutorial below also refers to the communication protocol of the WiFi camera module!Do not install the WiFi camera module here, otherwise it will occupy the serial port and cause abnormal information.
Device connection
Hardware connection
Use Type-B data cable to connect Arduino Uno and computer.
Software connection
Open the "Arduino IDE" software and select the model and serial port number corresponding to the development board.
Serial port parsing data
Control principle
Receive data through the serial port and determine whether the data is in the specified format, parse and store the specified data.
Control pin
Use the serial port on the Arduino IDE to send and parse data.
| Serial port | Arduino Uno |
|---|---|
| RX | 0 |
| TX | 1 |
Data format (communication protocol)
We only parse data in two data formats.
| Data format | Description | Example |
|---|---|---|
| $ | Data header | |
| # | Data tail | |
| Data,Data,Data | Data type 1 | Data represents only numbers: 1,0,0,0 |
| Alphabet+Data | Data type 2 | Alphabet+Data represents a letter plus the following three digits: A100 |
Example:
Data format 1: $1,0,0,0#, $1,2,0,0#, $1,2,0,1#
Data format 2: $A100#, $A090#, $B120#
Note:
Data format 1 is mainly used to control the car status, RGB, and buzzer in the later stage
Data format 2 is mainly used to control the servo angle in the later stage
Data needs to be sent strictly in the above format.
Code analysis
Here is only a brief introduction to the code content. For detailed code, please refer to the corresponding code file, which is provided in the download area!
Define data such as arrays, flag bits, etc
x// 定义数据,如数组,标志位等 Define data such as arrays, flag bits, etc#define BUFFER_SIZE 20volatile uint8_t Rx_Index = 0;volatile uint8_t Data_Flag = 0;char* Data_Array[BUFFER_SIZE];char Data_Servo[BUFFER_SIZE];int DataArraySize = 0;
Receive data
Note: Receive data between $ and #
xxxxxxxxxx/*** @brief 接收指定格式的数据 Receives data in the specified format* @param 无 None* @retval 接收指定数据 Received specified data*/char* recData() {static char Data_Buffer[BUFFER_SIZE];static char Rx_Buffer[BUFFER_SIZE];if (Serial.available() > 0) {char SerialData = Serial.read();if (SerialData == '$') {memset(Rx_Buffer, 0, sizeof(Rx_Buffer));memset(Data_Buffer, 0, sizeof(Data_Buffer));Data_Flag = 1;Rx_Index = 0;