Class EspruinoSerialDevice

Serial device. Assumes data is sent with new line characters (\r\n) between messages.

import { Serial } from 'https://unpkg.com/ixfx/dist/io.js'
const s = new Serial.Device();
s.addEventListener(`change`, evt => {
console.log(`State change ${evt.priorState} -> ${evt.newState}`);
if (evt.newState === `connected`) {
// Do something when connected...
}
});

// In a UI event handler...
s.connect();

Reading incoming data:

// Parse incoming data as JSON
s.addEventListener(`data`, evt => {
try {
const o = JSON.parse(evt.data);
// If we get this far, JSON is legit
} catch (ex) {
}
});

Writing to the microcontroller

s.write(JSON.stringify({msg:"hello"}));

Hierarchy (view full)

Constructors

Properties

abort: AbortController
baudRate: number
chunkSize: number
codec: Codec
connectAttempts: number
evalReplyBluetooth: boolean = false
evalTimeoutMs: number
name: string
port: undefined | SerialPort
states: Flow.StateMachine.WithEvents<Readonly<Readonly<{
    closed: "connecting";
    connected: string[];
    connecting: string[];
    ready: "connecting";
}>>>
tx: undefined | WritableStreamDefaultWriter<string>
verboseLogging: boolean = false

Accessors

  • get isClosed(): boolean
  • Returns boolean

  • get isConnected(): boolean
  • Returns boolean

  • get isDisposed(): boolean
  • Returns boolean

Methods

  • Returns Promise<void>

  • Returns Promise<void>

  • Returns Promise<void>

  • Sends some code to be executed on the Espruino. The result is packaged into JSON and sent back to your code. An exception is thrown if code can't be executed for some reason.

    const sum = await e.eval(`2+2`);
    

    It will wait for a period of time for a well-formed response from the Espruino. This might not happen if there is a connection problem or a syntax error in the code being evaled. In cases like the latter, it will take up to timeoutMs (default 5 seconds) before we give up waiting for a correct response and throw an error.

    Tweaking of the timeout may be required if eval() is giving up too quickly or too slowly. A default timeout can be given when creating the class.

    Options: timeoutMs: Timeout for execution. 5 seconds by default assumeExclusive: If true, eval assumes all replies from controller are in response to eval. True by default debug: If true, execution is traced via warn callback

    Parameters

    • code: string

      Code to run on the Espruino.

    • opts: EvalOpts = {}

      Options

    • Optionalwarn: ((message: string) => void)

      Function to pass warning/trace messages to. If undefined, this.warn is used, printing to console.

        • (message): void
        • Parameters

          • message: string

          Returns void

    Returns Promise<string>

  • Parameters

    • m: string

    Returns void

  • Must change state

    Returns void

  • Should throw if did not succeed.

    Returns Promise<void>

  • Parameters

    • m: string

    Returns void

  • Parameters

    • m: unknown

    Returns void

  • Parameters

    • txt: string

    Returns void

  • Writes text collected in buffer

    Parameters

    • txt: string

    Returns Promise<void>

  • Writes a script to Espruino.

    It will first send a CTRL+C to cancel any previous input, reset() to clear the board, and then the provided code followed by a new line.

    Use eval instead to execute remote code and get the result back.

    // Eg from https://www.espruino.com/Web+Bluetooth
    writeScript(`
    setInterval(() => Bluetooth.println(E.getTemperature()), 1000);
    NRF.on('disconnect',()=>reset());
    `);

    Parameters

    • code: string

      Code to send. A new line is added automatically.

    Returns void