Функция Serial.readBytesUntil() в програмирането на Arduino

Funkcia Serial Readbytesuntil V Programiraneto Na Arduino



Когато става въпрос за програмиране с Arduino, има много функции, които можете да използвате за манипулиране на вход и изход. Една от основните функции на Arduino е Serial.readBytesUntil() , което ви позволява да четете данни от поток, докато не бъде намерен конкретен знак. Тази функция помага за четене на данни от серийни устройства, докато намерим необходимите данни.

Този запис компилира в дълбочина функцията Serial.readBytesUntil(). Ще обсъдим какво представлява, как работи и ще разгледаме кода на Arduino, който обяснява как да го използваме в кода на Arduino.

Serial.readBytesUntil()

Функцията Serial.readBytesUntil() е част от класа Arduino Serial. Тази функция чете данни от поток, докато намери конкретен знак или максимален брой байтове. След като бъде намерен знакът или максималният брой байтове, функцията спира да чете и връща данните, които е прочела.







Функцията Serial.readBytesUntil() прекратява, когато са изпълнени следните условия:



  • Когато функцията открие терминатор
  • Определената дължина на буфера е достигната
  • Зададеното време е изтекло или е изтекло

Тази функция не връща терминатора, а само данни до последния символ преди терминатора. Когато тази функция върне 0, това означава, че не са намерени валидни данни.



Синтаксис

Функцията Serial.readBytesUntil() има следния синтаксис:





Сериен. readBytesUntil ( въглен терминатор, въглен * буфер, размер_т дължина ) ;

Параметри

Следват параметрите на функцията Serial.readBytesUntil():

  • Персонаж Терминатор: Символът, при който функцията ще спре да чете.
  • буфер: В буфера прочетените серийни данни са Разрешеният тип данни е масив от char или byte.
  • дължина: Максималният брой байтове за четене. Разрешеният тип данни е вътр .

Връщане

Броят байтове, поставени в буфера.



Бележки: В върнатите данни знакът за завършване се отхвърля от функцията Serial.readBytesUntil() от потока от данни.

Примерен код на Arduino

Следващият код на Arduino обяснява използването на Serial.readBytesUntil() функция:

невалиден настройвам ( ) {
Сериен. започвам ( 9600 ) ; // Инициализиране на серийната връзка със скорост на предаване 9600
}

невалиден цикъл ( ) {
байтов буфер [ 5 ] ; // Дефиниране на байтов масив за съхраняване на входящите данни
вътр numBytes = Сериен. readBytesUntil ( ' ' , буфер, 5 ) ; // Прочетете входящите данни от серийната връзка, докато се срещне символ за нов ред

ако ( numBytes > 0 ) { // Проверете дали са прочетени байтове
Сериен. печат ( 'Получен знак: ' ) ;
Сериен. пишете ( буфер, numBytes ) ; // Отпечатване на получените данни на серийния монитор
Сериен. println ( ) ;
}
}

Във функцията setup() скоростта на предаване ще установи серийна комуникация.

Във функцията loop() първо дефинираме байтов масив, извикан 'буфер' . Този масив ще се използва за съхраняване на входящите данни, прочетени от серийната връзка.

След това наричаме Serial.readBytesUntil() функция, която чете входящи данни от серийната връзка, докато срещне символ за нов ред ('\n'). Следващият аргумент е дължината на буфера, който ще поеме максимум 5 байта данни наведнъж.

Върнатият байт се съхранява в „брой байтове“ променлива. В случай, че получените данни са по-големи от дължината на буфера, данните ще бъдат прекратени и ще бъдат изпратени в следващия поток от данни.

Изход

Заключение

The Serial.readBytesUntil() функцията в програмирането на Arduino чете байтове от сериен входен поток, докато не бъде получен определен терминатор. Функцията дава общо прочетени байтове и ги съхранява в предоставен буфер. Прочетете статията, за да получите повече информация, свързана с функцията Serial.readBytesUntil().