Элементы для arduino в c#

Тема в разделе "Arduino & Shields", создана пользователем Tes1a, 10 янв 2016.

  1. Tes1a

    Tes1a Нерд

    по - моему чтобы чем то управлять этот терминал не нужен. За чем тебе таблица систем счислений,таблица ASCII скрипты и т.д. если тебе просто нужно команду отправить в порт и все
     
  2. Максимус-Бог

    Максимус-Бог Убийца матрёшек

    а есть программа для многострочной команды
     
  3. Airbus

    Airbus Радиохулиган Модератор

    Ссылку поправил а то лажа вылезла.в общем случае программы передающие по протоколу RS232 в порт (в Ардуино в нашем случае) всё что угодно.В ручном режиме.И принимающие из указанного порта всё что оттуда идёт-как Монитор порта.
    Ничего этого не надо отправляйте в любом виде-хотите "1" отправляйте "1" хотите "а" отправляйте "а" можно строку символов как в автосигнализациях для повышения защиты а ардуино распознает эту строку и выполнит вашу команду. Я доступно объяснил?
     
  4. Tes1a

    Tes1a Нерд

    вы понимаете к чему это было написано? к тому что порт встроенный в ардуино иде,то же самое может и за чем тогда устанавливать на машину форсированный движок,если тебя и так устраивает как она едет. я доступно объяснил?
     
  5. Tes1a

    Tes1a Нерд

    у меня нет
     
  6. Alex19

    Alex19 Гуру

    Не встречал.

    В видео, которые Вы привели в качестве примера, используются простые рисунки. В первом видео, просто подменяется рисунок, во втором на существующий рисунок добавляют стрелочку (это видно на видео).

    UPD.
    Что значит много строчная?

    Если можно приведите пример.
     
  7. Tes1a

    Tes1a Нерд

    спасибо,все что я хотел услышать.
     
  8. Tes1a

    Tes1a Нерд

    Что значит много строчная?

    Если можно приведите пример.[/QUOTE]
    наверное не много строчная, а много символьная имели в виду
     
  9. Максимус-Бог

    Максимус-Бог Убийца матрёшек

    да ошибочка, многосивольная
     
  10. Alex19

    Alex19 Гуру

    Вот один из моих вариантов.
    Код (C++):
    // Константа хранящая мак. размер массива хранящего пакет данных
    #define receiveSizeArrayCOM 26

    // Массив хранящий пол ученый пакет данных.
    char receiveData[receiveSizeArrayCOM];

    // Переменная хранящая завершено ли получения данных.
    boolean finishReceiveData = false;

    // Переменная хранящая индекс текущего char в массиве хранящего пакет данных.
    int indexCharInArray;

    // Переменная хранящая ошибку длины полученных данных.
    boolean errorLengthReceiveData = false;

    void setup()
    {
      Serial.begin(115200);
    }

    void loop() {
      // Получение данных с Serial порта
      GetReceiveDataFromSerial();

      // Ошибка длинны данных.
      if (errorLengthReceiveData)
      {
        Serial.println("Данных пришло больше.");
        // Очистка переменных получения данных, после получения данных.
        ClearReceiveDataVariable();

        // Обнуляем переменную errorLengthReceiveData.
        errorLengthReceiveData = false;
      }
      else if (finishReceiveData)
      {
        // Данные получены.
        Serial.println(receiveData);

        // Очистка переменных получения данных, после получения данных.
        ClearReceiveDataVariable();
      }
    }

    /// <summary>
    /// Получение данных с Serial порта
    /// </summary>
    void GetReceiveDataFromSerial()
    {
      // Крутимся в цикле, до тех пор пока есть данные для чтения.
      while(Serial.available())
      {
        // Объявляем переменную и сохрянем 1 char нее.
        char incomingChar = (char)Serial.read();

        // Проверяем, если пришел символ новой строки или символ конца строки.
        if(incomingChar != '\n' &&
          incomingChar != '\0')
        {
          // Заполняем массив.
          receiveData[indexCharInArray] = incomingChar;

          // Проверяем индекс массива.
          if ((indexCharInArray+1) < receiveSizeArrayCOM)
          {
            // Увеличиваем индекс массива.
            indexCharInArray++;
          }
          else
          {
            // Данных больше, чем можем вместить.
            // Очень коварная ситуация, если мы уйдем за пределы массива, отладка будет очень тяжелая.
            errorLengthReceiveData = true;
            break;
          }
        }
        else
        {
          // Увеличеваем индекс массива.
          receiveData[indexCharInArray] = '\0';

          // Взводим флаг, данные получены.
          finishReceiveData = true;
        }
      }
    }

    /// </summary>
    /// Очистка переменных получения данных, после получения данных.
    /// </summary>
    void ClearReceiveDataVariable()
    {
      indexCharInArray = 0;
      memset(receiveData,'\0',receiveSizeArrayCOM);

      finishReceiveData = false;
    }
     
    Используется в не нагруженных приложениях, где нет большой нагрузки на сериал. Заливаете данных код и отправляете сообщение в терминал Arduino IDE (не забудьте выбрать новая строка).
    Serial.png
    Принимает до 26 символов, но Вы можете изменить кол-во принимаемых символов
    Код (C++):
    #define receiveSizeArrayCOM 26
    UPD.
    Из плюсов, это самый простой мой вариант и он очень прост для изучения/понимания.
     
    Последнее редактирование: 17 янв 2016
    Максимус-Бог нравится это.
  11. Tes1a

    Tes1a Нерд

    Alex19, респект вам, скажите на какой источник вы опирались делая эту программу?
     
  12. Максимус-Бог

    Максимус-Бог Убийца матрёшек

    Огромное спасибо.
     
  13. Alex19

    Alex19 Гуру

    Извините за паузу, ездил на работу.

    Уверяю Вас тут нет ни чего уникального. Она была написана для одного из пользователей данного форума, которому нужно было передавать строку данных.

    Написана на базе моей самой первой реализации Serial, передачи данных для программы C#. Она была написана с 0-ля, вот она - http://arduino.ru/forum/proekty/kontrol-peredachi-dannykh и тут - http://forum.amperka.ru/threads/Связь-с-контролем-и-синхронизацией-данных.2699/#post-21018

    Хоть она была не верной идеологически для того проекта и не далеко не оптимальной (парсер команд, еще то чудо:)). Она просто не подходит для высоко нагруженной передачи данных, а проект требовал, но она работала.

    Я пришел в Arduino с небольшим багажом знаний, писал любительские программы на C#, VB.net. И старался читать книги и форумы, со временем багаж потихоньку начал увеличиваться, но еще столько белых пятен, учится и учится:(.

    Не за что, тут все помогают по мере возможностей (времени, знаний).
     
  14. Максимус-Бог

    Максимус-Бог Убийца матрёшек

    Если можно в с# встраивать с++(если я не ошибаюсь, на нем пишут библиотеки), то получиться, а если нет, то можно переписать.

    P.S. Это не проверино на практике, я только предположил, основываясь на моем маленьком опыте с си.