我正在尝试使用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);
}
}
请帮忙。感谢。
答案 0 :(得分:2)
如果还没有,请检查您的COM2是否已在设备管理器中安装,启用并正常工作。您还在使用什么型号的Arduino?我不认为没有更多信息就可以回答这个问题。将该信息添加到原始问题中可能是明智之举。另外,我们无法在没有注册帐户的情况下看到php_serial类的来源,我不希望这样做。 我意识到这不仅仅是一个评论,而是一个答案,但我需要更多的代表评论(在我看来,SO的声誉系统存在缺陷。)但是如果没有更多信息,原始问题就无法得到答案,所以我觉得补充是恰当的。祝你好运。
答案 1 :(得分:2)
您没有在PHP代码中设置波特率。
您是否尝试使用终端仿真器(如Hyperterm)确认您的串口是否正确连接?
您可能需要使用字符串\\.\COM2
作为串行端口的名称 - 这就是我在我编写的C程序中所做的。请注意,您可能需要转义那些反斜杠:"\\\\.\\COM2"
。
答案 2 :(得分:0)
PHP串行类代码中有几个错误。
功能DeviceSet 开箱即用的ttyUSB0或ttyACM0在Linux上不起作用;
功能冲突, $ this-> os === osx的if必须是ELSEIF
然后,当仍然尝试从PI或BBB连接到Arduino时,您需要 stty -F / dev / ttyACM0 ignpar 使它正常工作...