@svrooij/sunspec
Version:
Reading sunspec
68 lines • 2.46 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.PromiseModbus = void 0;
const modbus_serial_1 = __importDefault(require("modbus-serial"));
class PromiseModbus extends modbus_serial_1.default {
constructor(host, port) {
super();
this.host = host;
this.port = port;
}
connect() {
return __awaiter(this, void 0, void 0, function* () {
yield this.closeAsync();
yield this.connectTCP(this.host, { port: this.port });
this.setID(1);
this.setTimeout(3000);
});
}
closeAsync() {
if (!this.isOpen) {
return Promise.resolve();
}
// console.log('Closing');
return new Promise((resolve, reject) => {
let timeout = setTimeout(() => {
reject();
}, 1000);
this.close(() => {
if (timeout)
clearTimeout(timeout);
resolve();
});
});
}
openAsync() {
if (this.isOpen) {
return Promise.resolve(true);
}
// console.log('Opening connection')
return new Promise((resolve, reject) => {
this.open(() => {
resolve(this.isOpen);
});
});
}
waitOpenAsync() {
return __awaiter(this, void 0, void 0, function* () {
yield this.connect();
while (!this.isOpen) {
yield this.openAsync();
}
});
}
}
exports.PromiseModbus = PromiseModbus;
//# sourceMappingURL=promise-modbus.js.map