-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathmodbus_tcp_test.go
95 lines (78 loc) · 1.68 KB
/
modbus_tcp_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
package main
import (
"fmt"
m2 "iotClient/protocol/modbus"
"log"
"testing"
"time"
)
func initModbusClient() m2.ModbusClient {
var tm m2.ModbusClient = &m2.TcpClient{
TimeOut: 5 * time.Second,
Address: "localhost:502",
}
//init
err := tm.InitModbus()
if err != nil {
panic(err)
}
return tm
}
// 读寄存器
func Test_ReadHoldingRegisters(t *testing.T) {
tm := initModbusClient()
defer tm.Close()
//读寄存器
values, _ := tm.ReadHoldingRegisters(uint16(99), uint16(3))
fmt.Println(values)
}
// 读线圈
func Test_ReadCoils(t *testing.T) {
tm := initModbusClient()
defer tm.Close()
//读线圈
values, _ := tm.ReadCoils(99, 4)
fmt.Println(values)
}
func Test_ReadInputStatus(t *testing.T) {
tm := initModbusClient()
defer tm.Close()
//读输入状态
values, _ := tm.ReadInputStatus(99, 4)
fmt.Println(values)
}
// 读输入寄存器
func Test_ReadInputRegister(t *testing.T) {
tm := initModbusClient()
defer tm.Close()
//读输入寄存器
values, _ := tm.ReadInputRegisters(uint16(99), uint16(3))
fmt.Println(values)
tm.Close()
}
// 写入寄存器
func Test_WriteSingleRegister(t *testing.T) {
tm := initModbusClient()
defer tm.Close()
if err := tm.WriteSingleRegister(99, 120); err != nil {
log.Fatal(err)
}
}
// 批量写入寄存器
func Test_WriteMultipleRegisters(t *testing.T) {
tm := initModbusClient()
tm.WriteMultipleRegisters(99, 4, []int{4, 3, 2, 1})
tm.Close()
}
// 写入线圈
func Test_WriteCoils(t *testing.T) {
tm := initModbusClient()
tm.WriteSingleCoil(99, 1)
tm.Close()
}
// 批量写线圈
func Test_WriteMultiCoils(t *testing.T) {
tm := initModbusClient()
tm.WriteMultipleCoils(99, 5, []int{1, 1, 1, 0, 0})
tm.Close()
}