@iot9x.com/ipc-utils
Version:
九星云、九星小程序、九星配置工具所共用的库方法
83 lines (82 loc) • 3.45 kB
JavaScript
;
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;