7

我正在尝试使用 PHP 让我的 Arduino 发出信号。每当我运行下面的代码时,它都会显示“无效的串口”,虽然它是有效的?

<?php

include 'serial_connect.php';

$serial = new phpSerial;

$serial->deviceSet("COM2");

$serial->deviceOpen();

$serial->sendMessage("1000");

$serial->deviceClose();
?>

serial_connect.php 类是 php-serial,链接在这里:http ://www.phpclasses.org/package/3679-PHP-Communicate-with-a-serial-port.html

这是我的 Arduino 草图:

int ledPin = 13;

void setup() {
    pinMode(ledPin, OUTPUT);
    Serial.begin(9600);
}

void loop() {
    if(Serial.available() > 0) {
        int time = Serial.parseInt();        
        digitalWrite(ledPin, HIGH);
        delay(time);
        digitalWrite(ledPin, LOW);
    }
}

请帮忙。谢谢。

4

3 回答 3

2

您没有在 PHP 代码中设置波特率。

您是否尝试过使用终端仿真器(如 Hyperterm)来确认您的串口连接正确?

您可能需要使用字符串\\.\COM2作为串行端口的名称——这就是我在我编写的 C 程序中所做的。请注意,您可能需要转义这些反斜杠:"\\\\.\\COM2".

于 2012-11-29T18:09:19.577 回答
2

检查您的 COM2 是否已安装、启用并在设备管理器中正常工作(如果尚未安装)。还有你用的是什么型号的 Arduino?如果没有更多信息,我认为无法回答这个问题。将该信息添加到您的原始问题中可能是明智之举。此外,如果不注册帐户,我们将无法看到 php_serial 类的来源,我不希望这样做。我意识到这更像是一个评论而不是一个答案,但我需要更多的代表来评论(在我看来,这是 SO 声誉系统中的一个缺陷。)但是如果没有更多信息,最初的问题不会得到答案,所以我觉得有必要补充一下。祝你好运。

于 2012-11-29T17:17:49.240 回答
0

PHP-serial 类代码中有几个错误。

开箱即用的 ttyUSB0 或 ttyACM0 函数 DeviceSet 在 linux 上不起作用;

函数 confstopbits,$this->os===osx 的 if 需要是 ELSEIF

然后,当尝试从 PI 或 BBB 连接到 Arduino 时,您需要 stty -F /dev/ttyACM0 ignpar 才能使其正常工作......

于 2019-10-04T15:23:34.887 回答