我已经使用按钮完成了通过互联网控制设备 . 我使用Arduino Uno SD CARD以太网屏蔽 . 现在我想修改它,以便used可以通过表单提交发送文本命令来控制它 .
当我使用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表单实际上调用了HTTP协议的POST或GET方法 . 该协议是人类可读的 .
来自w3schools的HTTP请求示例:
POST /test/demo_form.asp HTTP/1.1 Host: w3schools.com name1=value1&name2=value2
这是你将进入arduino缓冲区的内容 . 您只需搜索name1 = pattern并读取值并采取相应措施即可 .
在下面的例子中,我读取变量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发送简单的表单页面,但您可以在任何地方找到该页面 . 它可以在本地计算机或Web服务器上 . 只需将动作更改为 <form action="arduino-ip"
<form action="arduino-ip"
2 回答
是的,这是可能的 . 但是你需要使用网络套接字 . 我用PHP做过 . 因此,您将创建一个包含html和php的页面,当您单击提交按钮时,将发送命令 . 在php中一定是这样的:
因此,您只需编写一个html即可在提交表单时发送post方法 .
提交HTML表单实际上调用了HTTP协议的POST或GET方法 . 该协议是人类可读的 .
来自w3schools的HTTP请求示例:
这是你将进入arduino缓冲区的内容 . 您只需搜索name1 = pattern并读取值并采取相应措施即可 .
在下面的例子中,我读取变量s和e的值 .
此请求的表单如下所示:
在示例中,我从arduino发送简单的表单页面,但您可以在任何地方找到该页面 . 它可以在本地计算机或Web服务器上 . 只需将动作更改为
<form action="arduino-ip"