使用popen()上传arduino sketch

时间:2015-04-10 16:59:04

标签: php file-upload arduino

我正在尝试使用PHP通过命令行编译和上传Arduino草图。现在,用户通过表单上传inopde文件,并将其传输到目录供以后使用。使用上传文件的位置作为变量,我希望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 个答案:

答案 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"'));

(您的代码段也缺少一个尾随的单引号,但我怀疑这是一个错字。)