【发布时间】:2017-05-01 11:00:11
【问题描述】:
我正在制作一个数据采集项目,其中 3 台设备将同步以同时向网络服务器发送发布请求。由于来自这些设备的数据应该彼此具有相同的时间,我想等待 3 个发布请求(来自 3 个设备)并创建一个包含来自这 3 个不同设备的数据的 JSON 对象。
对我将如何做到这一点有任何想法吗?感谢您的帮助!
用于创建随机数据的 JavaScript
当我按下按钮时,这部分代码将被执行
$.post('plot.php', {micro: "YUN3",acc: data_string3, gyro: gyro1, mag: mag1}, function(data){
//console.log("posted data: " + data_string3 + "/" + gyro1 + "/" + mag);
x3=[];
y3=[];
z3=[];
console.log(data);
});
$.post('plot.php', {micro: "YUN1",acc: data_string1, gyro: gyro2, mag: mag2}, function(data){
//console.log("posted data: " + data_string1 + "/" + gyro2 + "/" + mag);
x1=[];
y1=[];
z1=[];
console.log(data);
});
$.post('plot.php', {micro: "YUN2",acc: data_string2, gyro: gyro3, mag: mag3}, function(data){
//console.log("posted data: " + data_string2 + "/" + gyro3 + "/" + mag);
x2=[];
y2=[];
z2=[];
console.log(data);
});
plot.php
<?php
$data = array();
if(isset($_POST["acc"], $_POST["gyro"], $_POST["mag"], $_POST["micro"]) === true) {
$acc = $_POST["acc"];
$gyro = $_POST["gyro"];
$mag = $_POST["mag"];
$gyro_array = explode(',',$gyro);
$acc_array = explode(',',$acc);
for($i=0; $i < sizeof($acc_array); $i++) {
if($i < 49) {
$data[] = array('acc_x' => $acc_array[$i], 'acc_y' => $acc_array[$i+50], 'acc_z' => $acc_array[$i+100],
'gyro_x' => null, 'gyro_y' => null, 'gyro_z' => null, 'mag' => null);
} elseif ($i == 49) {
$data[] = array('acc_x' => $acc_array[$i], 'acc_y' => $acc_array[$i+50], 'acc_z' => $acc_array[$i+100],
'gyro_x' => $gyro_array[0], 'gyro_y' => $gyro_array[1], 'gyro_z' => $gyro_array[2], 'mag' => $mag);
}
}
//print_r($acc_array);
echo json_encode($data);
}
?>
micro 键是我用来命名数据的来源,我想看看 YUN1, YUN2, YUN3 是否已经发布,然后我将从这 3 个不同的发布请求生成一个 JSON 对象。
【问题讨论】:
-
向我们展示您的尝试
-
创建 3 个不同的标志,每次存储从每个源接收到的数据的状态。在您的接收方检查您是否收到所有三个请求或不使用这些 fag 变量之后。您是否执行业务逻辑部分并重置标志变量( Storage )并再次监视标志变量。还有第二种方法,您可以将您的发布请求存储在接收方的某个临时位置并对其进行监控。在获得所有三个之后,您可以重置该帖子请求的临时存储并执行业务逻辑。