我正在尝试使用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任务管理器时,它会打开一秒钟左右,然后关闭。有人能给我指个方向吗?
发布于 2015-04-11 16:03:25
要使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"'));(您的代码片段也缺少尾随的单引号,但我怀疑这是一个拼写错误。)
https://stackoverflow.com/questions/29566886
复制相似问题