Packages
plinth
0.9.2
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 { Result$Ok, Result$Error, BitArray$BitArray } from "./gleam.mjs";
export async function requestPort() {
try {
const port = await globalThis.navigator.serial.requestPort({ filters: [] });
return Result$Ok(port);
} catch (error) {
console.warn(error);
return Result$Error();
}
}
export async function getPorts() {
try {
const ports = await globalThis.navigator.serial.getPorts();
return Result$Ok(ports);
} catch (error) {
console.warn(error);
return Result$Error();
}
}
export function getInfo(port) {
try {
const { usbVendorId, usbProductId } = port.getInfo();
return Result$Ok([usbVendorId, usbProductId]);
} catch (error) {
console.warn(error);
return Result$Error();
}
}
export async function open(port, baudRate) {
try {
await port.open({ baudRate });
return Result$Ok();
} catch (error) {
console.warn(error);
return Result$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(BitArray$BitArray(value));
// Do something with |value|…
}
return Result$Ok();
} catch (error) {
return Result$Error();
} finally {
reader.releaseLock();
}
}
}