谢邀。同树莓派开发者。
看了楼上的回答,感觉对不熟悉网络的人有点困难。既然题主说的是一个小装置,那么我提供一个比较方便的思路:
服务端的2个php文件(分别叫它们index.php 和get.php吧),index.php负责显示数值,get.php负责接收数值。我们通过GET由树莓派向get.php发送请求,实际上GET就是访问一段URL。所以,树莓派上由C++写的程序,只需访问一次url就能完成数据传输(当然,有像Python的request类似的库 就更好了)。
我们传输的GET参数名为:value
php获取GET请求的方法很简单:
$value = $_GET['value'];
传输的数值会被保存在value变量中,这时候需要将它保存下来。当然,如题主所说的用MySQL不是不可行,只是为了这么一个小数据去用MySQL太没必要了。我推荐,直接对一个文件进行读写。也就是说get.php获取完数据之后,把数据放在一个txt文件里(就叫它value.txt吧),然后当题主访问index.php的时候,index.php去读那个txt文件,并把它显示出来。
php写一个txt文件的方法:
$file = 'value.txt';
$fp = @fopen($file, 'w');
fwrite($fp, "数值");
fclose($fp);
php读一个txt文件的方法:
$myfile = fopen("value.txt", "r") or die("Unable to open file!");
echo fread($myfile,filesize("value.txt"));
fclose($myfile);
综上所述,
index.php完整代码如下:
$value = $_GET['value'];
$file = 'value.txt';
$fp = @fopen($file, 'w');
fwrite($fp, $value);
fclose($fp);
?>
get.php完整代码如下:
$myfile = fopen("value.txt", "r") or die("Unable to open file!");
echo fread($myfile,filesize("value.txt"));
fclose($myfile);
?>
至于C++部分,原理就是访问:"域名/get.php?value=xxxxxx"。我不是c++程序员,但是我相信你是知道的。只要获取完传感器的值,然后访问一个URL 传递就行。建立线程套着循环什么的就是一般思路。
我提供个Python代码吧:
import requests
def get(value):
url = 'http://你的域名/get.php'
params = {'value':value}
requests.get(url,params=params)
#get.php里写个echo就能返回值 我没写 所以就不返回什么东西啦
#然后这段代码我自己测好像有错误...但是应该不是代码本身的问题。
或者 C++部分让@李承开 来补一下?