Coder Social home page Coder Social logo

Comments (6)

nqv avatar nqv commented on July 21, 2024

wrt concurrent access, I'm in the process of adding mutex in the client transporter and fix #16 (expected to be done this week :) )
The client api doesn't have SlaveId in the parameter as using slaveId for TPC is rare. My idea originally is the ability to share the transporter layer among clients, which is like:

h := NewRTUClientHandler()
// Default client
c := NewClient(h)
// Create new Client for different SlaveId
h2 := NewRTUClientHandler()
h2.SlaveId = 2
c2 := NewClient2(h2, h)

May be I can add a helper

func NewClientWithSlaveId(c Client, slaveId int) Client {
   // Clone internal packager, set new slaveId and return a new Client with that packager
}

Please let me know if that will resolve your case. (Again, that requires #16 to be fixed)

from modbus.

jonseymour avatar jonseymour commented on July 21, 2024

I think from my point of view, NewClientWithSlaveId(c Client, slaveId int) does what I need and has the advantage that if I need to defer the creation of clients for other slaves, that I can do so without carrying the handler around.

from modbus.

jonseymour avatar jonseymour commented on July 21, 2024

Prototyping this, I realised that there may be a need to add a Close() method to the Client interface and also a reference counter in the implementation to allow a Close() on the underlying handler to be deferred until there are no more references (otherwise this will have to be tracked separately).

update: actually whether there is a need or not, I guess is to some degree a matter of preference. I guess my preference would for applications not having to worry about the lifecycle of handlers, but I can see the alternative argument that if applications have to allocate handlers they should have to deallocate them too.

from modbus.

nqv avatar nqv commented on July 21, 2024

I don't think Close is needed (like http client). Will send a PR for #16 this weekend so you can see what I mean.

Cheers

from modbus.

gonium avatar gonium commented on July 21, 2024

I had the same issue - which I solved by setting the Slave of the RTUClient before sending anything:

https://github.com/gonium/gosdm630/blob/master/src/github.com/gonium/gosdm630/modbus.go#L114

There is no need to Close() anything. I understand (and appreciate!) @nqv's view to provide a unified API independent of the transport, but for practical applications of the RTU transport, one needs to have a way to set the slave id.

HTH,
-Mathias

from modbus.

Aditya23456 avatar Aditya23456 commented on July 21, 2024

Hi,

Thanks for the great library. I don't see any development branch and was wondering if there's any support for concurrent Modbus client or any work done for supporting it ?

Thanks once again,
Aditya

from modbus.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.