UNPKG

modbus-connect

Version:

Modbus RTU over Web Serial and Node.js SerialPort

53 lines (47 loc) 1.68 kB
const ModbusClient = require('./client.js'); const { createTransport } = require('./transport/factory.js'); const logger = require('./logger.js'); const PollingManager = require('./polling-manager.js'); const poll = new PollingManager() const log = logger.createLogger('main'); async function main() { const transport = await createTransport('node', { port: 'COM4', baudRate: 9600, parity: 'none', dataBits: 8, stopBits: 1, // writeTimeout: 500, // readTimeout: 500 }); const client = new ModbusClient(transport, 0, { timeout: 1000, crcAlgorithm: 'crc16Modbus', retryCount: 3, // Кол-во попыток повтора запроса retryDelay: 300, // Задержка между повторами }); await client.connect(); poll.addTask({ id: 'modbus-loop', interval: 1000, immediate: true, fn: [ async () => await client.readHoldingRegisters(0, 2), async () => await client.readHoldingRegisters(2, 2), ], onData: (hold1, hold2) => { log.info('Registers:', hold1, hold2 ); }, onError: (error, index, attempt) => { console.warn(`Error in fn[${index}], attempt ${attempt}: ${error.message}`); }, onStart: () => console.log('Polling started'), onStop: () => console.log('Polling stopped'), maxRetries: 3, backoffDelay: 300, taskTimeout: 2000 }); } main().catch(err => { console.error('Fatal error in main:', err); });