从php到arduino的串行通信
我想把一个数字从php传给arduino。目前,我能够通过串口在php和arduino之间进行通信。然而,当我试图将一个数字从php传递给arduino时,arduino无法识别它。然后我尝试传递一个它能够检测到的字符。我已经试过多次了,我不知道代码出了什么问题。下面是我的代码 PHP代码 这是arduino代码从php到arduino的串行通信,php,arduino,serial-communication,Php,Arduino,Serial Communication,我想把一个数字从php传给arduino。目前,我能够通过串口在php和arduino之间进行通信。然而,当我试图将一个数字从php传递给arduino时,arduino无法识别它。然后我尝试传递一个它能够检测到的字符。我已经试过多次了,我不知道代码出了什么问题。下面是我的代码 PHP代码 这是arduino代码 int led =13; int test=0; void setup() { Serial.begin(9600); pinMode(led, OUTPUT); } voi
int led =13;
int test=0;
void setup()
{
Serial.begin(9600);
pinMode(led, OUTPUT);
}
void loop()
{
while(Serial.available()==0);
test=Serial.read();
if(test=='1')
{
digitalWrite(led,HIGH);
delay(500);
digitalWrite(led,LOW);
delay(500);
digitalWrite(led,HIGH);
delay(500);
digitalWrite(led,LOW);
}
}
谁能告诉我怎么了?当我发送1时,指示灯不亮。但是,当我发送“A”时,指示灯亮起。作为一种快速检查,您可以这样做以确保您处理的数据类型正确,即,如果您发送的是字符串或int,并检查其中一种或
void loop(){
if (Serial.available()) {
char ch = Serial.read();
if(ch == '1'){
// your led logic here
}
}
}
好吧,现在试着把长话短说。我自己测试了这个东西,下面的代码很实用。
我注意到arduino IDE中的串行监视器需要打开才能按预期工作。当它没有打开时,正确的数据没有被读取,PHP脚本也没有退出。
我认为这里的问题是,您的arduino环境正试图通过PHP试图讨论的同一个串行端口与设备通信。您可能需要研究如何在尝试使用PHP脚本时禁用该通信
<?php
include 'PhpSerial.php';
$serial = new PhpSerial;
$serial->deviceSet("/dev/tty.usbserial-A9IL9BF7");
$serial->confBaudRate(9600);
$serial->confParity("none");
$serial->confCharacterLength(8);
$serial->confStopBits(1);
$serial->confFlowControl("none");
$serial->deviceOpen();
$read = $serial->readPort();
$serial ->sendMessage('1');
$serial ->deviceClose();
?>
int led = 13;
void setup() {
pinMode(led, OUTPUT);
Serial.begin(9600);
}
void loop() {
if (Serial.available() == 1) {
char ch = Serial.read();
if (ch == '1'){
digitalWrite(led,HIGH);
delay(500);
digitalWrite(led,LOW);
delay(500);
digitalWrite(led,HIGH);
delay(500);
digitalWrite(led,LOW);
}
}
}
Serial.read返回一个int,而不是char
你是说
但是安东尼,它编译你
没错,它确实可以编译,甚至可以运行
但这是因为您正在将字符“1”的ASCII值与Serial.read的int值进行比较
如下图所示,数字1的十进制值等于49
所以当你说
if(test == '1')
你的意思是
if( 1 == 49)
正如你想说的
if( test == 1)
ASCII表
所以这里需要注意的是,它实际上也取决于你如何发送它。如果您作为一种数据类型发送,请在另一种数据类型中接收并将其与另一种数据类型进行比较。你会有可怕的结果
所有这些都在说,求你了,求你了。。。。看在上帝的份上。。。。在php中参数化插入。这就像是PHP的海报子代码。我正在使用PHP_serial.class.phpof课程,当我发送,那里的arduino将更改为test='A',我正在使用windows 7i。我已经解决了这个问题,将php大小的奇偶校验设置为8N1,将arduino大小设置为7E1,因为任何奇数为1的ASCII代码都会有问题。我已经检查了serial.class.php,它正在发送字符串。
if( test == 1)