Packages
plinth
0.1.7
0.10.2
0.10.1
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.9
0.5.8
0.5.7
0.5.6
0.5.5
0.5.4
0.5.3
0.5.2
0.5.1
0.5.0
0.4.15
0.4.14
0.4.13
0.4.12
0.4.11
0.4.10
0.4.9
0.4.8
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.0
0.2.0
0.1.13
0.1.12
0.1.11
0.1.9
0.1.8
0.1.7
0.1.6
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
Bindings to Node.js and browser platform APIs
Current section
Files
Jump to
Current section
Files
src/serial_ffi.mjs
import { Ok, Error, BitArray } from "./gleam.mjs";
export async function requestPort() {
try {
const port = await globalThis.navigator.serial.requestPort({ filters: [] });
return new Ok(port);
} catch (error) {
console.warn(error);
return new Error();
}
}
export async function getPorts() {
try {
const ports = await globalThis.navigator.serial.getPorts();
return new Ok(ports);
} catch (error) {
console.warn(error);
return new Error();
}
}
export function getInfo(port) {
try {
const { usbVendorId, usbProductId } = port.getInfo();
return new Ok([usbVendorId, usbProductId]);
} catch (error) {
console.warn(error);
return new Error();
}
}
export async function open(port, baudRate) {
try {
await port.open({ baudRate });
return new Ok();
} catch (error) {
console.warn(error);
return new Error();
}
}
export async function read(port, callback) {
while (port.readable) {
const reader = port.readable.getReader();
try {
while (true) {
const { value, done } = await reader.read();
if (done) {
// |reader| has been canceled.
break;
}
callback(new BitArray(value));
// Do something with |value|…
}
return new Ok();
} catch (error) {
return new Error();
} finally {
reader.releaseLock();
}
}
}