Связь с контролем и синхронизацией данных

Тема в разделе "Проводная и беспроводная связь", создана пользователем Alex19, 14 мар 2014.

  1. Alex19

    Alex19 Гуру

    Начал делать передачу данных с компьютером (Serial, UDP). Простыми строками с контролем этих строк, подтверждением получения и синхронизацией номеров строк. Задача для меня не совсем простая.

    Может быть кто-нибудь видел подобные решения, чтобы я смог почерпнуть идеи и сделать код более оптимальным?

    UPD. Готового решения, навряд ли найти у всех свои задачи. Поэтому смотрю что-то подобное.
     
  2. Alex19

    Alex19 Гуру

    Мечты, мечты :).

    Пока сделал заготовку в лоб, но без синхронизацией номеров строк. Голова уже не варит.
    Код сюда не влез, поэтому прикрепляю в файле, как и файлы .pde, .ino, поэтому в архиве.
    Вдруг кому-то еще нужно будет решить такую задачу.

    Работа еще не закончена. Когда закончу оптимизирую, приведу код в порядок, и добавлю комментарии по человечески и везде. Думаю, через неделю-другую закончу, буду время от времени обновлять.

    А так же вытяну из программы реализацию стороны компа.
    Но увы не в ближайшее время, занимаюсь этой задачей в перерывах с адскими катушками.

    UPD. Немного ошибся и получил неправильный подход. Delay буду убирать.
     

    Вложения:

    Последнее редактирование: 15 мар 2014
  3. embed

    embed Нерд

    Существуют промышленные стандарты, причем довольно древние. Например Modbus-ASCII если хочется текстовой передачи или Modbus-RTU. Существуют реализации протокола для AVR и серверы OPC для Windows.
    Есть любительский протокол Wake
    http://eewiki.ru/wiki/Спецификация_протокола_WAKE
     
  4. Alex19

    Alex19 Гуру

    Обязательно гляну, может собираю велосипед. Но в понедельник, сегодня адские катушки.

    UPD. Да Вы правы. Но уже начали, хотим доделать для этого проекта. Закончим, опубликую.
     
    Последнее редактирование: 18 мар 2014
  5. Alex19

    Alex19 Гуру

    Увы ни моя реализация, ни Modbus мне уже не подходит.
    Wake не рассматривал, не нашел библиотеки для ардуины.

    Так как ТЗ пишется по ходу написания решения:), глобально оно есть, но всплывают нюансы.
    Вариант запрос-ответ мне не подходит

    Код (Text):

    // Проверка, открыта ли форма
    if (analogRead(b1) >= b44 && analogRead(b1) < b22)
    {
        // Устанавливаем значение V1
        AnalogWriteWithCheckDoorAndHoldKey(s50in, v1, '1');
        Serial.println("A");
               
        // Запускаем запирание формы s2 включено
        DigitalWriteWithCheckDoorAndHoldKey(s2, HIGH, '1');
        Serial.println("B");
    }
     
    Иными словами может быть 2-3 и более отправки данных, до получения подтверждения, получения эхо на ардуине. Поэтому отказался от идеи запрос-ответ.

    Пока подумал, о том, чтобы проверять формат запроса. Иметь 2 счетчика номеров пакетов, счетчик ардуины и счетчик PC, опрашивать наличие соединения каждую секунду.