Использование popen () для загрузки эскиза ardiuno

Я пытаюсь использовать PHP для компиляции и загрузки эскиза Arduino через командную строку. Прямо сейчас пользователь загружает ino или же pde файл через форму, и он передается в каталог для последующего использования. Используя местоположение загруженного файла в качестве переменной, я бы хотел, чтобы PHP запустил версию Ardunio для командной строки, чтобы скомпилировать и загрузить ее.

После первоначальной попытки с использованием exec() а также system()Я перешел на popen(), Запустив следующий код, я могу заставить Arduino открыться, а затем закрыть, не загружая скетч:

pclose(popen('"C:\Program Files\Arduino\arduino.exe" --port COM3 --upload "C:\sketches\uploads\cube\a\a.ino"));

Выполнение этого кода и его вариантов через командную строку Windows работает, поэтому я знаю, что входная строка не является проблемой. Кроме того, просмотр диспетчера задач Windows показывает, что он открывается на секунду или около того, а затем закрывается. Может ли кто-нибудь указать мне правильное направление?

1

Решение

За popen (или любые другие функции процесса) для правильной работы в Windows вам нужно избежать обратной косой черты как это:

pclose(popen('"C:\\Program Files\\Arduino\\arduino.exe" --port COM3 --upload "C:\\sketches\\uploads\\cube\\a\\a.ino"'));

в качестве альтернативы попробуйте заменить обратную косую черту на переднюю. Следующее также должно работать на последних версиях Windows:

pclose(popen('"C:/Program Files/Arduino/arduino.exe" --port COM3 --upload "C:/sketches/uploads/cube/a/a.ino"'));

(В вашем фрагменте кода также отсутствовала завершающая одинарная кавычка, но я подозреваю, что это опечатка.)

0

Другие решения

Других решений пока нет …