Я уже завершил управление устройствами через интернет с помощью кнопок. Я использовал щит Ethernet Arduino Uno+ SD CARD+. Теперь я хочу изменить его так, чтобы он мог отправлять текстовые команды через форму представления, чтобы управлять ими.
Я мог бы это сделать, когда использовал Arduino Uno Memory для HTML-кода, но теперь сталкиваюсь с проблемами при использовании SD-карты для HTML. Ожидание модуля кода для него.
Да, это возможно. Но вам нужно использовать веб-сокет. Я сделал это с помощью PHP. Таким образом, вы создадите страницу с html и php, которая при нажатии кнопки отправки отправит команды. Это должно быть так, в php:
<?php
$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
socket_connect($sock,"ip number of arduino", 8080);
$messsage = '0';
if (isset($_POST['on'])){
$msg='1';
}
if (isset($_POST['off'])){
$msg='0';
}
socket_write($sock, $msg);
?>
Поэтому вам просто нужно написать html для отправки метода post при отправке формы.
Представление HTML-формы фактически вызывает метод POST или GET протокола HTTP. Этот протокол является читаемым человеком.
Пример HTTP-запроса из w3schools:
POST /test/demo_form.asp HTTP/1.1
Host: w3schools.com
name1=value1&name2=value2
Это то, что вы получите в буфере arduino. Вы можете просто найти шаблон name1 = и прочитать значение и действовать соответствующим образом.
В приведенном ниже примере я читаю значения переменных s и e.
word len = ether.packetReceive();
word pos = ether.packetLoop(len);
if (pos) {
bfill = ether.tcpOffset();
char* socket = strstr((char *)Ethernet::buffer + pos, "?s=");
if(socket != 0){
byte s = getIntArg(socket, "s");
byte e = getIntArg(socket, "e");
Serial.println("Request");
Serial.println(s);
Serial.println(e);
PlanActions(s, e)
}
Форма для этого запроса выглядит так:
<form action="." method="POST">
<select name="s" size="1">
<option value="0">TV</option>
<option value="1">HiFi</option>
</select>
<input name="e" type="submit" value="0">
<input name="e" type="submit" value="1">
</form>
В примере я отправляю простую страницу формы из arduino, но вы можете иметь страницу, где хотите. Он может быть на локальном компьютере или веб-сервере. Просто измените действие на нечто вроде <form action="arduino-ip"