Refactor arduino library as a class, using Typescript now.

This commit is contained in:
mmcwilliams 2019-03-21 14:58:52 -04:00
parent fce259d29b
commit c276525d3a
8 changed files with 83 additions and 133 deletions

View File

@ -1,82 +1,23 @@
## Classes
<dl>
<dt><a href="#Arduino">Arduino</a></dt>
<dd><p>Class representing the arduino communication features</p>
</dd>
</dl>
## Functions
<dl>
<dt><a href="#delay">delay(ms)</a><code>Promise</code></dt>
<dd><p>Pause the process for X milliseconds in async/await functions</p>
</dd>
<dt><a href="#send">send(device, cmd)</a><code>Promise</code></dt>
<dd><p>Send a command to an Arduino using async/await</p>
</dd>
<dt><a href="#write">write(device, str)</a><code>Promise</code></dt>
<dd><p>Send a string to an Arduino using async/await</p>
</dd>
<dt><a href="#open">open(device)</a><code>Promise</code></dt>
<dd><p>Connect to an Arduino using async/await</p>
</dd>
<dt><a href="#close">close(device)</a><code>Promise</code></dt>
<dd><p>Close a connection to an Arduino using async/await</p>
</dd>
</dl>
<a name="Arduino"></a>
## Arduino
Class representing the arduino communication features
**Kind**: global class
* [Arduino](#Arduino)
* [.sendAsync(device, cmd)](#Arduino+sendAsync) ⇒ <code>Promise</code>
* [.writeAsync(device, str)](#Arduino+writeAsync) ⇒ <code>Promise</code>
* [.openArduino(device)](#Arduino+openArduino) ⇒ <code>Promise</code>
* [.closeArduino(device)](#Arduino+closeArduino) ⇒ <code>Promise</code>
<a name="Arduino+sendAsync"></a>
### arduino.sendAsync(device, cmd) ⇒ <code>Promise</code>
Send a command to an Arduino using async/await
**Kind**: instance method of [<code>Arduino</code>](#Arduino)
**Returns**: <code>Promise</code> - Resolves after sending
| Param | Type | Description |
| --- | --- | --- |
| device | <code>string</code> | Arduino identifier |
| cmd | <code>string</code> | Single character command to send |
<a name="Arduino+writeAsync"></a>
### arduino.writeAsync(device, str) ⇒ <code>Promise</code>
Send a string to an Arduino using async/await
**Kind**: instance method of [<code>Arduino</code>](#Arduino)
**Returns**: <code>Promise</code> - Resolves after sending
| Param | Type | Description |
| --- | --- | --- |
| device | <code>string</code> | Arduino identifier |
| str | <code>string</code> | String to send |
<a name="Arduino+openArduino"></a>
### arduino.openArduino(device) ⇒ <code>Promise</code>
Connect to an Arduino using async/await
**Kind**: instance method of [<code>Arduino</code>](#Arduino)
**Returns**: <code>Promise</code> - Resolves after opening
| Param | Type | Description |
| --- | --- | --- |
| device | <code>string</code> | Arduino identifier |
<a name="Arduino+closeArduino"></a>
### arduino.closeArduino(device) ⇒ <code>Promise</code>
Close a connection to an Arduino using async/await
**Kind**: instance method of [<code>Arduino</code>](#Arduino)
**Returns**: <code>Promise</code> - Resolves after closing
| Param | Type | Description |
| --- | --- | --- |
| device | <code>string</code> | Arduino identifier |
<a name="delay"></a>
## delay(ms) ⇒ <code>Promise</code>
@ -89,3 +30,53 @@ Pause the process for X milliseconds in async/await functions
| --- | --- | --- |
| ms | <code>integer</code> | milliseconds |
<a name="send"></a>
## send(device, cmd) ⇒ <code>Promise</code>
Send a command to an Arduino using async/await
**Kind**: global function
**Returns**: <code>Promise</code> - Resolves after sending
| Param | Type | Description |
| --- | --- | --- |
| device | <code>string</code> | Arduino identifier |
| cmd | <code>string</code> | Single character command to send |
<a name="write"></a>
## write(device, str) ⇒ <code>Promise</code>
Send a string to an Arduino using async/await
**Kind**: global function
**Returns**: <code>Promise</code> - Resolves after sending
| Param | Type | Description |
| --- | --- | --- |
| device | <code>string</code> | Arduino identifier |
| str | <code>string</code> | String to send |
<a name="open"></a>
## open(device) ⇒ <code>Promise</code>
Connect to an Arduino using async/await
**Kind**: global function
**Returns**: <code>Promise</code> - Resolves after opening
| Param | Type | Description |
| --- | --- | --- |
| device | <code>string</code> | Arduino identifier |
<a name="close"></a>
## close(device) ⇒ <code>Promise</code>
Close a connection to an Arduino using async/await
**Kind**: global function
**Returns**: <code>Promise</code> - Resolves after closing
| Param | Type | Description |
| --- | --- | --- |
| device | <code>string</code> | Arduino identifier |

View File

@ -1,7 +1,9 @@
'use strict';
Object.defineProperty(exports, "__esModule", { value: true });
const SerialPort = require('serialport');
const Readline = SerialPort.parsers.Readline;
const exec = require('child_process').exec;
const delay = require("delay");
const parser = new Readline('');
const newlineRe = new RegExp('\n', 'g');
const returnRe = new RegExp('\r', 'g');
@ -18,18 +20,6 @@ const KNOWN = [
'/dev/ttyACM0',
'COM3'
];
/**
* Pause the process for X milliseconds in async/await functions
*
* @param {integer} ms milliseconds
*
* @returns {Promise} Resolves after wait
**/
async function delay(ms) {
return new Promise(resolve => {
return setTimeout(resolve, ms);
});
}
/**
* Class representing the arduino communication features
**/

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,9 @@
'use strict';
Object.defineProperty(exports, "__esModule", { value: true });
const SerialPort = require('serialport');
const Readline = SerialPort.parsers.Readline;
const exec = require('child_process').exec;
const delay = require("delay");
const parser = new Readline('');
const newlineRe = new RegExp('\n', 'g');
const returnRe = new RegExp('\r', 'g');
@ -18,18 +20,6 @@ const KNOWN = [
'/dev/ttyACM0',
'COM3'
];
/**
* Pause the process for X milliseconds in async/await functions
*
* @param {integer} ms milliseconds
*
* @returns {Promise} Resolves after wait
**/
async function delay(ms) {
return new Promise(resolve => {
return setTimeout(resolve, ms);
});
}
/**
* Class representing the arduino communication features
**/

File diff suppressed because one or more lines are too long

View File

@ -1,7 +1,9 @@
'use strict';
Object.defineProperty(exports, "__esModule", { value: true });
const SerialPort = require('serialport');
const Readline = SerialPort.parsers.Readline;
const exec = require('child_process').exec;
const delay = require("delay");
const parser = new Readline('');
const newlineRe = new RegExp('\n', 'g');
const returnRe = new RegExp('\r', 'g');
@ -18,18 +20,6 @@ const KNOWN = [
'/dev/ttyACM0',
'COM3'
];
/**
* Pause the process for X milliseconds in async/await functions
*
* @param {integer} ms milliseconds
*
* @returns {Promise} Resolves after wait
**/
async function delay(ms) {
return new Promise(resolve => {
return setTimeout(resolve, ms);
});
}
/**
* Class representing the arduino communication features
**/

File diff suppressed because one or more lines are too long

View File

@ -4,6 +4,8 @@ const SerialPort = require('serialport')
const Readline = SerialPort.parsers.Readline
const exec = require('child_process').exec
import delay = require('delay');
const parser : any = new Readline('')
const newlineRe : RegExp = new RegExp('\n', 'g')
const returnRe : RegExp = new RegExp('\r', 'g')
@ -23,35 +25,22 @@ const KNOWN : string[] = [
'COM3'
]
/**
* Pause the process for X milliseconds in async/await functions
*
* @param {integer} ms milliseconds
*
* @returns {Promise} Resolves after wait
**/
async function delay (ms : number) {
return new Promise(resolve => {
return setTimeout(resolve, ms)
})
}
/**
* Class representing the arduino communication features
**/
class Arduino {
path : any = {}
known : string[] = KNOWN
alias : any = {}
serial : any = { connect : {}, projector : {}, camera : {}, light : {} }
baud : number = 57600
queue : any = {}
timer : number = 0
lock : boolean = false
locks : any = {}
confirmExec : any
private path : any = {}
private known : string[] = KNOWN
private alias : any = {}
private serial : any = { connect : {}, projector : {}, camera : {}, light : {} }
private baud : number = 57600
private queue : any = {}
private timer : number = 0
private lock : boolean = false
private locks : any = {}
private confirmExec : any
constructor () {