nodbus-plus 0.8.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/.readthedocs.yaml +35 -0
  2. package/LICENSE.md +21 -21
  3. package/README.md +163 -48
  4. package/docs/Makefile +20 -0
  5. package/docs/client/channel.rst +209 -0
  6. package/docs/client/nodbus_master_serial.rst +559 -0
  7. package/docs/client/nodbus_master_tcp.rst +573 -0
  8. package/docs/conf.py +41 -0
  9. package/docs/images/01-readcoils.png +0 -0
  10. package/docs/images/02-readinputs.png +0 -0
  11. package/docs/images/03-readholding.png +0 -0
  12. package/docs/images/04-readinputsreg.png +0 -0
  13. package/docs/images/05-writecoil.png +0 -0
  14. package/docs/images/06-writeregister.png +0 -0
  15. package/docs/images/15-writecoil.png +0 -0
  16. package/docs/images/16.png +0 -0
  17. package/docs/images/22-mask.png +0 -0
  18. package/docs/images/23.png +0 -0
  19. package/docs/images/7.png +0 -0
  20. package/docs/images/modbus_pdu.png +0 -0
  21. package/docs/images/serial_adu.png +0 -0
  22. package/docs/images/tcp_adu.png +0 -0
  23. package/docs/index.rst +30 -0
  24. package/docs/make.bat +35 -0
  25. package/docs/protocol/modbus_master.rst +276 -0
  26. package/docs/protocol/modbus_master_serial.rst +290 -0
  27. package/docs/protocol/modbus_master_tcp.rst +296 -0
  28. package/docs/protocol/modbus_server.rst +469 -0
  29. package/docs/protocol/modbus_server_serial.rst +543 -0
  30. package/docs/protocol/modbus_server_tcp.rst +365 -0
  31. package/docs/requirements.txt +4 -0
  32. package/docs/server/net_server.rst +242 -0
  33. package/docs/server/nodbus_serial_server.rst +652 -0
  34. package/docs/server/nodbus_tcp_server.rst +505 -0
  35. package/docs/starting.rst +192 -0
  36. package/docs/static/simple logo.jpg +0 -0
  37. package/package.json +39 -30
  38. package/samples/mb_serial_server.js +77 -0
  39. package/samples/mb_tcp_client.js +114 -0
  40. package/samples/mb_tcp_server.js +58 -0
  41. package/src/client/net/serialchannel.js +195 -0
  42. package/src/client/net/tcpchannel.js +233 -0
  43. package/src/client/net/udpchannel.js +243 -0
  44. package/src/client/nodbus_serial_client.js +577 -0
  45. package/src/client/nodbus_tcp_client.js +542 -0
  46. package/src/nodbus-plus.js +157 -110
  47. package/src/protocol/modbus_master.js +298 -961
  48. package/src/protocol/modbus_master_serial.js +247 -0
  49. package/src/protocol/modbus_master_tcp.js +219 -0
  50. package/src/protocol/modbus_server.js +936 -0
  51. package/src/protocol/modbus_server_serial.js +368 -0
  52. package/src/protocol/modbus_server_tcp.js +129 -0
  53. package/src/protocol/utils.js +296 -0
  54. package/src/server/net/serialserver.js +184 -0
  55. package/src/server/net/tcpserver.js +290 -0
  56. package/src/server/net/udpserver.js +242 -0
  57. package/src/server/nodbus_serial_server.js +238 -0
  58. package/src/server/nodbus_tcp_server.js +249 -0
  59. package/test/modbus_master.test.js +279 -0
  60. package/test/modbus_master_serial.test.js +124 -0
  61. package/test/modbus_master_tcp.test.js +178 -0
  62. package/test/modbus_server.test.js +506 -0
  63. package/test/modbus_server_serial.test.js +328 -0
  64. package/test/modbus_server_tcp.test.js +91 -0
  65. package/test/nodbus_client_serial.test.js +307 -0
  66. package/test/nodbus_client_tcp.test.js +334 -0
  67. package/test/nodbus_server_serial.test.js +255 -0
  68. package/test/nodbus_server_tcp.test.js +216 -0
  69. package/CHANGELOG.md +0 -27
  70. package/src/client/m_stcp_client.js +0 -214
  71. package/src/client/m_tcp_client.js +0 -234
  72. package/src/net/tcpclient.js +0 -173
  73. package/src/net/tcpserver.js +0 -329
  74. package/src/protocol/adu.js +0 -40
  75. package/src/protocol/ascii_adu.js +0 -139
  76. package/src/protocol/boolean_register.js +0 -78
  77. package/src/protocol/functions/Force_Multiple_Coils.js +0 -76
  78. package/src/protocol/functions/Force_Single_Coil.js +0 -54
  79. package/src/protocol/functions/Mask_Holding_Register.js +0 -47
  80. package/src/protocol/functions/Preset_Multiple_Registers.js +0 -53
  81. package/src/protocol/functions/Preset_Single_Register.js +0 -39
  82. package/src/protocol/functions/Read_Coil_Status.js +0 -59
  83. package/src/protocol/functions/Read_Holding_Registers.js +0 -52
  84. package/src/protocol/functions/Read_Input_Registers.js +0 -52
  85. package/src/protocol/functions/Read_Input_Status.js +0 -58
  86. package/src/protocol/mbap.js +0 -60
  87. package/src/protocol/modbus_device.js +0 -35
  88. package/src/protocol/modbus_slave.js +0 -522
  89. package/src/protocol/pdu.js +0 -70
  90. package/src/protocol/rtu_adu.js +0 -122
  91. package/src/protocol/serial_adu.js +0 -29
  92. package/src/protocol/tcp_adu.js +0 -84
  93. package/src/protocol/word_register.js +0 -122
  94. package/src/server/m_stcp_server.js +0 -310
  95. package/src/server/m_tcp_server.js +0 -295
  96. package/test/modbus-stcp-server-test.js +0 -72
  97. package/test/modbus-stcp-server-test1.js +0 -72
  98. package/test/modbus-tcp-client-test.js +0 -159
  99. package/test/modbus-tcp-server-test.js +0 -75
  100. package/test/modbus-tcp-server-test2.js +0 -75
  101. package/test/modbus_stcp_client.js +0 -149
