Arduino:Примеры/Process

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Максим Кузьмин (Cubewriter) Контакты:</br>* Skype: cubewriter</br>* E-mail: cubewriter@gmail.com</br>* Максим Кузьмин на freelance.ru
Проверка/Оформление/Редактирование: Мякишев Е.А.


Класс Process [1]

Этот пример для Arduino Yun показывает, как использовать класс Process из библиотеки Bridge, чтобы запускать Linux-процессы на AR9331. Если точнее, вы будете использовать команды curl и cat – для передачи данных от веб-сервера и получения информации о процессоре Linux.

Необходимое оборудование

  • Плата Arduino Yun;
  • Сетевое подключение к интернету;

Цепь

Для этого примера цепи строить не нужно.

Код

Подключаем к скетчу класс Process.

#include <Process.h>

В секции setup() инициализируем Bridge и начинаем последовательную передачу данных. Перед запуском оставшейся setup-части ждем активации последовательного подключения.

void setup() {
  Bridge.begin();
  Serial.begin(9600);

  while (!Serial);

Оставшаяся часть кода в секции setup() используется для вызова двух пользовательских функций – runCurl() и runCpuInfo(). В секции loop() ничего не пишем.

runCurl();
  runCpuInfo();
}

void loop() {
  // Здесь ничего не делаем
}

Функция runCurl() запустит команду curl и загрузит логотип Arduino, выполненный в ASCII-символах. Создаем процесс, даем ему имя «p», а затем начинаем с помощью функции p.begin("curl"). Далее при помощи функции p.addParameter() задаем URL, по которому находится логотип, а затем запускаем процесс.

void runCurl() {
  Process p;            
  p.begin("curl");      
  p.addParameter("http://arduino.cc/asciilogo.txt"); 
  p.run();

Когда данные, полученные от этого процесса, станут доступны, выводим их на Serial Monitor.

while (p.available()>0) {
    char c = p.read();
    Serial.print(c);
  }
  Serial.flush();
}

При помощи функции runCpuInfo() создаем еще один процесс – для команды cat. Добавляем к команде параметр, указывающий путь к файлу с информацией о процессоре, а затем запускаем процесс.

void runCpuInfo() {
  Process p;
  p.begin("cat");       
  p.addParameter("/proc/cpuinfo"); 
  p.run();

Когда данные, полученные от этого процесса, станут доступны, выводим их на Serial Monitor.

while (p.available()>0) {
    char c = p.read();
    Serial.print(c);
  }
  Serial.flush();
}

Весь код полностью – ниже:

/*
Запуск процессов при помощи класса Process
Этот скетч демонстрирует, как запускать Linux-процессоры на Arduino Yun.
Создан 5 июня 2013 Кристианом Мэгли (Cristian Maglie).
Этот код не защищен авторским правом.

 */

#include <Process.h>

void setup() {
  // Инициализируем Bridge:
  Bridge.begin();

  // Инициализируем последовательную передачу данных:
  Serial.begin(9600);

  // Ждем подключения Serial Monitor:
  while (!Serial);

  // Запускаем два процесса:
  runCurl();
  runCpuInfo();
}

void loop() {
  // Здесь ничего не делаем
}

void runCurl() {
  // Запускаем команду «curl» и берем из сети логотип Arduino в ASCII-символах.
  // curl – это программа командной строки для передачи данных при помощи различных интернет-протоколов
  Process p;        // создаем процесс и называем его «р»
  p.begin("curl");  // этот процесс будет запускать команду «curl»
  p.addParameter("http://arduino.cc/asciilogo.txt"); // добавляем к «curl» параметр с URL
  p.run();      // Запускаем процесс и ждем его выполнения

  // Выводим логотип Arduino на Serial Monitor.
  // Итоговый результат этого процесса может быть прочитан при помощи функций класса Stream:
  while (p.available()>0) {
    char c = p.read();
    Serial.print(c);
  }
  // Обеспечиваем, чтобы данные были отправлены все до единого:
  Serial.flush();
}

void runCpuInfo() {
  // Запускаем команду «cat /proc/cpuinfo» (показывает информацию о процессоре Atheros)
  // cat – это утилита командной строки, показывающая содержимое файла 
  Process p;        // создаем процесс и называем его «р»
  p.begin("cat");   // этот процесс будет запускать команду «cat»
  p.addParameter("/proc/cpuinfo"); // добавляем путь к файлу с информацией о процессоре, которую нужно извлечь
  p.run();      // запускаем процесс и ждем его выполнения

  // Выводим итоговый результат на Serial Monitor.
  // Итоговый результат этого процесса может быть прочитан при помощи функций класса Stream:
  while (p.available()>0) {
    char c = p.read();
    Serial.print(c);
  }
  // Обеспечиваем, чтобы данные были отправлены все до единого:
  Serial.flush();
}

См.также

Внешние ссылки