UNPKG

@iot9x.com/ipc-utils

Version:

九星云、九星小程序、九星配置工具所共用的库方法

83 lines (82 loc) 3.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ModbusASCII = void 0; const constant_1 = require("./constant"); const pdu_1 = require("./pdu"); const util_1 = require("./util"); const validator_1 = require("./validator"); class ModbusASCII { /** * 实例化ModbusRTU类 * @param params 初始化参数 */ constructor(params) { /** 取消结尾的回车换行符(\r\n) */ this.disableLinefeed = false; /** 16位整型编码(有符号+无符号) */ this.i16Encode = constant_1.I16Encode.AB; /** 32位整型编码(有符号+无符号) */ this.i32Encode = constant_1.I32Encode.ABCD; /** 32位浮点型编码(FLOAT) */ this.f32Encode = constant_1.F32Encode.ABCD; /** 64位整型编码(有符号+无符号) */ this.i64Encode = constant_1.I64Encode.ABCDEFGH; /** 64位浮点型编码(Double) */ this.f64Encode = constant_1.F64Encode.ABCDEFGH; const slaveIdValidateError = validator_1.Validator.slaveId(params.slaveId); if (slaveIdValidateError) throw new Error(slaveIdValidateError); this.slaveId = params.slaveId; if (params.i16) this.i16Encode = params.i16; if (params.i32) this.i32Encode = params.i32; if (params.f32) this.f32Encode = params.f32; if (params.i64) this.i64Encode = params.i64; if (params.f64) this.f64Encode = params.f64; if (params.disableLinefeed) this.disableLinefeed = params.disableLinefeed; } //#region 读取相关 /** * 读线圈寄存器——01功能码 * @param startAddress 起始地址 * @param count 线圈数量 * @param options 生成指令额外参数 * @returns 读取命令——十六进制字符串 */ readCoilCMD(startAddress, count, options) { const pduHex = pdu_1.ModbusPDU.readCoilCMD(startAddress, count, options); return this.readCMDWrap(pduHex, options); } /** * 读线圈寄存器——01功能码 * @param slaveId 从机地址 * @param startAddress 起始地址 * @param count 线圈数量 * @param options 生成指令额外参数 * @returns 读取命令——十六进制字符串 */ static readCoilCMD(slaveId, startAddress, count, options) { return new ModbusASCII({ slaveId }).readCoilCMD(startAddress, count, options); } /** * Modbus ASCII 读取指令包裹 * @description 将 `Modbus PDU` 数据打包成 `Modbus ASCII` 数据 * @param pduHex Modbus PDU数据(十六进制字符串格式) * @param options 生成指令额外操作 * @returns Modbus ASCII指令 */ readCMDWrap(pduHex, options) { const slaveId = (options === null || options === void 0 ? void 0 : options.slaveId) || this.slaveId; const slaveIdValidateError = validator_1.Validator.slaveId(slaveId); if (slaveIdValidateError) throw new Error(slaveIdValidateError); const result = util_1.Util.pdu2ascii(pduHex, slaveId, (options === null || options === void 0 ? void 0 : options.disableLinefeed) || this.disableLinefeed); return (options === null || options === void 0 ? void 0 : options.lowerCase) ? result.toLowerCase() : result.toUpperCase(); } } exports.ModbusASCII = ModbusASCII;