From f6f69d6f62cf13cced5630dbd4aa2c385a60c85d Mon Sep 17 00:00:00 2001 From: vitrinekast Date: Tue, 6 Feb 2024 14:44:21 +0000 Subject: [PATCH] init server --- .gitignore | 1 + app.js | 95 +++++++++++++++++++++++++++++++++++++++++++++++ package.json | 16 ++++++++ public/index.html | 58 +++++++++++++++++++++++++++++ 4 files changed, 170 insertions(+) create mode 100644 .gitignore create mode 100644 app.js create mode 100644 package.json create mode 100644 public/index.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..07e6e47 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/node_modules diff --git a/app.js b/app.js new file mode 100644 index 0000000..591e820 --- /dev/null +++ b/app.js @@ -0,0 +1,95 @@ +const { SerialPort } = require('serialport') +const express = require('express') +const bodyParser = require('body-parser') +const app = express() +const movement = 1000; + +// Create a port +const port = new SerialPort({ + path: '/dev/ttyUSB1', + baudRate: 9600, +}) + +// app.use(bodyParser.json()); + +const toPlotter = (message) => { + console.log("i will write to plotter ", message); + port.write(message, function (err) { + if (err) { + return console.log('Error on write: ', err.message) + } + console.log('message written: ', message) + }) +} + +// Open errors will be emitted as an error event +port.on('error', function (err) { + console.log('Error: ', err.message) +}) + +port.on("open", function () { + console.log('open'); + port.on('data', function (data) { + console.log(data); + }); +}); + +app.post('/init', (req, res) => { + toPlotter(`IN;SC0,0,100,0,100;SP1;PA60,60;PU`) + res.send('Initialise the plotter') +}) + +app.post('/pen-up', (req, res) => { + toPlotter(`PU;`); + res.send("Sending a message to the plotter about PU;",) +}); + + +app.post('/pen-down', (req, res) => { + toPlotter(`PD;`); + res.send("Sending a message to the plotter about PD;",) +}); + + +app.post('/move-left', (req, res) => { + toPlotter(`PR-${movement},0;`); + res.send("Sending a message to the plotter about PR-10,0;",) +}); + + +app.post('/move-right', (req, res) => { + toPlotter(`PR${movement},0;`); + res.send("Sending a message to the plotter about PR10,0;",) +}); + + +app.post('/move-up', (req, res) => { + toPlotter(`PR0,${movement},0;`); + res.send("Sending a message to the plotter about PR0,10;",) +}); + + +app.post('/move-down', (req, res) => { + toPlotter(`PR0,-${movement};`); + res.send("Sending a message to the plotter about PR0,-10;",) +}); + + +// GET /text?message={message} +app.post('/text', (req, res) => { + toPlotter(`SI0.5,0.8;LB${req.query.message};`); + res.send(`SI0.5,0.8;LB${req.query.message};`) +}); + +// GET /direct?message={message} +app.post('/direct', (req, res) => { + toPlotter(`${req.query.message}`); + res.send(`${req.query.message}`) +}); + +app.use(express.static('public')) + +app.listen(3000, () => { + console.log(`Example app listening on port`) +}) + diff --git a/package.json b/package.json new file mode 100644 index 0000000..fd712b8 --- /dev/null +++ b/package.json @@ -0,0 +1,16 @@ +{ + "name": "plotterparty", + "version": "1.0.0", + "description": "", + "main": "app.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "body-parser": "^1.20.2", + "express": "^4.18.2", + "serialport": "^12.0.0" + } +} diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..ab256bc --- /dev/null +++ b/public/index.html @@ -0,0 +1,58 @@ + + + + + + + Document + + + +

TwitchPlaysPlotter

+ + + + + + \ No newline at end of file