github.com/stampzilla/stampzilla-go@v2.0.0-rc9+incompatible/nodes/stampzilla-modbus/modbus.go (about)

     1  package main
     2  
     3  import (
     4  	"time"
     5  
     6  	"github.com/goburrow/modbus"
     7  )
     8  
     9  type Modbus struct {
    10  	client  modbus.Client
    11  	handler *modbus.RTUClientHandler
    12  }
    13  
    14  func (m *Modbus) Connect() error {
    15  	// Modbus RTU/ASCII
    16  	handler := modbus.NewRTUClientHandler("/dev/ttyUSB0")
    17  	handler.BaudRate = 9600
    18  	handler.DataBits = 8
    19  	handler.Parity = "N"
    20  	handler.StopBits = 2
    21  	handler.SlaveId = 1
    22  	handler.Timeout = 5 * time.Second
    23  	//handler.Logger = log.New(os.Stdout, "test: ", log.LstdFlags)
    24  	m.handler = handler
    25  	if err := handler.Connect(); err != nil {
    26  		return err
    27  	}
    28  
    29  	m.client = modbus.NewClient(handler)
    30  	return nil
    31  }
    32  func (m *Modbus) Close() error {
    33  	return m.handler.Close()
    34  }
    35  func (m *Modbus) ReadInputRegister(address uint16) ([]byte, error) {
    36  	return m.client.ReadInputRegisters(address-1, 1)
    37  }