-
Notifications
You must be signed in to change notification settings - Fork 169
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Server Example seems to be broken #269
Comments
I put togther a code snippet to test all events (according to modbus-server) import * as Modbus from "jsmodbus"
import {Server} from 'net'
const netServer = new Server()
const initialHoldingRegisters = Buffer.alloc(10000)
const server = new Modbus.server.TCP(netServer, {
holding: initialHoldingRegisters
})
server.on('connection', (client) => {
console.log('connection')
})
server.on('readCoils', (request, cb) => {
console.log('readCoils')
})
server.on('preReadCoils', (request, cb) => {
console.log('preReadCoils')
})
server.on('postReadCoils', (request, cb) => {
console.log('postReadCoils')
})
server.on('readDiscreteInputs', (request, cb) => {
console.log('readDiscreteInputs')
})
server.on('preReadDiscreteInputs', (request, cb) => {
console.log('preReadDiscreteInputs')
})
server.on('postReadDiscreteInputs', (request, cb) => {
console.log('postReadDiscreteInputs')
})
server.on('readHoldingRegisters', (request, cb) => {
console.log('readHoldingRegisters')
})
server.on('preReadHoldingRegisters', (request, cb) => {
console.log('preReadHoldingRegisters')
})
server.on('postReadHoldingRegisters', (request, cb) => {
console.log('postReadHoldingRegisters')
})
server.on('readInputRegisters', (request, cb) => {
console.log('readInputRegisters')
})
server.on('preReadInputRegisters', (request, cb) => {
console.log('preReadInputRegisters')
})
server.on('postReadInputRegisters', (request, cb) => {
console.log('postReadInputRegisters')
})
server.on('writeSingleCoil', (request, cb) => {
console.log('writeSingleCoil')
})
server.on('preWriteSingleCoil', (request, cb) => {
console.log('preWriteSingleCoil')
})
server.on('postWriteSingleCoil', (request, cb) => {
console.log('postWriteSingleCoil')
})
server.on('writeSingleRegister', (request, cb) => {
console.log('writeSingleRegister')
})
server.on('preWriteSingleRegister', (request, cb) => {
console.log('preWriteSingleRegister')
})
server.on('postWriteSingleRegister', (request, cb) => {
console.log('postWriteSingleRegister')
})
server.on('writeMultipleCoils', (request, cb) => {
console.log('writeMultipleCoils')
})
server.on('preWriteMultipleCoils', (request, cb) => {
console.log('preWriteMultipleCoils')
})
server.on('writeMultipleCoils', (coils, oldStatus) => {
console.log('writeMultipleCoils')
})
server.on('postWriteMultipleCoils', (coils, newStatus) => {
console.log('postWriteMultipleCoils')
})
server.on('postWriteMultipleCoils', (request, cb) => {
console.log('postWriteMultipleCoils')
})
server.on('writeMultipleRegisters', (request, cb) => {
console.log('writeMultipleRegisters')
})
server.on('preWriteMultipleRegisters', (request, cb) => {
console.log('preWriteMultipleRegisters')
})
server.on('writeMultipleRegisters', (holdingRegisters) => {
console.log('writeMultipleRegisters')
})
server.on('postWriteMultipleRegisters', (holdingRegisters) => {
console.log('postWriteMultipleRegisters')
})
server.on('postWriteMultipleRegisters', (request, cb) => {
console.log('postWriteMultipleRegisters')
})
netServer.listen(502)
In addition it is not clear (for me at least) how I should use the BufferCB while handling the event |
This seems to be a bug caused by the node-modbus/src/modbus-server.ts Line 65 in f348a56
node-modbus/src/modbus-server.ts Line 94 in f348a56
The type overload needs to be investigated. I will do that and report back here |
It is used by the node-modbus/src/modbus-server-client.ts Lines 55 to 59 in f348a56
@stefanpoeter could maybe provide more insight. |
Well that makes no sense to me either.
The main Idea is that you can react to the request but cannot alter them. The ability to alter the response is probably a good addition. For example one should be able to throw an exception in the listener and therefor changing the response. The buffer in the callback and the callback itself makes no sense, don't know how this got there :-). I think that was an attempt to async the request but went totally wrong. This might be a possible extension for the listener
Should be fixed easily. |
I also experienced this bug (only pre and post events fired):
unfortunately it is not clear to me how to fix it, so i will move on an try another module.. |
I'm also experiencing this problem, any solution ? @alexbuczynsky @stefanpoeter |
If I try to run the simple-server example my IDE and node (when executed)
this error is thrown for
The text was updated successfully, but these errors were encountered: