diff --git a/api/index.js b/api/index.js index b04d9e9e..8d788d80 100644 --- a/api/index.js +++ b/api/index.js @@ -3,6 +3,8 @@ var app = express(); const WebSocket = require("ws"); var last_status = {}; +var last_image; +var received_picture = false; app.use(express.static("public")); app.use(express.json()); @@ -19,6 +21,11 @@ ws.on("message", function message(message) { var msg = JSON.parse(message); if (msg.type == "STATUS") { last_status = msg.data; + } else if (msg.type == "IMAGE") { + console.log("got picture"); + console.log(msg.image); + last_image = msg.image; + received_picture = true; } // console.log("got type: " + msg.type); @@ -41,6 +48,16 @@ app.get("/status", function (req, res) { res.status(200).json(last_status); }); +app.get("/image", function (req, res) { + console.log("got picture request"); + var request = JSON.stringify({ + command: 5 + }); + ws.send(request); + while (received_picture == false) { } + res.status(200).send(last_image); +}); + app.post("/move", function (req, res) { console.log("got move request"); var request = JSON.stringify({ diff --git a/api/views/index.ejs b/api/views/index.ejs index 5accd6ae..3590638d 100644 --- a/api/views/index.ejs +++ b/api/views/index.ejs @@ -127,6 +127,15 @@ function take_picture() { console.log("take picture"); + var xhr = new XMLHttpRequest(); + xhr.open("GET", "/image", true); + xhr.overrideMimeType("text/plain; charset=utf-8"); + xhr.onload = (e) => { + console.log("response image received"); + const img = req.response; + document.getElementById("picture").src = "data:image/png;base64," + img; + } + xhr.send(); } function arm_disarm() { diff --git a/src/api_communication/api_communication/api_listener.py b/src/api_communication/api_communication/api_listener.py index c0896e99..31604622 100644 --- a/src/api_communication/api_communication/api_listener.py +++ b/src/api_communication/api_communication/api_listener.py @@ -129,10 +129,10 @@ class ApiListener(Node): {'type': ResponseMessage.ALL_REQUESTS_RESPONSES.name, 'data': result})) def handle_direction_message(self,message): - self.move_position_request.up_down = message['up_down'] - self.move_position_request.left_right = message['left_right'] - self.move_position_request.front_back = message['forward_backward'] - self.move_position_request.angle = message['yaw'] + self.move_position_request.up_down = float(message['up_down']) + self.move_position_request.left_right = float(message['left_right']) + self.move_position_request.front_back = float(message['forward_backward']) + self.move_position_request.angle = float(message['yaw']) self.get_logger().info(f'Calling move position service with request: {str(self.move_position_request)}')