【问题标题】:Using popen() to upload ardiuno sketch使用 popen() 上传 arduino 草图
【发布时间】:2015-04-10 16:59:03
【问题描述】:

我正在尝试使用 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 任务管理器会显示它打开一秒钟左右然后关闭。有人能指出我正确的方向吗?

【问题讨论】:

    标签: php file-upload arduino


    【解决方案1】:

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

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

    【讨论】:

    • 感谢您的链接和解释,我现在知道为什么以及如何转义反斜杠了。但是,问题仍然存在。我现在认为它与 Arduino 的关系比 PHP 方面的要多……观看任务管理器显示 arduino(作为 javaw.exe)进程在系统级别运行,因为这就是 Wamp 运行的方式,然后在上传之前它退出
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多