Skip to content
Snippets Groups Projects
Select Git revision
  • a0a40d6ea68d48f7b4ea0901655c7af8088c14d8
  • master default protected
2 results

serve.js

Blame
  • serve.js 3.04 KiB
    // Amira Abdel-Rahman
    // (c) Massachusetts Institute of Technology 2020
    
    /// Serve node.js to call python-urx library to interact with UR10s
    /// https://github.com/SintefManufacturing/python-urx 
    
    const { exec } = require("child_process");
    
    var express = require('express');
    var app = express();
    const editJsonFile = require("edit-json-file");
    
    var setup;
    
    // will parse incoming JSON data and convert it into an object literal for you
    app.use(express.json({limit: '50mb', extended: true}));
    app.use(express.urlencoded({limit: '50mb', extended: true}));
    
    //serve the html
    app.use(express.static(__dirname + '/../')); // exposes index.html, per below
    
    app.post("/", function(req, res) {
      // each key in req.body will match the keys in the data object that you passed in
      var myObject = req.body.data;
      setup=JSON.parse(myObject.setup);  
      
      console.log("run python_urx!");
      runPython_urx(setup);
    
      res.send("I am done");
    });
    
    
    port = 8080;
    app.listen(port);
    console.log(`Open http://localhost:${port}/demos/indexUR10.html in your browser`);
    
    function runPython_urx(setup){
      // var dataToSend;
      // const python = exec('python', ['./assembly/python-urx/script1.py']);
      // const exec = spawn(‘python’, [‘script2.py’,’node.js’,’python’]);
    
      var root="../assembly/python-urx/";
    
      let outputFile = editJsonFile(`${__dirname}/`+root+`setup.json`);
      outputFile.set("setup", setup.ur10Setup);
      outputFile.save();
      console.log("saved the UR10 setup in ../assembly/python-urx/setup.json");
      console.log();
    
      if(setup.ur10Setup.parameters.run){
        console.log("Call python script:")
        var commands=[];
        commands.push("python " + root+setup.ur10Setup.parameters.pythonFileName +".py");
        runListCommand(commands,0);
        
      }else{
        console.log("didn't run the UR10");
      }
    
      if(setup.DEMSetup.parameters.run){
        var root="../simulation/dice_firmware/build/x86/src/sim/vis/";
        let outputFile = editJsonFile(`${__dirname}/`+root+`sim_config.json`);
        outputFile.set("setup", setup.DEMSetup);
        outputFile.save();
        console.log("saved the DEM setup in ../simulation/dice_firmware/build/x86/src/sim/vis/");
        console.log();
        console.log("Compile and run the DEM simulator:")
        var commands=[];
        if(setup.DEMSetup.parameters.make){
          //make first
          commands.push("cd " + "../simulation/dice_firmware/build/x86");
          commands.push("make");
          commands.push("cd " + "src/sim/vis/");
    
        }else{
          commands.push("cd " + root);
        }
        
        commands.push("./sim_vis_executable");
        runListCommand(commands,0);
    
      }else{
        console.log("didn't run DEM simulation");
      }
    }
    
    function runListCommand(commands,index){
      if (index<commands.length){
        console.log(commands[index]);
        exec(commands[index], (error, stdout, stderr) => {
            if (error) {
                console.log(`error: ${error.message}`);
                return;
            }
            if (stderr) {
                console.log(`stderr: ${stderr}`);
                return;
            }
            console.log(`stdout:`);
            console.log(`${stdout}`);
            runListCommand(commands,index+1);
        });
      }
    }