Cat hungry.png
Здравствуйте! Собираем деньги на перевод материалов по электронике(https://www.allaboutcircuits.com/education/). Реквизиты указаны здесь.

Arduino:Примеры/Process

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

Перевод: Максим Кузьмин (Cubewriter)
Перевел 2686 статей для сайта.

Контакты:

Проверка/Оформление/Редактирование: Мякишев Е.А.


Класс Process [1]

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

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

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

Цепь

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

Код

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

  1. #include <Process.h>

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

  1. void setup() {
  2.   Bridge.begin();
  3.   Serial.begin(9600);
  4.  
  5.   while (!Serial);

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

  1. runCurl();
  2.   runCpuInfo();
  3. }
  4.  
  5. void loop() {
  6.   // Здесь ничего не делаем
  7. }

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

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

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

  1. while (p.available()>0) {
  2.     char c = p.read();
  3.     Serial.print(c);
  4.   }
  5.   Serial.flush();
  6. }

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

  1. void runCpuInfo() {
  2.   Process p;
  3.   p.begin("cat");      
  4.   p.addParameter("/proc/cpuinfo");
  5.   p.run();

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

  1. while (p.available()>0) {
  2.     char c = p.read();
  3.     Serial.print(c);
  4.   }
  5.   Serial.flush();
  6. }

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

  1. /*
  2. Запуск процессов при помощи класса Process
  3. Этот скетч демонстрирует, как запускать Linux-процессоры на Arduino Yun.
  4. Создан 5 июня 2013 Кристианом Мэгли (Cristian Maglie).
  5. Этот код не защищен авторским правом.
  6.  
  7.  */
  8.  
  9. #include <Process.h>
  10.  
  11. void setup() {
  12.   // Инициализируем Bridge:
  13.   Bridge.begin();
  14.  
  15.   // Инициализируем последовательную передачу данных:
  16.   Serial.begin(9600);
  17.  
  18.   // Ждем подключения Serial Monitor:
  19.   while (!Serial);
  20.  
  21.   // Запускаем два процесса:
  22.   runCurl();
  23.   runCpuInfo();
  24. }
  25.  
  26. void loop() {
  27.   // Здесь ничего не делаем
  28. }
  29.  
  30. void runCurl() {
  31.   // Запускаем команду «curl» и берем из сети логотип Arduino в ASCII-символах.
  32.   // curl – это программа командной строки для передачи данных при помощи различных интернет-протоколов
  33.   Process p;        // создаем процесс и называем его «р»
  34.   p.begin("curl");  // этот процесс будет запускать команду «curl»
  35.   p.addParameter("http://arduino.cc/asciilogo.txt"); // добавляем к «curl» параметр с URL
  36.   p.run();      // Запускаем процесс и ждем его выполнения
  37.  
  38.   // Выводим логотип Arduino на Serial Monitor.
  39.   // Итоговый результат этого процесса может быть прочитан при помощи функций класса Stream:
  40.   while (p.available()>0) {
  41.     char c = p.read();
  42.     Serial.print(c);
  43.   }
  44.   // Обеспечиваем, чтобы данные были отправлены все до единого:
  45.   Serial.flush();
  46. }
  47.  
  48. void runCpuInfo() {
  49.   // Запускаем команду «cat /proc/cpuinfo» (показывает информацию о процессоре Atheros)
  50.   // cat – это утилита командной строки, показывающая содержимое файла
  51.   Process p;        // создаем процесс и называем его «р»
  52.   p.begin("cat");   // этот процесс будет запускать команду «cat»
  53.   p.addParameter("/proc/cpuinfo"); // добавляем путь к файлу с информацией о процессоре, которую нужно извлечь
  54.   p.run();      // запускаем процесс и ждем его выполнения
  55.  
  56.   // Выводим итоговый результат на Serial Monitor.
  57.   // Итоговый результат этого процесса может быть прочитан при помощи функций класса Stream:
  58.   while (p.available()>0) {
  59.     char c = p.read();
  60.     Serial.print(c);
  61.   }
  62.   // Обеспечиваем, чтобы данные были отправлены все до единого:
  63.   Serial.flush();
  64. }

См.также

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

  1. Arduino - Process