@9wick/esptool.js
Version:
TypeScript/Nodejs port of the esptool
126 lines • 3.67 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.EsptoolSerial = exports.DummyReader = void 0;
const serialport_1 = __importDefault(require("serialport"));
class DummyReader {
constructor(serial) {
this.serial = serial;
}
read() {
const value = this.serial.port.read();
// if (value) {
// console.log("data", value);
// console.log("str", value.toString());
// }
const done = false;
return { value, done };
}
releaseLock() { }
cancel() {
this.serial.close();
}
}
exports.DummyReader = DummyReader;
class EsptoolSerial {
constructor(path, option) {
this.port = new serialport_1.default(path, option);
// this.port.on("data", (data: Buffer) => {
// console.log("data", data);
// console.log("str", data.toString());
// });
this.port.on("open", () => {
// console.log("open");
});
this.port.on("error", (error) => {
console.log("error", error);
});
this.port.on("close", (reason) => {
// console.log("close", reason);
});
this.readable = {
getReader: () => {
const dummyReader = new DummyReader(this);
return dummyReader;
},
cancel: async (reason) => {
return this.port.close();
},
};
}
write(data) {
const dataArray = Array.from(data);
// console.log("write", Buffer.from(dataArray));
return new Promise((resolve, reject) => {
this.port.write(dataArray, (error) => {
if (error) {
reject(error);
}
resolve(null);
});
});
}
async setSignals(option) {
if (!this.port.isOpen) {
throw new Error("port is not open");
}
const param = {};
if (option.break !== undefined) {
param.brk = option.break;
}
if (option.requestToSend !== undefined) {
param.rts = option.requestToSend;
}
if (option.dataTerminalReady !== undefined) {
param.dtr = option.dataTerminalReady;
}
await this.wait(1);
return new Promise((resolve, reject) => {
this.port.set(param, (error) => {
if (error) {
reject(error);
}
resolve(null);
});
});
}
setBaudRate(baudRate) {
this.port.update({ baudRate });
}
open({ baudRate } = {}) {
if (baudRate) {
this.port.update({ baudRate });
}
if (this.port.isOpen) {
return;
}
return new Promise((resolve, reject) => {
this.port.open((error) => {
if (error) {
reject(error);
}
resolve(null);
});
});
}
close() {
if (!this.port.isOpen) {
return;
}
return new Promise((resolve, reject) => {
this.port.close((error) => {
if (error) {
reject(error);
}
resolve(null);
});
});
}
wait(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
}
exports.EsptoolSerial = EsptoolSerial;
//# sourceMappingURL=serial.js.map