我是靠谱客的博主 明理老鼠,最近开发中收集的这篇文章主要介绍php接收arduino向服务器发来的请求,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

虽然简单,但初学者的我还是弄了一周,最后的成果是理清了一个概念问题。废话少说,先上代码。

1 if (client.connect(server, 80)) // 用Tomcat的默认8080端口
2 {
3 Serial.println("connected");
4 client.println("GET /yinjiaozhichuli.php?q=ethernet "); // 要传递的数据放在?后面,等号左边是变量名,// 等号右边是数值(一般都是字符型)
5 client.println();
6 } else {
7 Serial.println("connection failed");
8 }

这个是写在arduino里的部分代码,作用就是通过GET请求带着?后面的参数一起发到服务器。这里按理说是没有问题的,网上、书上全部都是标准格式的代码。

之后我在服务器端写了一个简单的PHP文件来处理这个请求:

 1 <?php
 2     if($_GET["q"])
 3     {
 4        $yinjiaozhi=$_GET["q"];       
 5     }
 6     else
 7     {
 8        $yinjiaozhi="error";
 9     }
10 12     echo "$yinjiaozhi"
13 ?>

这个只要运行的话,按照原计划是不是接到数据就输出q的数据?没接到就输出ERROR?一眼就看出问题的绝对是大神,对我这种小白来说却是百思不得其解了,运行结果却是这样的:

但是当我直接用浏览器发送请求时却成功了:

  什么鬼?和说好的不一样啊!!为啥找不到q呢?在arduino的引脚监视器里明明显示连接成功并且请求也发到服务器了啊。而且语句语法完全没有错啊,我开始怀疑人生了。

吊胃口的事情咱就不做了,我就直接说我怎么发现问题的吧,当我把php文件改成这样时:我加入了把q值写到

 1 <?php
 2     if($_GET["q"])
 3     {
 4        $yinjiaozhi=$_GET["q"];       
 5     }
 6     else
 7     {
 8        $yinjiaozhi="error";
 9     }
10     $stream = fopen("ttt.txt", "w+");
11     fwrite($stream, $yinjiaozhi);
12     echo "$yinjiaozhi"
13 ?>

再运行PHP文件时网页上还是和上图一样

但是在我的ttt.txt文件中却出现了数值:

 

这说明服务器确实收到了arduino发的请求信息,并可以对其发来的数据进行操作,那为什么网页上却显示不了信息呢?原因是这样的:

  php相当于一个信息处理器,作用就是将接收到的get请求中的数据保存入ttt.TXT文件并执行echo语句。当arduino向服务器发送请求时,服务器接受到了“q=arduino”这一信息。此时想看到结果的我急忙用浏览器打开php文件。php将服务器中储存的信息存入ttt.txt文件中(所以文件中有arduino字样),然后执行echo语。此时注意了,和php交互的此时是浏览器,而浏览器只是单纯的打开了PHP文件,并没有向服务器发出任何请求,所以网页上会显示找不到“q”的错误了。

  当我在打开php文件的时候同时输入请求时,php文件就会找到我从地址栏发送的请求信息并进行显示了。

注:(本人是初学者,以上均为个人理解,如果在逻辑上有问题请指正,但所列举的事件都是事实证明过的)。

转载于:https://www.cnblogs.com/hehejeson/articles/5966449.html

最后

以上就是明理老鼠为你收集整理的php接收arduino向服务器发来的请求的全部内容,希望文章能够帮你解决php接收arduino向服务器发来的请求所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部