UNPKG

node-fxplc

Version:

Node.js library for low-level Mitsubishi FX (MELSEC) PLC framed protocol communication

114 lines (97 loc) 5.06 kB
// TypeScript type declarations for node-fxplc // Auto-generated lightweight definitions (manual). Refine as API evolves. import { EventEmitter } from 'events'; export interface RetryOptions { count: number; delayMs: number; } export interface FXPLCClientOptions { retry?: RetryOptions; debug?: boolean; timeoutMs?: number; } export type NumberTypeName = 'WordSigned' | 'DoubleWordSigned' | 'WordUnsigned' | 'DoubleWordUnsigned' | 'Float'; export const NumberType: { WordSigned: NumberTypeName; DoubleWordSigned: NumberTypeName; WordUnsigned: NumberTypeName; DoubleWordUnsigned: NumberTypeName; Float: NumberTypeName; }; export interface NumberTypeConverter { size: number; read(buffer: Buffer, offset?: number): number; write(buffer: Buffer, offset: number, value: number): void; } export interface TransportLike { write(data: Buffer): Promise<void> | void; read(size: number): Promise<Buffer>; close?(): void; on?(event: string, listener: (...args: any[]) => void): any; } export class TransportTCP implements TransportLike { constructor(opts: { host: string; port: number; timeout?: number; flushDelay?: number }); setReconnect(enabled: boolean, delayMs?: number): void; connect(): Promise<void>; write(data: Buffer): Promise<void>; read(size: number): Promise<Buffer>; close(): void; } export class TransportSerial implements TransportLike { constructor(opts: { path: string; baudRate?: number; timeout?: number }); write(data: Buffer): Promise<void>; read(size: number): Promise<Buffer>; close(): void; } export class TransportNull implements TransportLike { write(data: Buffer): Promise<void>; read(size: number): Promise<Buffer>; close(): void; } export type RegisterTypeName = 'S' | 'X' | 'Y' | 'T' | 'M' | 'D' | 'C'; export class RegisterDef { readonly type: RegisterTypeName; readonly num: number; constructor(type: RegisterTypeName, num: number); toString(): string; getBitImageAddress(): [number, number]; static parse(definition: string): RegisterDef; } export const Commands: { BYTE_READ: number; BYTE_WRITE: number; FORCE_ON: number; FORCE_OFF: number; }; export class FXPLCClient extends EventEmitter { constructor(transport: TransportLike, opts?: FXPLCClientOptions); close(): void; batchRead(registers: (string | RegisterDef)[], numberType?: NumberTypeName): Promise<number[]>; batchRead(registers: (string | RegisterDef)[], cb: (err: Error | null, values?: number[]) => void): void; batchRead(registers: (string | RegisterDef)[], numberType: NumberTypeName, cb: (err: Error | null, values?: number[]) => void): void; batchWrite(registers: (string | RegisterDef)[], values: number[], numberType?: NumberTypeName): Promise<void>; batchWrite(registers: (string | RegisterDef)[], values: number[], cb: (err: Error | null) => void): void; batchWrite(registers: (string | RegisterDef)[], values: number[], numberType: NumberTypeName, cb: (err: Error | null) => void): void; readBit(register: string | RegisterDef): Promise<boolean>; readBit(register: string | RegisterDef, cb: (err: Error | null, value?: boolean) => void): void; writeBit(register: string | RegisterDef, value: boolean): Promise<void>; writeBit(register: string | RegisterDef, value: boolean, cb: (err: Error | null) => void): void; readInt(register: string | RegisterDef): Promise<number>; readInt(register: string | RegisterDef, cb: (err: Error | null, value?: number) => void): void; readNumber(register: string | RegisterDef, numberType?: NumberTypeName): Promise<number>; readNumber(register: string | RegisterDef, cb: (err: Error | null, value?: number) => void): void; readNumber(register: string | RegisterDef, numberType: NumberTypeName, cb: (err: Error | null, value?: number) => void): void; writeNumber(register: string | RegisterDef, value: number, numberType?: NumberTypeName): Promise<void>; writeNumber(register: string | RegisterDef, value: number, cb: (err: Error | null) => void): void; writeNumber(register: string | RegisterDef, value: number, numberType: NumberTypeName, cb: (err: Error | null) => void): void; readBytes(address: number, count?: number): Promise<Buffer>; readBytes(address: number, count: number, cb: (err: Error | null, value?: Buffer) => void): void; writeBytes(address: number, data: Buffer): Promise<void>; writeBytes(address: number, data: Buffer, cb: (err: Error | null) => void): void; writeInt(register: string | RegisterDef, value: number): Promise<void>; writeInt(register: string | RegisterDef, value: number, cb: (err: Error | null) => void): void; } export class FXPLCClientMock extends FXPLCClient {} // Errors export class FXPLCError extends Error {} export class NotSupportedCommandError extends FXPLCError {} export class NoResponseError extends FXPLCError {} export class ResponseMalformedError extends FXPLCError {} export class NotConnectedError extends FXPLCError {}