@@ -0,0 +1,328 @@
1
+ const ModbusSerialServer = require('../').ModbusSerialServer;
2
+
3
+ //creating config file for basic server 1
4
+ let server1Cfg = {
5
+ inputs : 524,
6
+ coils : 0,
7
+ holdingRegisters : 512,
8
+ inputRegisters : 256,
9
+ address : 10,
10
+ transmitionMode : 1,
11
+ }
12
+
13
+ //get address method
14
+ describe("getAddress", () => {
15
+ let adu1 = Buffer.from([0x3A, 0x30, 0x31, 0x30, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x41, 0x46, 0x32, 0x0D, 0x0A]); //01 03 00 00 00 0A C5 CD
16
+ let adu2 = Buffer.from([0x0A, 0x02, 0x00, 0x01, 0x00, 0x16, 0x7F, 0xA9]);
17
+
18
+ let server1 = new ModbusSerialServer(server1Cfg);
19
+ let server2 = new ModbusSerialServer();
20
+
21
+ it("address 1", () => {
22
+ let address1 = server1.getAddress(adu1)
23
+
24
+ expect(address1).toEqual(1);
25
+ } );
26
+ it("address 2", () => {
27
+ let address2 = server2.getAddress(adu2)
28
+
29
+ expect(address2).toEqual(10);
30
+
31
+ } );
32
+
33
+
34
+ });
35
+ /*
36
+ //get pdu method
37
+ describe("getPdu", () => {
38
+ let adu1 = Buffer.from([0x3A, 0x30, 0x31, 0x30, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x41, 0x46, 0x32, 0x0D, 0x0A]); //01 03 00 00 00 0A C5 CD
39
+ let adu2 = Buffer.from([0x0A, 0x02, 0x00, 0x01, 0x00, 0x16, 0x7F, 0xA9]);
40
+
41
+ let server1 = new ModbusSerialServer(server1Cfg);
42
+ let server2 = new ModbusSerialServer();
43
+
44
+ it("pdu 1", () => {
45
+ let pdu1 = server1.getPdu(adu1)
46
+
47
+ expect(pdu1[0]).toEqual(3);
48
+ expect(pdu1[3]).toEqual(0);
49
+ expect(pdu1[4]).toEqual(10);
50
+ expect(pdu1.length).toEqual(5);
51
+ } );
52
+ it("pdu 2", () => {
53
+ let pdu2 = server2.getPdu(adu2)
54
+
55
+ expect(pdu2[0]).toEqual(2);
56
+ expect(pdu2[2]).toEqual(1);
57
+ expect(pdu2[4]).toEqual(0x16);
58
+ expect(pdu2.length).toEqual(5);
59
+
60
+ } );
61
+
62
+
63
+ });
64
+
65
+ describe("get checksum", ()=>{
66
+
67
+ let adu1 = Buffer.from([0x3A, 0x30, 0x31, 0x30, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x41, 0x46, 0x32, 0x0D, 0x0A]); //01 03 00 00 00 0A C5 CD
68
+ let adu2 = Buffer.from([0x0A, 0x02, 0x00, 0x01, 0x00, 0x16, 0x7F, 0xA9]);
69
+
70
+ let server1 = new ModbusSerialServer(server1Cfg);
71
+ let server2 = new ModbusSerialServer();
72
+
73
+ it("cheksum1", () => {
74
+ let lrc = server1.getChecksum(adu1)
75
+
76
+ expect(lrc).toEqual(0xF2);
77
+ } );
78
+ it("pdu 2", () => {
79
+ let crc = server2.getChecksum(adu2)
80
+ expect(crc).toEqual(0xA97F);
81
+
82
+ } );
83
+ })
84
+
85
+ //calcLRC Test
86
+ describe("Testing calcLRC method", () => {
87
+ let adu1 = Buffer.from([0x3a, 0x30, 0x31, 0x30, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x36, 0x46, 0x36, 0x0d, 0x0a]);
88
+ let adu2 = Buffer.from([0x3a, 0x30, 0x41, 0x30, 0x32, 0x30, 0x30, 0x30, 0x31, 0x30, 0x30, 0x31, 0x36, 0x44, 0x44, 0x0d, 0x0a]);
89
+
90
+ let server1 = new ModbusSerialServer(server1Cfg);
91
+ let server2 = new ModbusSerialServer();
92
+
93
+ it("calculating LRC", () => {
94
+ let lrc = server1.calcLRC(adu1)
95
+
96
+ expect(lrc).toEqual(0xF6);
97
+ } );
98
+ it("calculating LRC", () => {
99
+ let lrc = server2.calcLRC(adu2)
100
+
101
+ expect(lrc).toEqual(0xDD);
102
+
103
+ } );
104
+
105
+
106
+ });
107
+
108
+ //calcCRC test
109
+ describe("Testing calcCRC method", () => {
110
+ let adu1 = Buffer.from([0x01, 0x03, 0x00, 0x00, 0x00, 0x06, 0xC5, 0xC8]);
111
+ let adu2 = Buffer.from([0x0A, 0x02, 0x00, 0x01, 0x00, 0x16, 0xA9, 0x7F]);
112
+
113
+ let server1 = new ModbusSerialServer(server1Cfg);
114
+ let server2 = new ModbusSerialServer();
115
+
116
+ it("calculating CRC", () => {
117
+ let crc = server1.calcCRC(adu1)
118
+
119
+ expect(crc).toEqual(0xC5C8);
120
+ } );
121
+ it("calculating CRC", () => {
122
+ let crc = server2.calcCRC(adu2)
123
+
124
+ expect(crc).toEqual(0xA97F);
125
+
126
+ } );
127
+
128
+
129
+ });
130
+
131
+ //rtu to ascii convertion.
132
+ describe("Convert rtu to ascii. Testing aduRtuToAscii method", () => {
133
+ let adu1 = Buffer.from([0x01, 0x03, 0x00, 0x00, 0x00, 0x06, 0xC8, 0xC5]);
134
+ let adu2 = Buffer.from([0x0A, 0x02, 0x00, 0x01, 0x00, 0x16, 0x7F, 0xA9]);
135
+
136
+ let server1 = new ModbusSerialServer(server1Cfg);
137
+ let server2 = new ModbusSerialServer();
138
+
139
+ it("convert rtu to ascii", () => {
140
+ let ascii = server1.aduRtuToAscii(adu1)
141
+
142
+ expect(ascii[0]).toEqual(0x3A);
143
+ expect(ascii[1]).toEqual(48);
144
+ expect(ascii[2]).toEqual(49);
145
+ expect(ascii[3]).toEqual(48);
146
+ expect(ascii[4]).toEqual(51);
147
+ expect(ascii[12]).toEqual(54);
148
+ expect(ascii[13]).toEqual(70);
149
+ expect(ascii[14]).toEqual(54);
150
+ expect(ascii[15]).toEqual(0x0D);
151
+ expect(ascii[16]).toEqual(0x0A);
152
+ expect(ascii.length).toEqual(2 * adu1.length + 1);
153
+ } );
154
+ it("convert rtu to ascii", () => {
155
+ let ascii = server2.aduRtuToAscii(adu2)
156
+
157
+ expect(ascii[0]).toEqual(0x3A);
158
+ expect(ascii[1]).toEqual(48);
159
+ expect(ascii[2]).toEqual(65);
160
+ expect(ascii[3]).toEqual(48);
161
+ expect(ascii[4]).toEqual(50);
162
+ expect(ascii[11]).toEqual(49);
163
+ expect(ascii[12]).toEqual(54);
164
+ expect(ascii[13]).toEqual(68);
165
+ expect(ascii[14]).toEqual(68);
166
+ expect(ascii[15]).toEqual(0x0D);
167
+ expect(ascii[16]).toEqual(0x0A);
168
+ expect(ascii.length).toEqual(2 * adu2.length + 1);
169
+ } );
170
+
171
+
172
+ });
173
+
174
+ //ascii to rtu convertion.
175
+ describe("Testing aduAsciiToRtu method", () => {
176
+ let adu1 = Buffer.from([0x3a, 0x30, 0x31, 0x30, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x36, 0x46, 0x36, 0x0d, 0x0a]);
177
+ let adu2 = Buffer.from([0x3a, 0x30, 0x41, 0x30, 0x32, 0x30, 0x30, 0x30, 0x31, 0x30, 0x30, 0x31, 0x36, 0x44, 0x44, 0x0d, 0x0a]);
178
+
179
+ let server1 = new ModbusSerialServer(server1Cfg);
180
+ let server2 = new ModbusSerialServer();
181
+
182
+ it("convert ascii to rtu", () => {
183
+ let rtu = server1.aduAsciiToRtu(adu1)
184
+
185
+ expect(rtu[0]).toEqual(0x01);
186
+ expect(rtu[1]).toEqual(0x03);
187
+ expect(rtu[2]).toEqual(0x00);
188
+ expect(rtu[3]).toEqual(0x00);
189
+ expect(rtu[5]).toEqual(0x06);
190
+ expect(rtu.length).toEqual((adu1.length - 1)/2);
191
+ } );
192
+ it("convert ascii to rtu", () => {
193
+ let rtu = server2.aduAsciiToRtu(adu2)
194
+
195
+ expect(rtu[0]).toEqual(0x0A);
196
+ expect(rtu[1]).toEqual(0x02);
197
+ expect(rtu[2]).toEqual(0x00);
198
+ expect(rtu[3]).toEqual(0x01);
199
+ expect(rtu[5]).toEqual(0x16);
200
+ expect(rtu.length).toEqual((adu2.length - 1)/2);
201
+ } );
202
+
203
+
204
+ });
205
+
206
+ //validate checksum Test
207
+ describe("validating checsum", () => {
208
+ let adu1 = Buffer.from([0x3A, 0x30, 0x31, 0x30, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x41, 0x46, 0x32, 0x0D, 0x0A]); //01 03 00 00 00 0A C5 CD
209
+ let adu2 = Buffer.from([0x3a, 0x30, 0x31, 0x30, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x36, 0x46, 0x35, 0x0d, 0x0a]);
210
+ let adu3 = Buffer.from([0x0A, 0x02, 0x00, 0x01, 0x00, 0x16, 0xA9, 0x7F]);
211
+ let adu4 = Buffer.from([0x0A, 0x02, 0x00, 0x01, 0x00, 0x16, 0xA9, 0x7D]);
212
+
213
+ let server1 = new ModbusSerialServer(server1Cfg);
214
+ let server2 = new ModbusSerialServer();
215
+
216
+ it("testing LRC", () => {
217
+
218
+ expect(server1.validateCheckSum(adu1)).toEqual(true);
219
+ expect(server1.validateCheckSum(adu2)).toEqual(false);
220
+ expect(server2.validateCheckSum(adu1)).toEqual(false);
221
+
222
+ } );
223
+ it("testing CRC", () => {
224
+ expect(server1.validateCheckSum(adu3)).toEqual(false);
225
+ expect(server2.validateCheckSum(adu3)).toEqual(true);
226
+ expect(server2.validateCheckSum(adu4)).toEqual(false);
227
+
228
+ } );
229
+
230
+
231
+ });
232
+
233
+ //Test readExceptionCoilsService function
234
+ describe("Read Exception Coils status", () => {
235
+ let pdu1 = Buffer.from([0x07]);
236
+ let server1 = new ModbusSerialServer();
237
+
238
+ it("correct response server 1 reading on exception coils", () => {
239
+
240
+ let res1 = server1.processReqPdu(pdu1)
241
+
242
+ expect(res1[0]).toEqual(7);
243
+ expect(res1[1]).toEqual(0);
244
+ expect(res1.length).toEqual(2);
245
+
246
+ });
247
+
248
+ });
249
+
250
+ //test broatcast logic
251
+ describe("Receiving a broadcast adu", () =>{
252
+ let adu1 = Buffer.from([0x0A, 0x02, 0x00, 0x01, 0x00, 0x16, 0xA9, 0x7F]);
253
+ let adu2 = Buffer.from([0x01, 0x03, 0x15, 0xB3, 0x00, 0x0A, 0x30, 0x26]);
254
+ let server1 = new ModbusSerialServer();
255
+
256
+ test("test1", () => {
257
+
258
+ let slaveMessageCount = server1.slaveMessageCount;
259
+ let slaveNoResponseCount = server1.slaveNoResponseCount;
260
+
261
+ let res1 = server1.executeBroadcastReq(adu1)
262
+
263
+ expect(slaveMessageCount + 1).toEqual(server1.slaveMessageCount);
264
+ expect(slaveNoResponseCount + 1).toEqual(server1.slaveNoResponseCount);
265
+
266
+
267
+ });
268
+
269
+ test("test2", () => {
270
+
271
+ let slaveMessageCount = server1.slaveMessageCount;
272
+ let slaveNoResponseCount = server1.slaveNoResponseCount;
273
+ let slaveExceptionErrorCount = server1.slaveExceptionErrorCount
274
+
275
+ let res1 = server1.executeBroadcastReq(adu2)
276
+
277
+ expect(slaveMessageCount + 1).toEqual(server1.slaveMessageCount);
278
+ expect(slaveNoResponseCount + 1).toEqual(server1.slaveNoResponseCount);
279
+ expect(slaveExceptionErrorCount + 1).toEqual(server1.slaveExceptionErrorCount);
280
+
281
+ });
282
+
283
+ });
284
+
285
+ //test main function
286
+ describe("Receiving adu", () =>{
287
+ let adu1 = Buffer.from([0x01, 0x07, 0x05]);
288
+ let adu2 = Buffer.from([0x01, 0x03, 0x00, 0x00, 0x00, 0x06, 0xC5, 0xC7]);
289
+ let adu3 = Buffer.from([0x03, 0x03, 0x00, 0x00, 0x00, 0x06, 0xC5, 0xC8]);
290
+ let adu4 = Buffer.from([0x00, 0x03, 0x00, 0x02, 0x00, 0x0A, 0x65, 0xDC]);
291
+ let adu5 = Buffer.from([0x01, 0x03, 0x00, 0x00, 0x00, 0x06, 0xC5, 0xC8]);
292
+ let adu6 = Buffer.from([0x3A, 0x30, 0x41, 0x30, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x41, 0x45, 0x39, 0x0D, 0x0A]); //0A 03 00 00 00 0A C4 B6
293
+
294
+ let server1 = new ModbusSerialServer();
295
+ let server2 = new ModbusSerialServer(server1Cfg);
296
+
297
+
298
+ it("wrong address", () => {
299
+ let resp = server1.validateAddress(adu3);
300
+ expect(resp).toEqual(false);
301
+ });
302
+
303
+ it("valid adu", () => {
304
+
305
+ resp = server1.getResponseAdu(adu5);
306
+
307
+ expect(resp[0]).toEqual(0x01);
308
+ expect(resp[1]).toEqual(0x03);
309
+ expect(resp[2]).toEqual(12);
310
+ expect(resp.length).toEqual(17);
311
+ });
312
+
313
+ test('ascii', ()=>{
314
+ let resp = server2.getResponseAdu(adu6);
315
+
316
+ expect(server2.address).toEqual(10)
317
+
318
+ expect(resp[0]).toEqual(0x3A);
319
+ expect(resp[1]).toEqual(0x30);
320
+ expect(resp[2]).toEqual(0x41);
321
+ expect(resp[3]).toEqual(0x30);
322
+ expect(resp[4]).toEqual(0x33);
323
+ expect(resp[5]).toEqual(0x31);
324
+ expect(resp[6]).toEqual(0x34);
325
+
326
+ })
327
+
328
+ });*/
@@ -0,0 +1,91 @@
1
+ const ModbusTcpServer = require('../').ModbusTcpServer;
2
+
3
+ //creating config file for basic server 1
4
+ let server1Cfg = {
5
+ inputs : 524,
6
+ coils : 0,
7
+ holdingRegisters : 512,
8
+ inputRegisters : 256
9
+ }
10
+
11
+ describe("Get header from adu", () => {
12
+ let adu1 = Buffer.from([0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x03]);
13
+
14
+
15
+ let server2 = new ModbusTcpServer();
16
+
17
+ it("instanciate transaction", () => {
18
+ let header = server2.getMbapHeader(adu1)
19
+
20
+ expect(header[1]).toEqual(2);
21
+ expect(header[5]).toEqual(0x06);
22
+ expect(header[6]).toEqual(0xFF);
23
+ expect(header.length).toEqual(7);
24
+
25
+ } );
26
+
27
+ });
28
+
29
+ describe("Get pdu from adu", () => {
30
+ let adu1 = Buffer.from([0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x03]);
31
+
32
+
33
+ let server2 = new ModbusTcpServer();
34
+
35
+ it("instanciate transaction", () => {
36
+ let pdu = server2.getPdu(adu1)
37
+
38
+ expect(pdu[0]).toEqual(1);
39
+ expect(pdu[4]).toEqual(0x03);
40
+ expect(pdu.length).toEqual(5);
41
+
42
+ } );
43
+
44
+ });
45
+
46
+ describe("validate mbap header", () => {
47
+ let adu1 = Buffer.from([0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x03]);
48
+ let adu2 = Buffer.from([0x00, 0x02, 0x00, 0x01, 0x00, 0x06, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x03]);
49
+ let adu3 = Buffer.from([0x00, 0x02, 0x00, 0x00, 0x00, 0x06]);
50
+
51
+ let server2 = new ModbusTcpServer();
52
+
53
+ it("right header", () => {
54
+ let isValid = server2.validateMbapHeader(adu1.subarray(0, 7))
55
+
56
+ expect(isValid).toEqual(true);
57
+
58
+ } );
59
+ it("invalid header's protocol field", () => {
60
+ let isValid = server2.validateMbapHeader(adu2.subarray(0, 7))
61
+ expect(isValid).toEqual(false);
62
+
63
+ });
64
+ it("invalid header's length", () => {
65
+ let isValid = server2.validateMbapHeader(adu3)
66
+ expect(isValid).toEqual(false);
67
+
68
+ });
69
+
70
+ });
71
+
72
+ describe("build response from adu", () => {
73
+ let adu1 = Buffer.from([0x00, 0x02, 0x00, 0x00, 0x00, 0x06, 0xFF, 0x03, 0x00, 0x00, 0x00, 0x03]);
74
+
75
+
76
+ let server2 = new ModbusTcpServer();
77
+
78
+ it("instanciate transaction", () => {
79
+
80
+ let res = server2.getResponseAdu(adu1);
81
+
82
+ expect(res[1]).toEqual(2);
83
+ expect(res[5]).toEqual(9);
84
+ expect(res[6]).toEqual(0xFF);
85
+ expect(res[7]).toEqual(3);
86
+ expect(res[8]).toEqual(6);
87
+ expect(res.length).toEqual(15);
88
+ } );
89
+
90
+
91
+ });