UNPKG

codesys-client

Version:

Node.js Codesys client for reading and writing PLC data using network variable lists (NVL)

128 lines (127 loc) 4.06 kB
/// <reference types="node" /> import { EventEmitter } from 'events'; import { AddressInfo } from 'net'; import { Listener, ReceiverSettings } from './types/types'; import type { IecType } from 'iec-61131-3'; export declare class Receiver extends EventEmitter { private debug; private debugD; private debugIO; /** * Active debug level * - 0 = no debugging * - 1 = basic debugging (same as $env:DEBUG='codesys-client-receiver') * - 2 = detailed debugging (same as $env:DEBUG='codesys-client-receiver,codesys-client-receiver:details') * - 3 = full debugging (same as $env:DEBUG='codesys-client-receiver,codesys-client-receiver:details,codesys-client-receiver:raw-data') */ debugLevel: number; /** * Active settings */ settings: ReceiverSettings; /** * Socket instance */ private socket?; /** * Buffer for each list ID of incomplete packets * (data is still coming up) */ private packetBuffer; /** * Array handlers added by user */ handlers: Listener[]; /** * Constructor * * @param settings Settings object */ constructor(settings?: ReceiverSettings); /** * Sets debugging using debug package on/off. * Another way for environment variable DEBUG: * - 0 = no debugging * - 1 = basic debugging (same as $env:DEBUG='codesys-client-receiver') * - 2 = detailed debugging (same as $env:DEBUG='codesys-client-receiver,codesys-client-receiver:details') * - 3 = full debugging (same as $env:DEBUG='codesys-client-receiver,codesys-client-receiver:details,codesys-client-receiver:raw-data') * * @param level 0 = none, 1 = basic, 2 = detailed, 3 = detailed + raw data */ setDebugging(level: number): void; /** * Starts listening for incoming data from * the UDP port (and interface) provided in settings */ listen(): Promise<AddressInfo>; /** * Stops listening for incoming data */ close(): Promise<void>; /** * Adds a new data handler callback for incoming data. * Callback is called with received data if listID matches * * @param listID List ID ("Listidentifier") of the network variable list (NVL) * @param dataType IEC-61131-3 data type schema of the provided data (like iec.INT, iec.STRUCT, etc.) * @param callback Callback to be called when data is received * @returns */ addHandler<T>(listID: number, dataType: IecType, callback: (data: T, listener: Listener) => void): Listener; /** * Removes the given handler from handler list * and stops calling its callback * @param handler Handler to be removed - created previously with addHandler() */ removeHandler(handler: Listener): void; /** * Removes all registered handlers */ removeAllHandlers(): void; /** * Callback for socket errors * @param err */ private handleSocketError; /** * Handles received data from socket * * @param data * @param info */ private handleReceivedData; /** * Parses received from byte buffer to object * @param data */ private parseReceivedPacket; /** * Parses header from received data * @param data * @returns */ private parseReceivedPacketHeader; /** * Parses header flags as string from bits * @param flags * @returns */ private parseHeaderFlags; /** * Handles received packet and adds to packet buffer * @param packet */ private handleReceivedPacket; /** * Checks if received packets are fully received * @param index * @param buffer */ private checkReceivedPacket; /** * Combines all received packets to one single packet * @param buffer * @returns */ private convertBufferEntriesToPacket; }