Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过串行输入字节读取Arduino和PHP_Php_Html_Serial Port_Arduino - Fatal编程技术网

通过串行输入字节读取Arduino和PHP

通过串行输入字节读取Arduino和PHP,php,html,serial-port,arduino,Php,Html,Serial Port,Arduino,我有PHP脚本通过网站控制Arduino的二极管,但我有一个问题 我的Arduino代码是: int green = 8; int incomingbyte; void setup() { Serial.begin(9600); pinMode(green,OUTPUT); } void loop() { if(Serial.available() > 0) { incomingbyte = Serial.read(); } if(incomingbyt

我有PHP脚本通过网站控制Arduino的二极管,但我有一个问题

我的Arduino代码是:

int green = 8;
int incomingbyte;

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

void loop()
{
  if(Serial.available() > 0)
  {
    incomingbyte = Serial.read();
  }
  if(incomingbyte == '0'){
  digitalWrite(green,HIGH);
  }
  if(incomingbyte == '1'){
  digitalWrite(green,LOW);
  }
}
我的PHP代码是:

<?php

error_reporting(E_ALL); 
ini_set("display_errors", 1);  

if (isset($_GET['action'])) {

    require("php_serial.class.php");

        $serial = new phpSerial();
        $serial->deviceSet("COM3");
        $serial->confBaudRate(9600);
        $serial->deviceOpen();

if ($_GET['action'] == "green1") {

        $serial->sendMessage("0\r");

} else if ($_GET['action'] == "green0") {

        $serial->sendMessage("1\r");
}

$serial->deviceClose();

}

re:2在您的php表单处理程序下添加html代码-这样所有内容都可以从同一个脚本提供,或者使用

header() 
重新定位回html页面-但不能输出错误

编辑以便以单文件方式执行此操作:

<?php
// led.php code in here
error_reporting(E_ALL); 
ini_set("display_errors", 1);  

if (isset($_GET['action'])) {
// and so on ...



?>
<!--// now show your html form regardless 
of whether the form was submitted or not // -->
<!DOCTYPE html>
<html>
<head>
<title>ARDUINO</title>
</head>
<body>

<h1> ARDUINO AND PHP COMMUNICATION </h1>

<a href="?action=green1">ON</a></br>
<a href="?action=green0">OFF</a></br>

</body>
</html>

阿杜伊诺
ARDUINO与PHP通信



编辑以尝试使解决方案更清晰。请注意,您不必将led.php添加到链接中,它们会被提交回同一个文件。

嘿,我刚刚为您的代码做了两个重要的更改

1> 改变

$serial->sendMessage("0\r");

和发送“1”的相同

2> 包括sleep命令

$serial = new phpSerial();
    $serial->deviceSet("COM3");
    $serial->confBaudRate(9600);
    $serial->deviceOpen();
    sleep(2);
sleep命令插入延迟。当php在

$serial->deviceopen();
命令arduino自动重置。因此,当php执行下一个命令时,arduino将无法接收这些命令,因此可能无法执行该操作。2是最好的延迟,因为1将非常短,而其他超过2的则很长。 在与上述文章相同的文件中使用php和html代码,并将其命名为“name.php”,而不使用“”。
这对我很有用……

Thx接受,很抱歉我无法帮助完成第1部分。建议您阅读一些这家伙在使用PHP/Arduino时所做的事情,我相信您会在他的代码中找到最终解决方案的线索。
$serial = new phpSerial();
    $serial->deviceSet("COM3");
    $serial->confBaudRate(9600);
    $serial->deviceOpen();
    sleep(2);
$serial->deviceopen();