103 lines
3.2 KiB
PHP
103 lines
3.2 KiB
PHP
|
<?php
|
||
|
|
||
|
include('db.inc.php');
|
||
|
$q = intval($_GET['q']);
|
||
|
|
||
|
// Load Plate with balls and pass the result to html-file
|
||
|
if($q == 0) {
|
||
|
$result = $conn->query("SELECT pos_id, pos_x, pos_y, ball_color FROM ball_positions WHERE pos_isEmpty = 0 AND ball_targetPos = 0");
|
||
|
$outp = array();
|
||
|
$outp = $result->fetch_all(MYSQLI_ASSOC);
|
||
|
|
||
|
echo json_encode($outp);
|
||
|
$conn->close();
|
||
|
}
|
||
|
|
||
|
// Load Shelf with balls and pass the result to html-file
|
||
|
if($q == 3) {
|
||
|
$result = $conn->query("SELECT pos_id, ball_color, ball_targetPos FROM ball_positions WHERE ball_targetPos != 0 ORDER BY ball_prio");
|
||
|
$outp = array();
|
||
|
$outp = $result->fetch_all(MYSQLI_ASSOC);
|
||
|
|
||
|
echo json_encode($outp);
|
||
|
$conn->close();
|
||
|
}
|
||
|
|
||
|
// Write to database, if a ball has been moved to the shelf
|
||
|
if($q == 1) {
|
||
|
$ballID = intval($_GET['ballID']);
|
||
|
$shelfID = intval($_GET['shelfID']);
|
||
|
$prio = intval($_GET['prio']);
|
||
|
$live = intval($_GET['live']);
|
||
|
|
||
|
// Create instructions only if webside is in live-mode
|
||
|
if ($live == 1) {
|
||
|
$conn->query("UPDATE ball_positions SET ball_targetPos = $shelfID, ball_prio = $prio, sorted_by_robot = 1 WHERE pos_id = $ballID");
|
||
|
|
||
|
//Get infos for python-script
|
||
|
$result = $conn->query("SELECT pos_x, pos_y, ball_targetPos FROM ball_positions WHERE pos_id = $ballID");
|
||
|
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
|
||
|
$posX = $row['pos_x'];
|
||
|
$posY = $row['pos_y'];
|
||
|
$target = $row['ball_targetPos'];
|
||
|
|
||
|
passthru('python create_instructions.py '.$posX.' '.$posY.' '.$target.'');
|
||
|
} else {
|
||
|
$conn->query("UPDATE ball_positions SET ball_targetPos = $shelfID, ball_prio = $prio, sorted_by_robot = 0 WHERE pos_id = $ballID");
|
||
|
}
|
||
|
$conn->close();
|
||
|
}
|
||
|
|
||
|
// Empty the shelf -> Reset target-positions and priorities
|
||
|
if($q == 2) {
|
||
|
$conn->query("UPDATE ball_positions SET pos_isEmpty = 0, ball_targetPos = 0, ball_prio = -1, sorted_by_robot = 0");
|
||
|
$conn->query("UPDATE ball_positions SET pos_isEmpty = 1 WHERE pos_id = 29");
|
||
|
$conn->close();
|
||
|
echo json_encode("done");
|
||
|
}
|
||
|
|
||
|
// Autosort balls in Database
|
||
|
if($q == 4) {
|
||
|
$result = $conn->query("SELECT pos_id, ball_color FROM ball_positions WHERE pos_isEmpty = 0 AND ball_targetPos = 0 ORDER BY ball_color, pos_id");
|
||
|
|
||
|
$numColor = array(0, 0, 0, 0); // Store Blue, Red, Green, Yellow
|
||
|
$actColor = "undefined";
|
||
|
$i = 0;
|
||
|
$prio = 0;
|
||
|
$shelfID = 10;
|
||
|
|
||
|
while ($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
|
||
|
$actID = $row['pos_id'];
|
||
|
$actColor = $row['ball_color'];
|
||
|
|
||
|
if ($i == 0) $lastColor = $actColor; // Don't go to next shelf at first run
|
||
|
if (($i % 5 == 0 && $i != 0) || $actColor != $lastColor) { // If the shelf is full or color changes
|
||
|
$shelfID++;
|
||
|
$i = 0;
|
||
|
}
|
||
|
if ($shelfID % 5 == 0 && $shelfID % 10 != 0 && $shelfID != 10) {// If the last shelf in a row is reached
|
||
|
$shelfID = $shelfID + 5;
|
||
|
$i = 0;
|
||
|
}
|
||
|
|
||
|
$conn->query("UPDATE ball_positions SET ball_targetPos = $shelfID, ball_prio = $prio WHERE pos_id = $actID");
|
||
|
|
||
|
$lastColor = $actColor;
|
||
|
$i++;
|
||
|
$prio++;
|
||
|
}
|
||
|
$conn->close();
|
||
|
echo json_encode("done");
|
||
|
}
|
||
|
|
||
|
// Call python-script for refreshing the plate (scanning the positions)
|
||
|
if($q == 5) {
|
||
|
passthru('python update_VarAngle.py');
|
||
|
}
|
||
|
|
||
|
// Call python-script for doing the sorting of the balls which are in the shelf in Not-Live-Mode
|
||
|
if($q == 6) {
|
||
|
passthru('python readBalls.py');
|
||
|
}
|
||
|
|
||
|
?>
|