14
14
use ModbusTcpClient \Exception \InvalidArgumentException ;
15
15
use ModbusTcpClient \Packet \ModbusFunction \ReadHoldingRegistersRequest ;
16
16
use ModbusTcpClient \Packet \ModbusFunction \ReadInputRegistersRequest ;
17
+ use ModbusTcpClient \Utils \Endian ;
17
18
18
19
class ReadRegistersBuilder
19
20
{
@@ -109,6 +110,11 @@ public function fromArray(array $register): ReadRegistersBuilder
109
110
throw new InvalidArgumentException ('empty or unknown type for address given ' );
110
111
}
111
112
113
+ $ endian = $ register ['endian ' ] ?? null ;
114
+ if ($ endian === null ) {
115
+ $ endian = Endian::$ defaultEndian ;
116
+ }
117
+
112
118
switch ($ addressType ) {
113
119
case Address::TYPE_BIT :
114
120
$ this ->bit ($ address , $ register ['bit ' ] ?? 0 , $ register ['name ' ] ?? null , $ callback , $ errorCallback );
@@ -117,25 +123,25 @@ public function fromArray(array $register): ReadRegistersBuilder
117
123
$ this ->byte ($ address , (bool )($ register ['firstByte ' ] ?? true ), $ register ['name ' ] ?? null , $ callback , $ errorCallback );
118
124
break ;
119
125
case Address::TYPE_INT16 :
120
- $ this ->int16 ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback );
126
+ $ this ->int16 ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback, $ endian );
121
127
break ;
122
128
case Address::TYPE_UINT16 :
123
- $ this ->uint16 ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback );
129
+ $ this ->uint16 ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback, $ endian );
124
130
break ;
125
131
case Address::TYPE_INT32 :
126
- $ this ->int32 ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback );
132
+ $ this ->int32 ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback, $ endian );
127
133
break ;
128
134
case Address::TYPE_UINT32 :
129
- $ this ->uint32 ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback );
135
+ $ this ->uint32 ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback, $ endian );
130
136
break ;
131
137
case Address::TYPE_INT64 :
132
- $ this ->int64 ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback );
138
+ $ this ->int64 ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback, $ endian );
133
139
break ;
134
140
case Address::TYPE_UINT64 :
135
- $ this ->uint64 ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback );
141
+ $ this ->uint64 ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback, $ endian );
136
142
break ;
137
143
case Address::TYPE_FLOAT :
138
- $ this ->float ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback );
144
+ $ this ->float ($ address , $ register ['name ' ] ?? null , $ callback , $ errorCallback, $ endian );
139
145
break ;
140
146
case Address::TYPE_STRING :
141
147
$ byteLength = $ register ['length ' ] ?? null ;
@@ -161,39 +167,137 @@ public function byte(int $address, bool $firstByte = true, string $name = null,
161
167
return $ this ->addAddress (new ByteReadRegisterAddress ($ address , $ firstByte , $ name , $ callback , $ errorCallback ));
162
168
}
163
169
164
- public function int16 (int $ address , string $ name = null , callable $ callback = null , callable $ errorCallback = null ): ReadRegistersBuilder
170
+ public function int16 (
171
+ int $ address ,
172
+ string $ name = null ,
173
+ callable $ callback = null ,
174
+ callable $ errorCallback = null ,
175
+ int $ endian = null
176
+ ): ReadRegistersBuilder
165
177
{
166
- return $ this ->addAddress (new ReadRegisterAddress ($ address , ReadRegisterAddress::TYPE_INT16 , $ name , $ callback , $ errorCallback ));
178
+ $ r = new ReadRegisterAddress (
179
+ $ address ,
180
+ ReadRegisterAddress::TYPE_INT16 ,
181
+ $ name ,
182
+ $ callback ,
183
+ $ errorCallback ,
184
+ $ endian
185
+ );
186
+ return $ this ->addAddress ($ r );
167
187
}
168
188
169
- public function uint16 (int $ address , string $ name = null , callable $ callback = null , callable $ errorCallback = null ): ReadRegistersBuilder
189
+ public function uint16 (
190
+ int $ address ,
191
+ string $ name = null ,
192
+ callable $ callback = null ,
193
+ callable $ errorCallback = null ,
194
+ int $ endian = null
195
+ ): ReadRegistersBuilder
170
196
{
171
- return $ this ->addAddress (new ReadRegisterAddress ($ address , ReadRegisterAddress::TYPE_UINT16 , $ name , $ callback , $ errorCallback ));
197
+ $ r = new ReadRegisterAddress (
198
+ $ address ,
199
+ ReadRegisterAddress::TYPE_UINT16 ,
200
+ $ name ,
201
+ $ callback ,
202
+ $ errorCallback ,
203
+ $ endian
204
+ );
205
+ return $ this ->addAddress ($ r );
172
206
}
173
207
174
- public function int32 (int $ address , string $ name = null , callable $ callback = null , callable $ errorCallback = null ): ReadRegistersBuilder
208
+ public function int32 (
209
+ int $ address ,
210
+ string $ name = null ,
211
+ callable $ callback = null ,
212
+ callable $ errorCallback = null ,
213
+ int $ endian = null
214
+ ): ReadRegistersBuilder
175
215
{
176
- return $ this ->addAddress (new ReadRegisterAddress ($ address , ReadRegisterAddress::TYPE_INT32 , $ name , $ callback , $ errorCallback ));
216
+ $ r = new ReadRegisterAddress (
217
+ $ address ,
218
+ ReadRegisterAddress::TYPE_INT32 ,
219
+ $ name ,
220
+ $ callback ,
221
+ $ errorCallback ,
222
+ $ endian
223
+ );
224
+ return $ this ->addAddress ($ r );
177
225
}
178
226
179
- public function uint32 (int $ address , string $ name = null , callable $ callback = null , callable $ errorCallback = null ): ReadRegistersBuilder
227
+ public function uint32 (
228
+ int $ address ,
229
+ string $ name = null ,
230
+ callable $ callback = null ,
231
+ callable $ errorCallback = null ,
232
+ int $ endian = null
233
+ ): ReadRegistersBuilder
180
234
{
181
- return $ this ->addAddress (new ReadRegisterAddress ($ address , ReadRegisterAddress::TYPE_UINT32 , $ name , $ callback , $ errorCallback ));
235
+ $ r = new ReadRegisterAddress (
236
+ $ address ,
237
+ ReadRegisterAddress::TYPE_UINT32 ,
238
+ $ name ,
239
+ $ callback ,
240
+ $ errorCallback ,
241
+ $ endian
242
+ );
243
+ return $ this ->addAddress ($ r );
182
244
}
183
245
184
- public function uint64 (int $ address , string $ name = null , callable $ callback = null , callable $ errorCallback = null ): ReadRegistersBuilder
246
+ public function uint64 (
247
+ int $ address ,
248
+ string $ name = null ,
249
+ callable $ callback = null ,
250
+ callable $ errorCallback = null ,
251
+ int $ endian = null
252
+ ): ReadRegistersBuilder
185
253
{
186
- return $ this ->addAddress (new ReadRegisterAddress ($ address , ReadRegisterAddress::TYPE_UINT64 , $ name , $ callback , $ errorCallback ));
254
+ $ r = new ReadRegisterAddress (
255
+ $ address ,
256
+ ReadRegisterAddress::TYPE_UINT64 ,
257
+ $ name ,
258
+ $ callback ,
259
+ $ errorCallback ,
260
+ $ endian
261
+ );
262
+ return $ this ->addAddress ($ r );
187
263
}
188
264
189
- public function int64 (int $ address , string $ name = null , callable $ callback = null , callable $ errorCallback = null ): ReadRegistersBuilder
265
+ public function int64 (
266
+ int $ address ,
267
+ string $ name = null ,
268
+ callable $ callback = null ,
269
+ callable $ errorCallback = null ,
270
+ int $ endian = null
271
+ ): ReadRegistersBuilder
190
272
{
191
- return $ this ->addAddress (new ReadRegisterAddress ($ address , ReadRegisterAddress::TYPE_INT64 , $ name , $ callback , $ errorCallback ));
273
+ $ r = new ReadRegisterAddress (
274
+ $ address ,
275
+ ReadRegisterAddress::TYPE_INT64 ,
276
+ $ name ,
277
+ $ callback ,
278
+ $ errorCallback ,
279
+ $ endian
280
+ );
281
+ return $ this ->addAddress ($ r );
192
282
}
193
283
194
- public function float (int $ address , string $ name = null , callable $ callback = null , callable $ errorCallback = null ): ReadRegistersBuilder
284
+ public function float (
285
+ int $ address ,
286
+ string $ name = null ,
287
+ callable $ callback = null ,
288
+ callable $ errorCallback = null ,
289
+ int $ endian = null
290
+ ): ReadRegistersBuilder
195
291
{
196
- return $ this ->addAddress (new ReadRegisterAddress ($ address , ReadRegisterAddress::TYPE_FLOAT , $ name , $ callback , $ errorCallback ));
292
+ $ r = new ReadRegisterAddress (
293
+ $ address ,
294
+ ReadRegisterAddress::TYPE_FLOAT ,
295
+ $ name ,
296
+ $ callback ,
297
+ $ errorCallback ,
298
+ $ endian
299
+ );
300
+ return $ this ->addAddress ($ r );
197
301
}
198
302
199
303
public function string (int $ address , int $ byteLength , string $ name = null , callable $ callback = null , callable $ errorCallback = null ): ReadRegistersBuilder
0 commit comments