UNPKG

@iot9x.com/ipc-utils

Version:

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

317 lines (316 loc) 14.7 kB
import { F32Encode, F64Encode, I16Encode, I32Encode, I64Encode, ModbusDataType } from './constant'; /** 线圈值 */ type CoilValue = 0 | 1; /** 保持寄存器的值类型 */ type HoldRegisterValue = string | number; /** 编解码参数 */ interface EncodeOptions { /** 16位整型编码(有符号+无符号) */ i16?: I16Encode; /** 32位整型编码(有符号+无符号) */ i32?: I32Encode; /** 32位浮点型编码(FLOAT) */ f32?: F32Encode; /** 64位整型编码(有符号+无符号) */ i64?: I64Encode; /** 64位浮点型编码(Double) */ f64?: F64Encode; } /** 生成指令额外参数 */ interface GetCMDOptions { /** * 指令字符是否小写 * @description 传入`true`,返回示例:`010001000a`; * @description 传入`false`或不传,返回示例:`010001000A` * @default false */ lowerCase?: boolean; /** * 分隔符 * @description 不传返回示例:`0100010001`; * @description 传入`' '`空格返回示例:`01 00 01 00 01`; * @description 传入`'-'`返回示例:`01-00-01-00-01`; */ separator?: string; } export declare class ModbusPDU { /** 16位整型编码(有符号+无符号) */ private i16Encode; /** 32位整型编码(有符号+无符号) */ private i32Encode; /** 32位浮点型编码(FLOAT) */ private f32Encode; /** 64位整型编码(有符号+无符号) */ private i64Encode; /** 64位浮点型编码(Double) */ private f64Encode; /** * 实例化ModbusRTU类 * @param params 初始化参数 */ constructor(params?: EncodeOptions); /** * 读线圈寄存器——01功能码 * @param startAddress 起始地址 * @param count 线圈数量 * @param options 生成指令额外参数 * @returns 读取命令——十六进制字符串 */ static readCoilCMD(startAddress: number, count: number, options?: GetCMDOptions): string; /** * 读离散输入寄存器——02功能码 * @param startAddress 起始地址 * @param count 离散输入寄存器数量 * @param options 生成指令额外参数 * @returns 读取命令——十六进制字符串 */ static readDiscreteInputCMD(startAddress: number, count: number, options?: GetCMDOptions): string; /** * 读保持寄存器——03功能码 * @param startAddress 起始地址 * @param count 保持寄存器数量 * @param options 生成指令额外参数 * @returns 读取命令——十六进制字符串 */ static readHoldCMD(startAddress: number, count: number, options?: GetCMDOptions): string; /** * 根据数据类型读保持寄存器——03功能码 * @param startAddress 起始地址 * @param dataType 想要读取的数据类型 * @param options 生成指令额外参数 * @returns 读取命令——十六进制字符串 */ static readHoldCMDByDataType(startAddress: number, dataType: ModbusDataType, options?: GetCMDOptions): string; /** * 根据数据类型列表读保持寄存器——03功能码 * @param startAddress 起始地址 * @param dataTypeList 想要读取的数据类型列表(按顺序排列哦) * @param options 生成指令额外参数 * @returns 读取命令——十六进制字符串 */ static readHoldCMDByDataTypeList(startAddress: number, dataTypeList: ModbusDataType[], options?: GetCMDOptions): string; /** * 读输入寄存器——04功能码 * @param startAddress 起始地址 * @param count 输入寄存器数量 * @param options 生成指令额外参数 * @returns 读取命令——十六进制字符串 */ static readInputCMD(startAddress: number, count: number, options?: GetCMDOptions): string; /** * 根据数据类型读输入寄存器——04功能码 * @param startAddress 起始地址 * @param dataType 想要读取的数据类型 * @param options 生成指令额外参数 * @returns 读取命令——十六进制字符串 */ static readInputCMDByDataType(startAddress: number, dataType: ModbusDataType, options?: GetCMDOptions): string; /** * 根据数据类型列表读输入寄存器——04功能码 * @param startAddress 起始地址 * @param dataTypeList 想要读取的数据类型列表(按顺序排列哦) * @param options 生成指令额外参数 * @returns 读取命令——十六进制字符串 */ static readInputCMDByDataTypeList(startAddress: number, dataTypeList: ModbusDataType[], options?: GetCMDOptions): string; /** * 读取指令统一实现 * @param codeHex 功能码 * @param startAddress 起始地址 * @param count 寄存器数量 * @param options 生成指令额外参数 * @returns 读取命令——十六进制字符串 */ private getReadCMD; /** * 解析01功能码返回内容 * @param resHex 发送读取线圈指令(01功能码)后modbus从机返回内容,十六进制字符串 * @returns 解析结果 */ static resolveCoilRes(resHex: string): CoilValue[]; /** * 解析02功能码返回内容 * @param resHex 发送读取输入寄存器指令(02功能码)后modbus从机返回内容,十六进制字符串 * @returns 解析结果 */ static resolveDiscreteInputRes(resHex: string): CoilValue[]; /** * 解析03功能码返回内容 * @param resHex 发送读取保持寄存器指令(03功能码)后modbus从机返回内容,十六进制字符串 * @returns 寄存器原始值,十六进制字符串 */ static resolveHoldResRaw(resHex: string): string; /** * 按照数据类型解析03功能码返回内容 * @param resHex 发送读取保持寄存器指令(03功能码)后modbus从机返回内容,十六进制字符串 * @param dataType 数据类型 * @param options 附加参数 * @returns 寄存器值 */ resolveHoldResByDataType(resHex: string, dataType: ModbusDataType, options?: EncodeOptions): HoldRegisterValue; /** * 按照数据类型列表解析03功能码返回内容 * @param resHex 送读取保持寄存器指令(03功能码)后modbus从机返回内容,十六进制字符串 * @param dataTypeList 数据类型列表 * @param options 附加参数 * @returns 寄存器值列表 */ resolveHoldResByDataTypeList(resHex: string, dataTypeList: ModbusDataType[], options?: EncodeOptions): HoldRegisterValue[]; /** * 按照数据类型解析03功能码返回内容 * @param resHex 发送读取保持寄存器指令(03功能码)后modbus从机返回内容,十六进制字符串 * @param dataType 数据类型 * @param options 附加参数 * @returns 寄存器值 */ static resolveHoldResByDataType(resHex: string, dataType: ModbusDataType, options?: EncodeOptions): HoldRegisterValue; /** * 按照数据类型列表解析03功能码返回内容 * @param resHex 送读取保持寄存器指令(03功能码)后modbus从机返回内容,十六进制字符串 * @param dataTypeList 数据类型列表 * @param options 附加参数 * @returns 寄存器值列表 */ static resolveHoldResByDataTypeList(resHex: string, dataTypeList: ModbusDataType[], options?: EncodeOptions): HoldRegisterValue[]; /** * Modbus读取返回内容合法性校验 * @param codeHex 功能码十六进制字符串 * @param resHex 读取返回内容 */ private resCheck; /** * 写单个线圈——05功能码 * @param startAddress 线圈寄存器地址 * @param value 线圈值 * @param options 生成指令额外参数 * @returns 写入命令——十六进制字符串 */ static writeCoilCMD(startAddress: number, value: CoilValue, options?: GetCMDOptions): string; /** * 写多个线圈——0F功能码 * @param startAddress 线圈寄存器起始地址 * @param valueList 线圈值列表(按顺序哦) * @param options 生成指令额外参数 * @returns 写入命令——十六进制字符串 */ static writeMultiCoilCMD(startAddress: number, valueList: CoilValue[], options?: GetCMDOptions): string; /** * 写单个保持寄存器——06功能码 * @param startAddress 保持寄存器的地址 * @param valueHex 保持寄存器的值,十六进制字符串格式 * @param options 生成指令额外参数 * @returns 写入命令——十六进制字符串 */ static writeHoldCMD(startAddress: number, valueHex: string, options?: GetCMDOptions): string; /** * 根据数据类型写单个保持寄存器——06功能码 * @param startAddress 保持寄存器的地址 * @param data 数据值 * @param dataType 数据类型 * @param options 生成指令额外参数 * @returns 写入命令——十六进制字符串 */ writeHoldByDataTypeCMD(startAddress: number, data: number, dataType: ModbusDataType, options?: GetCMDOptions & EncodeOptions): string; /** * 根据数据类型写单个保持寄存器——06功能码 * @param startAddress 保持寄存器的地址 * @param data 数据值 * @param dataType 数据类型 * @param options 生成指令额外参数 * @returns 写入命令——十六进制字符串 */ static writeHoldByDataTypeCMD(startAddress: number, data: number, dataType: ModbusDataType, options?: GetCMDOptions & EncodeOptions): string; /** * 写多个保持寄存器——10功能码 * @param startAddress 保持寄存器起始地址 * @param valueHex 保持寄存器的值,十六进制字符串格式 * @param options 生成指令额外参数 * @returns 写入命令——十六进制字符串 */ static writeMultiHoldCMD(startAddress: number, valueHex: string, options?: GetCMDOptions): string; /** * 根据数据类型写多个保持寄存器——10功能码 * @param startAddress 保持寄存器起始地址 * @param data 数据值 * @param dataType 数据类型 * @param options 生成指令额外参数 * @returns 写入命令——十六进制字符串 */ writeMultiHoldByDataTypeCMD(startAddress: number, data: number, dataType: ModbusDataType, options?: GetCMDOptions & EncodeOptions): string; /** * 根据数据类型写多个保持寄存器——10功能码 * @param startAddress 保持寄存器起始地址 * @param data 数据值 * @param dataType 数据类型 * @param options 生成指令额外参数 * @returns 写入命令——十六进制字符串 */ static writeMultiHoldByDataTypeCMD(startAddress: number, data: number, dataType: ModbusDataType, options?: GetCMDOptions & EncodeOptions): string; /** * 根据数据列表写多个保持寄存器——10功能码 * @param startAddress 保持寄存器起始地址 * @param dataList 要写入的数据和类型元组的列表 * @param options 生成指令额外参数 * @returns 写入命令——十六进制字符串 */ writeMultiHoldByDataTypeListCMD(startAddress: number, dataList: [number | string, ModbusDataType][], options?: GetCMDOptions & EncodeOptions): string; /** * 根据数据列表写多个保持寄存器——10功能码 * @param startAddress 保持寄存器起始地址 * @param dataList 要写入的数据和类型元组的列表 * @param options 生成指令额外参数 * @returns 写入命令——十六进制字符串 */ static writeMultiHoldByDataTypeListCMD(startAddress: number, dataList: [number | string, ModbusDataType][], options?: GetCMDOptions & EncodeOptions): string; /** * 解析06功能码返回内容 * @param resHex 发送写入单个寄存器(06功能码)指令后modbus从机返回内容,十六进制字符串 * @param startAddress 保持寄存器的地址 * @param valueHex 保持寄存器的值,十六进制字符串格式 * @returns 写入结果 */ resolveWriteHoldRes(resHex: string, startAddress: number, valueHex: string): boolean; /** * 解析06功能码返回内容 * @param resHex 发送写入单个寄存器(06功能码)指令后modbus从机返回内容,十六进制字符串 * @param startAddress 保持寄存器的地址 * @param valueHex 保持寄存器的值,十六进制字符串格式 * @returns 写入结果 */ static resolveWriteHoldRes(resHex: string, startAddress: number, valueHex: string): boolean; /** * 解析06功能码返回内容 * @param resHex 发送写入单个寄存器(06功能码)指令后modbus从机返回内容,十六进制字符串 * @param startAddress 保持寄存器的地址 * @param data 数据值 * @param dataType 数据类型 * @param options 附加参数 * @returns 写入结果 */ resolveWriteHoldByDataTypeRes(resHex: string, startAddress: number, data: number, dataType: ModbusDataType, options?: EncodeOptions): boolean; /** * 解析06功能码返回内容 * @param resHex 发送写入单个寄存器(06功能码)指令后modbus从机返回内容,十六进制字符串 * @param startAddress 保持寄存器的地址 * @param data 数据值 * @param dataType 数据类型 * @param options 附加参数 * @returns 写入结果 */ static resolveWriteHoldByDataTypeRes(resHex: string, startAddress: number, data: number, dataType: ModbusDataType, options?: EncodeOptions): boolean; /** * 解析10功能码返回内容 * @param resHex 发送写入多个寄存器(10功能码)指令后modbus从机返回内容,十六进制字符串 * @param options 附加参数 * @returns 元组类型,第一个元素为写入寄存器的地址,第二个元素为写入寄存器的数量 */ resolveWriteMultiHoldRes(resHex: string, options?: EncodeOptions): [number, number]; /** * 解析10功能码返回内容 * @param resHex 发送写入多个寄存器(10功能码)指令后modbus从机返回内容,十六进制字符串 * @param options 附加参数 * @returns 元组类型,第一个元素为写入寄存器的地址,第二个元素为写入寄存器的数量 */ static resolveWriteMultiHoldRes(resHex: string, options?: EncodeOptions): [number, number]; } export {};