Messenger

Библиотека Messenger

Скачать

Последняя версия библиотеки Messenger, включая примеры для Max5 и Processing | Скачать

Описание

Messenger - это «инструментарий», который облегчает анализ сообщений в коде ASCII. Messenger буферизует символы, пока не получит возврат каретки (CR). Затем он считает сообщение полным и доступным. Сообщение разбито на множество элементов, как определено разделителем. Разделителем по умолчанию является пробел, но это может быть любой символ, отличный от NULL, LF или CR.

Замечания

Не используйте «последовательный монитор» среды IDE Arduino для тестирования Messenger, поскольку он не отправляет возврат каретки и, следовательно, никогда не «завершает» отправку сообщения! Messenger предоставляет только методы для входящих сообщений. Внутренние функции Serial.print () прекрасно работают для исходящих сообщений. Весь код программного обеспечения вашего хоста, который вы разработали для SimpleMessageSystem, должен быть совместим с Messenger. Вам просто нужно изменить свой код Arduino.

Создание

Messenger(byte separator)

  1. - или –

Messenger()

Вы можете создать экземпляр Messenger, указав разделитель сообщений. Если вы не укажете разделитель, будет выбран пробел.

Используемые функции

  • void attach(callbackFuntion) Присоединяет функцию обратного вызова, которая выполняется после завершения сообщения. Это предпочтительный способ работы с Messenger.
  • byte process(int serialData) Возвращает true, если сообщение было завершено и доступно. Как только сообщение будет завершено, оно будет разбито на элементы, которые следует немедленно прочитать с помощью методов чтения или строковых методов, поскольку каждый вызов process () стирает завершенное сообщение, если имеются какие-либо оставшиеся элементы.
  • byte available() возвращает true, если в завершенном сообщении есть какие-либо элементы. Вы должны сделать вызов process(), прежде чем использовать available().

Функции чтения

Вы должны сделать вызов process (), чтобы завершить сообщение, прежде чем пытаться прочитать его элементы. Каждый раз, когда вы используете метод чтения, элемент чтения (даже если он имеет неправильный тип) удаляется из завершенного сообщения, и Messenger будет указывать на следующее. Используйте available(), чтобы проверить, есть ли какие-либо элементы, оставленные для чтения.

  • int readInt() Возвращает элемент как целое число. Возвращает 0, если элемент не был числом.
  • long readLong() Возвращает элемент как long. Возвращает 0, если элемент не был числом.
  • char readChar() Возвращает элемент как символ. Если символ является частью слова, все слово удаляется из завершенного сообщения.

Функции для обработки строк

void copyString(char* target, byte maxSize)

Копирует элемент в виде строки в массив, указанный целевым массивом char. maxSize должен соответствовать размеру целевого массива char. Элемент удаляется из завершенного сообщения.

byte checkString(char* toCheck)

Сравнивает элемент со строкой toCheck.

  • Если есть совпадение, метод возвращает true (1) и удаляет элемент из завершенного сообщения.
  • Если совпадений нет, метод возвращает false (0) и не удаляет элемент из завершенного сообщения.

Примеры

В загрузке вы найдете примеры для обработки и Max5. Вот пример того, как вы будете использовать Messenger в своем коде Arduino:

This example sets all the values of the digital pins with a list through a callback function #include  Instantiate Messenger object with the default separator (the space character) Messenger message = Messenger();

Create the callback function void messageReady() { int pin = 0; Loop through all the available elements of the message

     while ( message.available() ) {
// Set the pin as determined by the message
       digitalWrite( pin, message.readInt() );
       pin=pin+1;
    }

}

void setup() {

// Initiate Serial Communication
Serial.begin(115200); 
// Attach the callback function to the Messenger
message.attach(messageReady);

}

void loop() {

// The following line is the most effective way of using Serial and Messenger's callback
while ( Serial.available() )  message.process(Serial.read () );

}