Я разработал плагин для Domoticz на RPi3B +.Этот плагин в Python.Я хочу отправлять команды на плату Arduino через последовательный порт USB.
Плагин открывает последовательный порт, отправляет команду и закрывает последовательный порт.Работает хорошо кроме как после перезагрузки.
После перезагрузки порт открыт, команда, похоже, отправлена на Arduino, но не понимает ее (как если бы скорость передачи данных была неправильной).Индикатор Rx в Arduino мигает.
Если я параллельно открываю последовательный порт с помощью minicom и выхожу из minicom без сброса параметров, тогда процесс запускается правильно.
Вот мой код:
serialCmd = "gpio sh" + str( shutterId ) + "_" + order +" on for " + str( PULSE_DURATION_MS ) + "\r"
Domoticz.Debug( "Serial command : " + serialCmd )
# open serial port
try:
Domoticz.Debug( "Opening serial port : " + Parameters["SerialPort"] )
serialPort = serial.Serial( port = Parameters["SerialPort"],
baudrate = 115200,
bytesize = serial.EIGHTBITS,
parity = serial.PARITY_NONE,
stopbits = serial.STOPBITS_ONE,
timeout = 1,
xonxoff = False,
rtscts = False,
dsrdtr = False )
except:
serialPort = None
if serialPort:
serialPort.write( serialCmd.encode( 'utf-8' ) )
serialPort.close()
serialPort = None
Последовательный порт / dev / ttyUSB0 .Если я пытаюсь использовать exclusive = True в serial.Serial (...) , он не может открыть порт, как если бы порт уже открыт.
Еще один странныйвещь ... Когда плата Arduino перезагружается, она отправляет некоторую информацию о последовательном порте.Я не могу прочитать это с помощью плагина в Python с PySerial, но я могу читать это с помощью Minicom.
Если я закрываю minicom с сбросом параметров, каждый раз, когда я открываю minicom, эта информация читается minicom (без сброса платы arduino), как если бы входной буфер никогда не читался и pythonплагин все еще не работает.
Есть идеи?