Начал делать передачу данных с компьютером (Serial, UDP). Простыми строками с контролем этих строк, подтверждением получения и синхронизацией номеров строк. Задача для меня не совсем простая. Может быть кто-нибудь видел подобные решения, чтобы я смог почерпнуть идеи и сделать код более оптимальным? UPD. Готового решения, навряд ли найти у всех свои задачи. Поэтому смотрю что-то подобное.
Мечты, мечты . Пока сделал заготовку в лоб, но без синхронизацией номеров строк. Голова уже не варит. Код сюда не влез, поэтому прикрепляю в файле, как и файлы .pde, .ino, поэтому в архиве. Вдруг кому-то еще нужно будет решить такую задачу. Работа еще не закончена. Когда закончу оптимизирую, приведу код в порядок, и добавлю комментарии по человечески и везде. Думаю, через неделю-другую закончу, буду время от времени обновлять. А так же вытяну из программы реализацию стороны компа. Но увы не в ближайшее время, занимаюсь этой задачей в перерывах с адскими катушками. UPD. Немного ошибся и получил неправильный подход. Delay буду убирать.
Существуют промышленные стандарты, причем довольно древние. Например Modbus-ASCII если хочется текстовой передачи или Modbus-RTU. Существуют реализации протокола для AVR и серверы OPC для Windows. Есть любительский протокол Wake http://eewiki.ru/wiki/Спецификация_протокола_WAKE
Обязательно гляну, может собираю велосипед. Но в понедельник, сегодня адские катушки. UPD. Да Вы правы. Но уже начали, хотим доделать для этого проекта. Закончим, опубликую.
Увы ни моя реализация, ни 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, опрашивать наличие соединения каждую секунду.