У меня проблема с переполнением буфера в arduino (uno). Я пытаюсь создать простое приложение, в котором я вставляю b (синий диод) или r (красный диод) или пробел (пробел не включает диод) через страницу PHP в форму, отправляю его, а затем синий или загорается красный диод. Arduino подключен через USB (COM3) В частности: я вставляю "br rb rbrb" в текстовое поле, первые 9 символов отображаются диодным светом, но после того, как буфер девятого символа arduina, вероятно, заполнен, а другие символы отображаются (диодами) примерно через 10 секунд. Если кто-нибудь знает, как это исправить, я хотел бы поблагодарить вас.
Кстати, если я использую последовательный монитор в приложении Arduino, эта проблема не возникает, и буфер не заполняется, поэтому Arduino будет обрабатывать всю строку ("br rb rbrb ") без помех на девятом символе
код Arduino:
int red_2=4;
int blue_1=5;
void setup() {
Serial.begin(9600);
// set diodes for outputs
pinMode(red_2, OUTPUT); // red
pinMode(blue_1, OUTPUT); // blue
//all diodes going LOW in start
digitalWrite(red_2, LOW);
digitalWrite(blue_1, LOW);
}
void loop() {
char var_characters;
if (Serial.available() > 0) {
var_characters = Serial.read();
if (var_characters == ' ') {
Serial.println("Reading charakter: 'space' ");
delay(500);
digitalWrite(red_2, LOW);
digitalWrite(blue_1, LOW);
}
if (var_characters == 'b') {
digitalWrite(blue_1, HIGH);
Serial.print("Reading charakter: ");
Serial.println(var_characters);
delay(500);
digitalWrite(blue_1, LOW);
}
if (var_characters == 'r') {
digitalWrite(red_2, HIGH);
Serial.print("Reading charakter: ");
Serial.println(var_characters);
delay(500);
digitalWrite(red_2, LOW);
}
}
}
PHP код:
<html>
<head>
<title>PHP and Arduino</title>
</head>
<body>
<?php
exec("mode COM3: BAUD=9600 PARITY=n DATA=8 STOP=1 to=off dtr=off rts=off");
$port = fopen("COM3", "w+");
sleep(2);
?>
<center>
<h1>PHP and Arduino</h1>
<form method="post">
Message: <textarea type="text" name="msg_form"></textarea>
<input type="submit" name="send1">
</form>
<br>
</center>
<?php
if (isset($_POST['send1'])) {
$msg_post = $_POST['msg_form'];
echo "<center> $msg_post </center>";
fwrite($port, "$msg_post");
}
fclose($port);
?>
</body>
</html>