Resolves #4 (4 years ago!). Adds delay (stops scripts for X seconds), alert (displays an alert that stops script execution) and pause (displays a pre-populated alert).

This commit is contained in:
Matt McWilliams 2023-02-28 12:49:11 -05:00
parent d9290f7262
commit 3c19cd35cf
14 changed files with 111 additions and 28 deletions

View File

@ -1,5 +1,5 @@
{ {
"version": "1.7.20", "version": "1.7.21",
"ext_port": 1111, "ext_port": 1111,
"profiles": { "profiles": {
"mcopy": { "mcopy": {

View File

@ -612,6 +612,21 @@ class Commands {
} }
return ms; return ms;
} }
/**
* Pauses a sequence for a length of time
*
* @returns {integer} Length of action in ms
**/
async pause(cmd) {
let ms;
try {
ms = await delay_1.delay(cmd.light * 1000); //delay is in seconds
}
catch (err) {
throw err;
}
return ms;
}
} }
module.exports = function (cfg, proj, cam, light, alert, cam2, proj2, capper) { module.exports = function (cfg, proj, cam, light, alert, cam2, proj2, capper) {
return new Commands(cfg, proj, cam, light, alert, cam2, proj2, capper); return new Commands(cfg, proj, cam, light, alert, cam2, proj2, capper);

File diff suppressed because one or more lines are too long

View File

@ -212,17 +212,23 @@ export default class Mscript {
*/ */
light_state(str: string): void; light_state(str: string): void;
/** /**
* Interpret a pause command * Interpret a delay command
* *
* @param {string} line String containing pause command * @param {string} line String containing delay command
**/ **/
pause(line: string): void; delay(line: string): void;
/** /**
* Interpret an alert command * Interpret an alert command
* *
* @param {string} line String containing pause command * @param {string} line String containing alert message
**/ **/
alert(line: string): void; alert(line: string): void;
/**
* Interpret an pause command
*
* @param {string} line String containing alert message
**/
pause(line: string): void;
/** /**
* Throw an error with specific message * Throw an error with specific message
* *

View File

@ -60,6 +60,7 @@ const ALTS = {
'PFPB': [], 'PFPB': [],
'PBPF': [] 'PBPF': []
}; };
const DELAY = 'DELAY';
const PAUSE = 'PAUSE'; const PAUSE = 'PAUSE';
const ALERT = 'ALERT'; const ALERT = 'ALERT';
/** helper functions */ /** helper functions */
@ -149,8 +150,11 @@ class Mscript {
else if (CMD.indexOf(this.two) !== -1) { else if (CMD.indexOf(this.two) !== -1) {
this.basic_cmd(line, this.two); this.basic_cmd(line, this.two);
} }
else if (startsWith(line, DELAY)) {
this.delay(line);
}
else if (startsWith(line, PAUSE)) { else if (startsWith(line, PAUSE)) {
//this.pause(line); this.pause(line);
} }
else if (startsWith(line, ALERT)) { else if (startsWith(line, ALERT)) {
this.alert(line); this.alert(line);
@ -897,11 +901,11 @@ class Mscript {
this.color = color; this.color = color;
} }
/** /**
* Interpret a pause command * Interpret a delay command
* *
* @param {string} line String containing pause command * @param {string} line String containing delay command
**/ **/
pause(line) { delay(line) {
let lenStr = line.split(' ')[1] || ''; let lenStr = line.split(' ')[1] || '';
let len; let len;
lenStr = lenStr.trim(); lenStr = lenStr.trim();
@ -918,19 +922,19 @@ class Mscript {
if (this.rec !== -1) { if (this.rec !== -1) {
//hold generated arr in state loop array //hold generated arr in state loop array
this.loops[this.rec].arr this.loops[this.rec].arr
.push('PA'); .push('DE');
this.loops[this.rec].meta this.loops[this.rec].meta
.push(lenStr); .push(lenStr);
} }
else { else {
this.arr.push('PA'); this.arr.push('DE');
this.meta.push(lenStr); this.meta.push(lenStr);
} }
} }
/** /**
* Interpret an alert command * Interpret an alert command
* *
* @param {string} line String containing pause command * @param {string} line String containing alert message
**/ **/
alert(line) { alert(line) {
let msg = line.split(' ')[1] || ''; let msg = line.split(' ')[1] || '';
@ -947,6 +951,25 @@ class Mscript {
this.meta.push(line); this.meta.push(line);
} }
} }
/**
* Interpret an pause command
*
* @param {string} line String containing alert message
**/
pause(line) {
const msg = "Paused script. Click OK to continue.";
if (this.rec !== -1) {
//hold generated arr in state loop array
this.loops[this.rec].arr
.push('AL');
this.loops[this.rec].meta
.push(msg);
}
else {
this.arr.push('AL');
this.meta.push(msg);
}
}
/** /**
* Throw an error with specific message * Throw an error with specific message
* *

File diff suppressed because one or more lines are too long

2
app/package-lock.json generated
View File

@ -1,6 +1,6 @@
{ {
"name": "mcopy-app", "name": "mcopy-app",
"version": "1.7.20", "version": "1.7.21",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {

View File

@ -1,6 +1,6 @@
{ {
"name": "mcopy-app", "name": "mcopy-app",
"version": "1.7.20", "version": "1.7.21",
"description": "GUI for the mcopy small gauge film optical printer platform", "description": "GUI for the mcopy small gauge film optical printer platform",
"main": "main.js", "main": "main.js",
"scripts": { "scripts": {

View File

@ -1,5 +1,5 @@
{ {
"version": "1.7.20", "version": "1.7.21",
"ext_port": 1111, "ext_port": 1111,
"profiles": { "profiles": {
"mcopy": { "mcopy": {

4
package-lock.json generated
View File

@ -1,12 +1,12 @@
{ {
"name": "mcopy", "name": "mcopy",
"version": "1.7.20", "version": "1.7.21",
"lockfileVersion": 2, "lockfileVersion": 2,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "mcopy", "name": "mcopy",
"version": "1.7.20", "version": "1.7.21",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"arduino": "file:app/lib/arduino", "arduino": "file:app/lib/arduino",

View File

@ -1,6 +1,6 @@
{ {
"name": "mcopy", "name": "mcopy",
"version": "1.7.20", "version": "1.7.21",
"description": "Small gauge film optical printer platform", "description": "Small gauge film optical printer platform",
"main": "build.js", "main": "build.js",
"directories": { "directories": {

View File

@ -1,5 +1,5 @@
{ {
"version": "1.7.20", "version": "1.7.21",
"ext_port": 1111, "ext_port": 1111,
"profiles": { "profiles": {
"mcopy": { "mcopy": {

View File

@ -619,6 +619,23 @@ class Commands {
} }
return ms; return ms;
} }
/**
* Pauses a sequence for a length of time
*
* @returns {integer} Length of action in ms
**/
public async pause (cmd : any) {
let ms : number;
try {
ms = await delay(cmd.light * 1000); //delay is in seconds
} catch (err) {
throw err;
}
return ms;
}
} }
module.exports = function (cfg : any, proj : any, cam : any, light : any, alert : any, cam2 : any, proj2 : any, capper : any) { module.exports = function (cfg : any, proj : any, cam : any, light : any, alert : any, cam2 : any, proj2 : any, capper : any) {

View File

@ -72,6 +72,7 @@ const ALTS : any = {
'PBPF' : [ ] 'PBPF' : [ ]
}; };
const DELAY : string = 'DELAY';
const PAUSE : string = 'PAUSE'; const PAUSE : string = 'PAUSE';
const ALERT : string = 'ALERT'; const ALERT : string = 'ALERT';
@ -190,8 +191,10 @@ export default class Mscript {
this.basic_cmd(line, this.three); this.basic_cmd(line, this.three);
} else if (CMD.indexOf(this.two) !== -1) { } else if (CMD.indexOf(this.two) !== -1) {
this.basic_cmd(line, this.two); this.basic_cmd(line, this.two);
} else if (startsWith(line, DELAY)) {
this.delay(line);
} else if (startsWith(line, PAUSE)) { } else if (startsWith(line, PAUSE)) {
//this.pause(line); this.pause(line);
} else if (startsWith(line, ALERT)) { } else if (startsWith(line, ALERT)) {
this.alert(line); this.alert(line);
} else if (startsWith(line, '@') || line.indexOf('@') !== -1) { } else if (startsWith(line, '@') || line.indexOf('@') !== -1) {
@ -886,11 +889,11 @@ export default class Mscript {
} }
/** /**
* Interpret a pause command * Interpret a delay command
* *
* @param {string} line String containing pause command * @param {string} line String containing delay command
**/ **/
pause (line : string) { delay (line : string) {
let lenStr : string = line.split(' ')[1] || '' let lenStr : string = line.split(' ')[1] || ''
let len : number; let len : number;
lenStr = lenStr.trim(); lenStr = lenStr.trim();
@ -910,11 +913,11 @@ export default class Mscript {
if (this.rec !== -1) { if (this.rec !== -1) {
//hold generated arr in state loop array //hold generated arr in state loop array
this.loops[this.rec].arr this.loops[this.rec].arr
.push('PA'); .push('DE');
this.loops[this.rec].meta this.loops[this.rec].meta
.push(lenStr); .push(lenStr);
} else { } else {
this.arr.push('PA'); this.arr.push('DE');
this.meta.push(lenStr); this.meta.push(lenStr);
} }
} }
@ -922,7 +925,7 @@ export default class Mscript {
/** /**
* Interpret an alert command * Interpret an alert command
* *
* @param {string} line String containing pause command * @param {string} line String containing alert message
**/ **/
alert (line : string) { alert (line : string) {
let msg : string = line.split(' ')[1] || '' let msg : string = line.split(' ')[1] || ''
@ -939,6 +942,25 @@ export default class Mscript {
} }
} }
/**
* Interpret an pause command
*
* @param {string} line String containing alert message
**/
pause (line : string) {
const msg : string = "Paused script. Click OK to continue."
if (this.rec !== -1) {
//hold generated arr in state loop array
this.loops[this.rec].arr
.push('AL');
this.loops[this.rec].meta
.push(msg);
} else {
this.arr.push('AL');
this.meta.push(msg);
}
}
/** /**
* Throw an error with specific message * Throw an error with specific message
* *