diff --git a/client.go b/client.go index 72895a3..1f2dd8a 100644 --- a/client.go +++ b/client.go @@ -41,6 +41,7 @@ func (m *Mbclient) ReadRegisters(first uint16, numRegs uint16) ([]uint16, error) req[7] = 3 //FunctionCode binary.BigEndian.PutUint16(req[8:10], first-1) binary.BigEndian.PutUint16(req[10:12], numRegs) + m.conn.SetDeadline(time.Now().Add(10 * time.Second)) byteswritten, err := m.conn.Write(req) if err != nil { return nil, err diff --git a/client_test.go b/client_test.go index defd37c..b9abbf7 100644 --- a/client_test.go +++ b/client_test.go @@ -9,24 +9,26 @@ import ( func TestReadOneRegister(t *testing.T) { c, err := New("192.168.0.154:502", 1) assert.NoError(t, err) - res, err := c.ReadRegisters(12401, 2) - assert.NoError(t, err) - assert.Len(t, res, 2) - t.Log(res) + for n := 0; n < 5; n++ { + res, err := c.ReadRegisters(12401, 2) + assert.NoError(t, err) + assert.Len(t, res, 2) + t.Log(res) - res, err = c.ReadRegisters(12102, 2) - assert.NoError(t, err) - assert.Len(t, res, 2) - t.Log(res) + res, err = c.ReadRegisters(12102, 2) + assert.NoError(t, err) + assert.Len(t, res, 2) + t.Log(res) - res, err = c.ReadRegisters(12544, 1) - assert.NoError(t, err) - assert.Len(t, res, 1) - t.Log(float32(res[0]) / 10) + res, err = c.ReadRegisters(12544, 1) + assert.NoError(t, err) + assert.Len(t, res, 1) + t.Log(float32(res[0]) / 10) - res, err = c.ReadRegisters(12136, 1) - assert.NoError(t, err) - assert.Len(t, res, 1) - t.Log(res) + res, err = c.ReadRegisters(12136, 1) + assert.NoError(t, err) + assert.Len(t, res, 1) + t.Log(res) + } }