obniz-cli
Version:
[日本語はこちら](./README-ja.md)
40 lines (37 loc) • 1.21 kB
text/typescript
import SerialPort from "serialport";
export default async () => {
let portname;
const availablePorts = await findUsbSerials();
if (availablePorts.length === 0) {
// not found
} else if (availablePorts.length === 1) {
portname = availablePorts[0];
} else if (availablePorts.length > 1) {
console.error("multiple usbserial found");
for (let i = 0; i < availablePorts.length; i++) {
console.log(" - " + availablePorts[i] + ` ${i === 0 ? "CHOOSED" : ""}`);
}
portname = availablePorts[0];
}
return portname;
};
async function findUsbSerials(): Promise<string[]> {
const availablePorts: string[] = [];
const ports: SerialPort.PortInfo[] = await SerialPort.list();
for (const port of ports) {
if (port.manufacturer && port.manufacturer.indexOf("M5STACK") >= 0) {
availablePorts.push(port.path);
break;
} else if (port.path.indexOf("tty.SLAB") >= 0) {
availablePorts.push(port.path);
break;
} else if (port.path.indexOf("ttyUSB") >= 0) {
availablePorts.push(port.path);
break;
} else if (port.path.indexOf("usbserial") >= 0) {
availablePorts.push(port.path);
break;
}
}
return availablePorts;
}