我正在尝试使用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任务管理器显示它打开一秒左右然后关闭。有人能指出我正确的方向吗?
答案 0 :(得分:0)
让popen
(或任何其他流程函数)在Windows you need to escape backslashes上正常运行,如下所示:
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"'));
(您的代码段也缺少一个尾随的单引号,但我怀疑这是一个错字。)