Arduino + Python
Возникла проблема: при отправке команды на ардуино serial-порт каждый раз открывается заново, что приводит к перезагрузке платы.
Придумал такое решение: поставить зацикленную программу с постоянно открытым serial-портом, которая каждый цикл читает файл. А в этот файл уже писать команды с веб-сервера.
Вопрос: возможна ли такая ситуация, что команда в файл неполностью записалась одной программой, а другая программа (зацикленная, которая отправляет команды через порт) прочла эти неполные данные? И что с этим делать?
Ответы (1 шт):
Серийный порт хранит всю информацию до момента её прочтения помещая её в так званый буфер. Буфер хранит информацию до момента его прочтения или сброса (очисткой его или перезагрузкой программы).
возможна ли такая ситуация, что команда в файл неполностью записалась одной программой, а другая программа (зацикленная, которая отправляет команды через порт) прочла эти неполные данные? И что с этим делать?
Отвечая на ваш вопрос:
- Порт может слушать только одна программа, у вас не получиться подключиться к одному порту двумя программами, порт блокируется.
- Если вы отправили команду и программа не успела её прочитать - то вы эту команду теряете.
- Да, вы можете записывать эти команды в файл и дальше с ними работать.