Arduino + Python

Возникла проблема: при отправке команды на ардуино serial-порт каждый раз открывается заново, что приводит к перезагрузке платы.

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

Вопрос: возможна ли такая ситуация, что команда в файл неполностью записалась одной программой, а другая программа (зацикленная, которая отправляет команды через порт) прочла эти неполные данные? И что с этим делать?


Ответы (1 шт):

Автор решения: Andrew Holovko

Серийный порт хранит всю информацию до момента её прочтения помещая её в так званый буфер. Буфер хранит информацию до момента его прочтения или сброса (очисткой его или перезагрузкой программы).

возможна ли такая ситуация, что команда в файл неполностью записалась одной программой, а другая программа (зацикленная, которая отправляет команды через порт) прочла эти неполные данные? И что с этим делать?

Отвечая на ваш вопрос:

  • Порт может слушать только одна программа, у вас не получиться подключиться к одному порту двумя программами, порт блокируется.
  • Если вы отправили команду и программа не успела её прочитать - то вы эту команду теряете.
  • Да, вы можете записывать эти команды в файл и дальше с ними работать.
→ Ссылка