Парсинг данных в ардуино?
Я только начал работать с Arduino и в своем проекте пытаюсь обеспечить связь между двумя Arduino, используя HC-05 в ведущем и ведомом режиме соответственно, я все это успешно настроил.
Теперь я хочу отправить данные трех датчиков расстояния HCSR-04 от ведущего Arduino к ведомому Arduino через HC-05. Я отправляю данные каждого датчика, разделенные знаком «|». Ниже приведен пример формата, который я получил на последовательном мониторе, подключив главный Arduino напрямую к ПК через USB.
168|200|76
167|200|68
166|200|76
168|200|77
Теперь проблема в том, что я не могу прочитать и проанализировать это на подчиненной стороне. Я пробовал использовать serail.readbytesuntill, но мне это не удалось. Пожалуйста, помогите мне понять, как я могу его прочитать и проанализировать.
Заранее спасибо.
@Birender Brar, 👍-2
Обсуждение1 ответ
Как вы можете видеть из комментариев Бирендера Брара, нам нужно больше информации, чтобы мы могли вам помочь.
Один из способов достижения вашей цели — это:
Используйте Serial.readBytesUntil('\n', buffer, length)
на подчиненном устройстве, чтобы «прочитать» данные в массив char
. Последовательный монитор можно настроить на автоматическую отправку символа \n
в целях тестирования, но это должен будет сделать ваш код на ведущем устройстве. Отправьте данные 168|200|76 с добавлением \n в конец данных: 168|200|76\n
Проанализируйте данные. Вот пример скетча, который анализирует данные в массив integer
.
// Используйте Serial.readBytesUntil('\n', buffer, length)
// для заполнения массива/строки символов.
char str[] = "168|200|76\n";
// Установите размер массива на максимальное количество целых чисел, которые вы получите.
uint16_t myArray[3];
void setup(){
Serial.begin(9600);
int counter = 0;
char* pch = strtok(str, "|");
while(pch != NULL){
myArray[counter] = atoi(pch);
pch = strtok(NULL, "|");
counter += 1;
}
// Распечатываем содержимое целочисленного массива.
for(int i = 0; i < counter; i++){
Serial.println(myArray[i]);
}
}
void loop(){}
- Отправка последовательных данных в прерывании
- Почему люди используют 115200 вместо 9600?
- Ошибка 'Serial' was not declared in this scope
- Как получить ненулевой выход из HX711 и ячейки загрузки?
- Serial.availableForWrite против Serial.flush
- Разделенный последовательный поток Arduino, разделенный запятыми
- Как остановить серводвигатель в текущем положении при использовании последовательного порта? Я хочу, чтобы он оставался в одном положении при получении «0».
- Arduino Serial.ReadString() проблема
Что это значит?
не умеет читать и анализировать
...... вы либо не получаете данных, поэтому нечего анализировать, либо вы получаете данные, но не можете их проанализировать ............ .. Что это значит?У меня не получилось
..... опишите, пожалуйста, что происходит на самом деле, @jsotolaбыло бы полезно, если бы вы добавили части своего кода для отправки и получения данных. Без него сложно найти ответ., @RJPlog