Skip to content
Snippets Groups Projects
index.js 4.34 KiB
Newer Older
  • Learn to ignore specific revisions
  • dl35's avatar
    dl35 committed
    document.onkeydown = updateKey;
    document.onkeyup = resetKey;
    
    
    dl35's avatar
    dl35 committed
    var server_port = 65432;
    
    dl35's avatar
    dl35 committed
    var server_addr = "192.168.31.81";   // the IP address of your Raspberry PI
    const net = require('net');
    
    // Function to request car status data
    function get_car_status() {
        // const net = require('net');
        
        const client = net.createConnection({ port: server_port, host: server_addr }, () => {
            console.log('connected to server!');
            // Request status data
            client.write("GET_STATUS\r\n");
        });
        
        client.on('data', (data) => {
            try {
                const status = JSON.parse(data.toString());
                
                // Update UI elements with car status
                document.getElementById("direction").textContent = status.direction;
                document.getElementById("temperature").textContent = status.temperature + "°C";
                document.getElementById("speed").textContent = status.speed;
                document.getElementById("distance").textContent = status.distance_traveled.toFixed(2) + " m";
                
                // You could also update a small map visualization here
                
                console.log("Updated car status:", status);
            } catch (e) {
                console.error("Error parsing status data:", e);
            }
            
            client.end();
            client.destroy();
        });
        
        client.on('error', (err) => {
            console.error('Connection error:', err);
        });
    }
    
    function send_data(data) {
        // const net = require('net');
        
        const client = net.createConnection({ port: server_port, host: server_addr }, () => {
            console.log('connected to server!');
            // send the key code to the server
            client.write(`${data}\r\n`);
        });
        
        // get the response from the server
        client.on('data', (data) => {
            // Update the UI with any data received from the server
            // document.getElementById("direction").innerHTML = direction_dict[data];
            console.log(data.toString());
            client.end();
            client.destroy();
        });
    
        client.on('end', () => {
            console.log('disconnected from server');
        });
        
        client.on('error', (err) => {
            console.error('Connection error:', err);
        });
    }
    
    dl35's avatar
    dl35 committed
    
    function client(){
    
    dl35's avatar
    dl35 committed
        
        // const net = require('net');
        var input = document.getElementById("message").value;
    
    dl35's avatar
    dl35 committed
    
    
    dl35's avatar
    dl35 committed
        const client = net.createConnection({ port: server_port, host: server_addr }, () => {
            // 'connect' listener.
    
    dl35's avatar
    dl35 committed
            console.log('connected to server!');
    
    dl35's avatar
    dl35 committed
            // send the message
    
    dl35's avatar
    dl35 committed
            client.write(`${input}\r\n`);
        });
    
    dl35's avatar
    dl35 committed
        
        // get the data from the server
    
    dl35's avatar
    dl35 committed
        client.on('data', (data) => {
    
    dl35's avatar
    dl35 committed
            document.getElementById("bluetooth").innerHTML = data;
    
    dl35's avatar
    dl35 committed
            console.log(data.toString());
            client.end();
    
    dl35's avatar
    dl35 committed
            client.destroy();
    
    dl35's avatar
    dl35 committed
        });
    
        client.on('end', () => {
            console.log('disconnected from server');
        });
    
    dl35's avatar
    dl35 committed
    
    
    }
    
    // for detecting which key is been pressed w,a,s,d
    function updateKey(e) {
    
        e = e || window.event;
    
        if (e.keyCode == '87') {
            // up (w)
            document.getElementById("upArrow").style.color = "green";
            send_data("87");
        }
        else if (e.keyCode == '83') {
            // down (s)
            document.getElementById("downArrow").style.color = "green";
            send_data("83");
        }
        else if (e.keyCode == '65') {
            // left (a)
            document.getElementById("leftArrow").style.color = "green";
            send_data("65");
        }
        else if (e.keyCode == '68') {
            // right (d)
            document.getElementById("rightArrow").style.color = "green";
            send_data("68");
        }
        else{
            send_data("0");
        }
    }
    
    // reset the key to the start state 
    function resetKey(e) {
    
        e = e || window.event;
        send_data("0");
        document.getElementById("upArrow").style.color = "grey";
        document.getElementById("downArrow").style.color = "grey";
        document.getElementById("leftArrow").style.color = "grey";
        document.getElementById("rightArrow").style.color = "grey";
    }
    
    
    // update data for every 50ms
    // function update_data(){
    //     setInterval(function(){
    //         // get image from python server
    //         client();
    //     }, 50);
    // }
    
    // Periodically update car status (every 1 second)
    function update_data() {
        setInterval(function() {
            get_car_status();
        }, 1000);
    
    dl35's avatar
    dl35 committed
    }
    
    
    dl35's avatar
    dl35 committed
    // Call update_data when the page loads
    window.onload = function() {
        update_data();
    };