Wiki source code of 01 Lua script function

Version 2.3 by Leo on 2022/06/16 16:09

Show last authors
1 = **1 Interface Description** =
2
3 == **1.1 Data type definition** ==
4
5
6 |=**Type**|=**Description**
7 |=nil|Null
8 |=boolean|Boolean, the value is true or false
9 |=number|Integer or floating point, signed or unsigned
10 |=string|String
11 |=table|Table
12 |=function|Functions
13
14 == **1.2 Built-in function library clipping** ==
15
16 Full features supported: coroutine/debug/ math/ package/ string/ table/ utf8
17
18 //,,Some features supported (available in []):** **os[clock/ date/ difftime/ time],,//
19
20 //,,Not supported: io/ file,,//
21
22 == **1.3 Return value description** ==
23
24 The function return type multi means multiple return values (at least 2), usually:
25
26 //,,1st: nil;,,//
27
28 //,,2nd: the error message;,,//
29
30 (((
31 == **1.4 Function parameter description** ==
32 )))
33
34 **Assume the function prototype:**
35
36 |(((
37 //student(string name, number age[, number class])//
38
39 **Function:**
40
41 Register a student
42
43 **Parameters:**
44
45 //name//: student name
46
47 //age//: student age
48
49 //[class=1]//: Student class
50
51 **Return:**
52
53 Succeed: true
54
55 Failed: multi
56 )))
57
58 **Comment**
59
60 1.string name indicates that the first parameter name is a string
61
62 2.number age indicates that the second parameter age is numeric
63
64 3. [, number class] indicates that the third parameter class is a numeric value, and it is optional. Specify the default class in class 1 in the parameter description.
65
66 {{id name="OLE_LINK4"/}}{{id name="OLE_LINK5"/}}4. Any parameter in the brackets of [] is considered to be an optional parameter, and may not be transmitted when called. The default value will be given in the parameter description.
67
68 **Call example**
69
70 |(((
71 //print(student("foo", 18)) //~-~- foo, 18 years old, assigned to class 1 by default
72
73 //print(student("bar", 19, 2))// ~-~-bar, 19 years old, assigned to class 2
74
75 //print(student("bar", 18)) //~-~-bar, 18 years old, assigned to class 1 by default
76
77 //local stat, err = student("bar", 18)// ~-~- Call again, use //err// to capture error messages
78
79 //print(stat, err)//
80 )))
81
82 **Output results**
83
84 |(((
85 //true//
86
87 //true//
88
89 //nil student bar registered//
90
91 //nil student bar registered//
92 )))
93
94 **Comment**
95
96 1.From the print result, the second line of the first line is successfully called and returns true; the third line fails the call, the error message is translated as: the bar student has been registered, and there is indeed an error in the code.
97
98 2.The fourth line of code uses two variables to receive the return value. The call failed, the first variable stat is nil, and the second variable err stores the error message. Then print it out using print, which is the output of the third line. This example shows how to capture and view the error message.
99
100 == **1.5 Modification of the Print Function** ==
101
102 For the convenience of remote development, the print data is sent to the front end (web page) by means of network transmission, and the user can see the result of the debug output, because it consumes certain data and occupies the bandwidth of the server (or occupies server resources). So make the following restrictions:
103
104 **1.Interval limit: **When debugging, transfer once every 2~~3 seconds;
105
106 **2.Data limit: **The transfer data cannot be larger than 1.5KB, and the extra part will be ignored;
107
108 **3.Transmission limit: **The data transmission will be stopped automatically after the debugging windows is not closed normally. Only when it is in the debugging window and the switch is on, there is data transmission;
109
110 Users should pay attention to avoid printing a lot of useless information, should minimize the debug output
111
112 In addition, please refer to the front-end documentation for how to use view debugging.
113
114 (((
115 = **2 Address Operation** =
116
117 **~ Form 2.1**
118 )))
119
120 (% class="table-bordered" style="width:982px" %)
121 |(% style="width:167px" %) 16-bit data formal|(% style="width:142px" %) HLword|(% style="width:194px" %) 32-bit data formal|(% style="width:177px" %) HLword|(% style="width:147px" %) 64-bit data formal|(% style="width:152px" %) HLword
122 |(% style="width:167px" %) 12(Default)|(% style="width:142px" %) 0|(% style="width:194px" %) 1234(Default)|(% style="width:177px" %) 0|(% style="width:147px" %)(((
123 12345678(Default)
124 )))|(% style="width:152px" %)(((
125 0
126 )))
127 |(% style="width:167px" %) 21|(% style="width:142px" %) 6|(% style="width:194px" %)(((
128 3412(High and low word conversion)
129 )))|(% style="width:177px" %) 2|(% style="width:147px" %)(((
130 34127856  (High and low word conversion)
131 )))|(% style="width:152px" %) 2
132 |(% style="width:167px" %) |(% style="width:142px" %) |(% style="width:194px" %) 2143|(% style="width:177px" %) 3|(% style="width:147px" %)(((
133 21436587
134 )))|(% style="width:152px" %) 3
135 |(% style="width:167px" %) |(% style="width:142px" %) |(% style="width:194px" %) 4321|(% style="width:177px" %) 6|(% style="width:147px" %)(((
136 87654321
137 )))|(% style="width:152px" %) 6
138 |(% style="width:167px" %) |(% style="width:142px" %) |(% style="width:194px" %) |(% style="width:177px" %) |(% style="width:147px" %)(((
139 78563412
140 )))|(% style="width:152px" %) 7
141 |(% style="width:167px" %) |(% style="width:142px" %) |(% style="width:194px" %) |(% style="width:177px" %) |(% style="width:147px" %)(((
142 56781234
143 )))|(% style="width:152px" %) 8
144 |(% style="width:167px" %) |(% style="width:142px" %) |(% style="width:194px" %) |(% style="width:177px" %) |(% style="width:147px" %)(((
145 65872143
146 )))|(% style="width:152px" %) 9
147 |(% style="width:167px" %) |(% style="width:142px" %) |(% style="width:194px" %) |(% style="width:177px" %) |(% style="width:147px" %)(((
148 43218765
149 )))|(% style="width:152px" %) 10
150
151 * If HLword enters any other value, it will be treated as invalid.
152
153 Demo:  Reads a 32-bit floating-point number at position D0 of PLC
154
155
156 (% style="text-align:center" %)
157 [[image:企业微信截图_20210506180640.png||class="img-thumbnail" height="301" width="600"]]
158
159 == **2.1 addr_getshort(string addr[, number type, number hlword])** ==
160
161 **Function:**
162
163 Read 16-bit signed decimal address
164
165 **Parameters:**
166
167 //addr//: address
168
169 //num//: value
170
171 [type = 0] not read through  1: read through
172
173 [hlword = 0]  Don't convert,See Form 2.1
174
175 **Return:**
176
177 Succeed: Single word signed decimal value
178
179 Failed: multi
180
181 (((
182 == **2.2 addr_setshort(string addr, number num[, number type, number hlword])** ==
183 )))
184
185 **Function:**
186
187 Write 16-bit signed decimal address
188
189 **Parameters:**
190
191 //addr//: address
192
193 //num//: value
194
195 [type = 0]not read through  1: read through
196
197 [hlword = 0]  Don't convert,See Form 2.1
198
199 **Return:**
200
201 Succeed: true
202
203 Failed: multi
204
205 (((
206 == **2.3 addr_getword(string addr[, number type, number hlword])** ==
207 )))
208
209 **Function:**
210
211 {{id name="OLE_LINK6"/}}Read 16-bit unsigned decimal address
212
213 **Parameters:**
214
215 //addr//: address
216
217 [type = 0]not read through 1: read through
218
219 [hlword = 0]  Don't convert,See Form 2.1
220
221 **Return:**
222
223 Succeed: Single word unsigned decimal value
224
225 Failed: multi
226
227 (((
228 == **2.4 addr_setword(string addr, number num[, number type, number hlword])** ==
229 )))
230
231 **Function:**
232
233 Write 16-bit unsigned decimal address
234
235 **Parameters:**
236
237 //addr//: address
238
239 //num//: value
240
241 [type = 0]not read through 1: read through
242
243 [hlword = 0]  Don't convert,See Form 2.1
244
245 **Return:**
246
247 Succeed: true
248
249 Failed: multi
250
251 (((
252 == **2.5 addr_getint(string addr[, number type, number hlword])** ==
253 )))
254
255 **Function:**
256
257 Read 32-bit signed decimal address
258
259 **Parameters:**
260
261 //addr//: address
262
263 [type = 0]not read through 1: read through
264
265 [hlword = 0]  Don't convert,See Form 2.1
266
267 **Return:**
268
269 Succeed: Double word signed decimal value
270
271 Failed: multi
272
273 (((
274 == **2.6 addr_setint(string addr, number num[, number type, number hlword])** ==
275 )))
276
277 **Function:**
278
279 Write 32-bit signed decimal address
280
281 **Parameters:**
282
283 //addr//: address
284
285 //num//: value
286
287 [type = 0]not read through 1: read through
288
289 [hlword = 0]  Don't convert,See Form 2.1
290
291 **Return:**
292
293 Succeed: true
294
295 Failed: multi
296
297 (((
298 == **2.7 addr_getdword(string addr[, number type, number hlword])** ==
299 )))
300
301 **Function:**
302
303 {{id name="OLE_LINK7"/}}Read 32-bit unsigned decimal address
304
305 **Parameters:**
306
307 //addr//: address
308
309 [type = 0]not read through 1: read through
310
311 [hlword = 0]  Don't convert,See Form 2.1
312
313 **Return:**
314
315 Succeed: Double word unsigned decimal value
316
317 Failed: multi
318
319 (((
320 == **2.8 addr_setdword(string addr, number num[, number type, number hlword])** ==
321 )))
322
323 **Function:**
324
325 Write 32-bit unsigned decimal address
326
327 **Parameters:**
328
329 //addr//: address
330
331 //num//: value
332
333 [type = 0]not read through 1: read through
334
335 [hlword = 0]  Don't convert,See Form 2.1
336
337 **Return:**
338
339 Succeed: true
340
341 Failed: multi
342
343 (((
344 == **2.9 addr_getbit(string addr[, number type])** ==
345 )))
346
347 **Function:**
348
349 Read a bit of the register address
350
351 **Parameters:**
352
353 //addr//: address
354
355 [type = 0]not read through 1: read through
356
357 [hlword = 0]  Don't convert,See Form 2.1
358
359 **Return:**
360
361 Succeed: Bit address value
362
363 Failed: multi
364
365 (((
366 == **2.10 addr_setbit(string addr, number num[, number type])** ==
367 )))
368
369 **Function:**
370
371 Write a bit of the register address
372
373 **Parameters:**
374
375 //addr//: address
376
377 //num//: value
378
379 {{id name="OLE_LINK8"/}}[type = 0]not read through 1: read through
380
381 [hlword = 0]  Don't convert,See Form 2.1
382
383 **Return:**
384
385 Succeed: true
386
387 Failed: multi
388
389 (((
390 == **2.11 addr_getfloat(string addr[, number type, number hlword])** ==
391 )))
392
393 **Function:**
394
395 Read 32-bit floating address
396
397 **Parameters:**
398
399 //addr//: address
400
401 [type = 0]not read through 1: read through
402
403 [hlword = 0]  Don't convert,See Form 2.1
404
405 **Return:**
406
407 Succeed: 32-bit floating point value
408
409 Failed: multi
410
411 (((
412 == **2.12 addr_setfloat(string addr, number num[, number type, number hlword])** ==
413 )))
414
415 **Function:**
416
417 Write 32-bit floating address
418
419 **Parameters:**
420
421 //addr//: address
422
423 //num//: value
424
425 [type = 0]not read through 1: read through
426
427 [hlword = 0]  Don't convert,See Form 2.1
428
429 **Return:**
430
431 Succeed: true
432
433 Failed: multi
434
435 (((
436 == **2.13 addr_getdouble(string addr[, number type, number hlword])** ==
437 )))
438
439 **Function:**
440
441 Read 64-bit floating address
442
443 **Parameters:**
444
445 //addr//: address
446
447 [type = 0]not read through 1: read through
448
449 [hlword = 0]  Don't convert,See Form 2.1
450
451 **Return:**
452
453 Succeed: 64-bit floating point value
454
455 Failed: multi
456
457 (((
458 == **2.14 addr_setdouble(string addr, number num[, number type, number hlword])** ==
459 )))
460
461 **Function:**
462
463 Write 64-bit floating address
464
465 **Parameters:**
466
467 addr: address
468
469 num: value
470
471 [type = 0]not read through //1//: read through
472
473 [hlword = 0]  Don't convert,See Form 2.1
474
475 **Return:**
476
477 Succeed: true
478
479 Failed: multi
480
481 (((
482 == **2.15 addr_getstring(string addr, number length[, number type, number hlbyte])** ==
483 )))
484
485 **Function:**
486
487 Read the specified length string from address
488
489 **Parameters:**
490
491 //addr//: address
492
493 //length//: length
494
495 [type = 0]not read through 1: read through
496
497 [hlbyte = 0] Don't convert,3:High and low byte conversion, 4:GBK, 5:GBK And the first byte is the length
498
499 **Return:**
500
501 Succeed: specified length string
502
503 Failed: multi
504
505 (((
506 == **2.16 addr_setstring(string addr, string str[, number type, number hlbyte])** ==
507 )))
508
509 **Function:**
510
511 Write the specified length string to address
512
513 **Parameters:**
514
515 //addr//: address
516
517 //str//: string
518
519 [type = 0]not read through 1: read through
520
521 [hlbyte = 0] Don't convert,3:High and low byte conversion, 4:GBK, 5:GBK And the first byte is the length
522
523 **Return:**
524
525 Succeed: true
526
527 Failed: multi
528
529 (((
530 == **2.17 addr_bmov(string dst, string src, number length)** ==
531 )))
532
533 **Function:**
534
535 Copy data from source address to destination address
536
537 **Parameters:**
538
539 //dst//: destination address
540
541 //src//: source address
542
543 //length//: length
544
545 **Return:**
546
547 Succeed: true
548
549 **Failed: multi**
550
551 (((
552 == **2.18 addr_fill(string addr, number num, number length)** ==
553 )))
554
555 **Function:**
556
557 Write the same value to consecutive addresses
558
559 **Parameters:**
560
561 //addr//: address
562
563 //num//: value
564
565 //length//:continuous length
566
567 **Return:**
568
569 Succeed: true
570
571 Failed: multi
572
573 (((
574 == **2.19 addr_newnoaddr(string addr, number offset)** ==
575 )))
576
577 **Function:**
578
579 Offset address value relative to //addr//
580
581 **Parameters:**
582
583 //addr//: address
584
585 //offset//: offset value
586
587 **Return:**
588
589 Succeed: New address after offset
590
591 Failed: multi
592
593 (((
594 == **2.20 addr_newstataddr(string addr, number offset)** ==
595 )))
596
597 **Function:**
598
599 Offset station number relative to //addr //station number
600
601 **Parameters:**
602
603 //addr//: address
604
605 //offset//: offset value
606
607 **Return:**
608
609 Succeed: New station number after offset
610
611 Failed: multi
612
613 == **2.21 addr_gethex64(string addr[, number type, number hlword])** ==
614
615 **Function:**
616
617 Read 64-bit hexadecimal numbers
618
619 **Parameters:**
620
621 //addr//: address
622
623 [type = 0]not read through 1: read through
624
625 [hlword = 0]  Don't convert,See Form 2.1
626
627 **Return:**
628
629 Succeed: 64-bit floating-point values
630
631 Failed: multi
632
633 == **2.22 addr_sethex64(string addr, number num[, number type, number hlword])** ==
634
635 **Function:**
636
637 Write 64-bit hexadecimal addresses
638
639 **Parameters:**
640
641 //addr//: address
642
643 [type = 0]not write through 1: write through
644
645 [hlword = 0]  Don't convert,See Form 2.1
646
647 **Return:**
648
649 Succeed: true
650
651 Failed: multi
652
653 (((
654 = **3 Serial port operation** =
655 )))
656
657 Operations on the serial port such as read, write, etc. must use ':' for full mode calls, ie operations on an open serial object.
658
659 **Serial port name and mode:**
660
661 The serial port configured in the communication configuration window cannot be configured again using the script. RS232 and RS458 (or RS422) can be used simultaneously, but RS422 and RS485 are mutually exclusive.For example, when the communication port is configured with COM1-485, the script can only open COM1-232, but not COM1-485/422. Similarly, when the communication port is configured with COM2-485, the script can only open COM2-232, but not COM2-485.
662
663 Attempting to use a script to open a serial port in an unsupported mode will result in an error directly, as below
664
665 |(((
666 local setup = {
667
668 name = "COM2",
669
670 mode = 422, ~-~- COM2 does not support RS422
671
672 ...
673
674 }
675
676 serial.open(setup)
677 )))
678
679 **Data bit:**
680
681 1. When the data bit is 7, the maximum value of data transmission is 127 (0x7F), and non-ASCII characters will be truncated, resulting in data errors and garbled characters.
682 1. When the data bit is 8, the maximum value of data transmission is 255 (0xFF), which supports the transmission of any character.
683
684 (((
685 == **3.1 serial.open(table setup)** ==
686 )))
687
688 **Function:**
689
690 Enable one serial port
691
692 **Parameters:**
693
694 //Setup// is a Lua table; it needs to contain the following fields
695
696 //String setup.name//,// //serial port name, such as: COM1/COM2 (requires uppercase)
697
698 //number setup.mode//, mode: RS232/RS485/RS422
699
700 //number setup.baud_rate//, such as 115200
701
702 //number setup.stop_bit//, stop bit: 1 or 2
703
704 //number setup.data_len//, data bit: 7 or 8
705
706 //string setup.check_bit//, check bit: NONE/ODD/EVEN/SPACE
707
708 //number [setup.wait_timeout=300]//, waiting timeout
709
710 //number [setup.recv_timeout=50]//, receive wait timeout
711
712 //number [setup.flow_control=0]//, Flow control method, 0:XON/XOFF, 2:DSR/ER
713
714 Supported baud rate
715
716 1200/2400/4800/9600/14400/19200/38400/43000/57600/76800/115200/128000/230400/256000/460800/961000
717
718 **Return:**
719
720 Succeed: serial object
721
722 Failed: multi
723
724 (((
725 == **3.2 serial.close(serial obj)** ==
726 )))
727
728 **Function:**
729
730 Disable the serial port
731
732 **Parameters:**
733
734 //Obj //is the object returned by serial.open
735
736 **Return:**
737
738 Succeed: true
739
740 Failed: multi
741
742 (((
743 == **3.3 serial:read(number bytes[, number timeout])** ==
744 )))
745
746 **Function:**
747
748 Read the specified byte length serial port data
749
750 **Parameters:**
751
752 //bytes//: number of bytes
753
754 //[timeout=50]//: timeout for reading, in milliseconds
755
756 **Return:**
757
758 Succeed: true
759
760 Failed: multi
761
762 (((
763 == **3.4 serial:write(string data)** ==
764 )))
765
766 **Function:**
767
768 Write the specified byte length to serial port data
769
770 **Parameters:**
771
772 //data//: serial port data
773
774 **Return:**
775
776 Succeed: true
777
778 Failed: multi
779
780 (((
781 == **3.5 serial:flush([number flag])** ==
782 )))
783
784 **Function:**
785
786 Clear the serial port buffer
787
788 **Parameters:**
789
790 //[flag=2]// clear option: 0: read, 1: write, 2: read-write
791
792 **Return:**
793
794 Succeed: true
795
796 Failed: multi
797
798 (((
799 == **3.6 serial:close()** ==
800 )))
801
802 **Function:**
803
804 Close the serial port object
805
806 **Parameters:**
807
808 None
809
810 **Return:**
811
812 Succeed: true
813
814 Failed: multi
815
816 (((
817 = **4 MQTT operation** =
818 )))
819
820 Operations on MQTT such as connect, subscribe, etc. must use ':' for full mode calls, that is, operate on a created MQTT object.
821
822 Both MQTT subscriptions and publications are asynchronous implementations that require the user to implement a callback function.
823
824 **QoS value:**
825
826 0: Only push messages once, messages may be lost or duplicated. It can be used for environmental sensor data, it doesn't matter if lose a record, because there will be a second push message soon. This method is mainly used for normal APP push, but if the user smart device is not connected when the message is pushed, the message will be discarded, and the smart device will not be received when it is networked again.
827
828 1: The message is delivered at least once, but the message may be delivered repeatedly.
829
830 2: The message was delivered exactly once. This level can be used in a billing system. In a billing system, repeated or missing messages can lead to incorrect results. This highest quality message push service can also be used for instant messaging APP pushes, ensuring that users only receive messages once.
831
832 **Retain flag:**
833
834 0: not reserved;
835
836 1: reserved
837
838 (((
839 == **4.1 mqtt.create(string serverurl, string clientid)** ==
840 )))
841
842 **Function:**
843
844 Create an MQTT object
845
846 **Parameters:**
847
848 //serverurl //Server url
849
850 Format: "//protocol:~/~/host:port//"
851
852 //protocol//: tcp/ssl
853
854 //host//: Host name/IP
855
856 //port//: such as 1883
857
858 //clientid//: Client ID
859
860 **Return:**
861
862 Succeed: MQTT object
863
864 Failed: multi
865
866 (((
867 == **4.2 mqtt.close(mqtt obj)** ==
868 )))
869
870 **Function:**
871
872 Close the specified MQTT object (if the connected server will be disconnected automatically)
873
874 **Parameters:**
875
876 //Obj //is the objeced returned by mqtt.create
877
878 **Return:**
879
880 Succeed: true
881
882 Failed: multi
883
884 (((
885 == **4.3 mqtt:connect(table conn[, table lwt, table cart])** ==
886 )))
887
888 **Function:**
889
890 Establish a connection to the server
891
892 **Parameters:**
893
894 //conn //is a Lua table and needs to contain the following fields
895
896 //string conn.username//, user name
897
898 //string conn.password//, password
899
900 //number [conn.netway=0]//, networking method, if set error number will use Ethernet method
901
902 * 0: Ethernet
903 * 1: WIFI
904 * 2: 4G
905 * 3: 2G
906
907 //number [conn.keepalive=60]//, keep connected heartbeat interval, in seconds
908
909 //number [conn.cleansession=1]//, empty the session as described below:
910
911 This function is used to control the behavior when connecting and disconnecting, and the client and server will retain the session information. This information is used to guarantee "at least once" and "accurately once" delivery, as well as the subject of the client subscription, the user can choose to keep or ignore the session message, set as follows:
912
913 * 1 (Empty): If a session exists and is 1, the previous session messages on the client and server are emptied.
914 * 0 (reserved): Conversely, both the client and the server use the previous session. If the previous session does not exist, start a new session.
915
916 //lwt// (Last Will and Testament) is a Lua table and needs to contain the following fields
917
918 //string lwt.topic//, topic
919
920 //string lwt.message//, message
921
922 //number [lwt.qos=0]//, qos value
923
924 //number [lwt.retain=0]//, retain flag
925
926 **Return:**
927
928 Succeed: true
929
930 Failed: multi
931
932 (((
933 == **4.4 mqtt:disconnect([number timeout])** ==
934 )))
935
936 **Function:**
937
938 Disconnect from the MQTT server
939
940 **Parameters:**
941
942 //[timeout=10000] //Disconnect waiting timeout, in milliseconds
943
944 **Return:**
945
946 Succeed: true
947
948 Failed: multi
949
950 (((
951 == **4.5 mqtt:isconnected()** ==
952 )))
953
954 **Function:**
955
956 Test whether or not a client is currently connected to the MQTT server
957
958 **Parameters:**
959
960 None
961
962 **Return:**
963
964 Succeed: true ~-~-Connected
965
966 Failed: false ~-~- Unconnected and other unknowns
967
968 (((
969 == **4.6 mqtt:subscribe(string topic, number qos)** ==
970 )))
971
972 **Function:**
973
974 Subscribe to the topic (before the subscription, the user must first call the connect method to connect to the server)
975
976 **Parameters:**
977
978 //topic//, topic name
979
980 //qos//, quality of service
981
982 **Return:**
983
984 Succeed: true
985
986 Failed: multi
987
988 (((
989 == **4.7 mqtt:unsubscribe(string topic)** ==
990 )))
991
992 **Function:**
993
994 Unsubscribe topic
995
996 **Parameters:**
997
998 //topic//, topic name
999
1000 **Return:**
1001
1002 Succeed: true
1003
1004 Failed: multi
1005
1006 (((
1007 == **4.8 mqtt:publish(string topic, string message, number qos, number retain[, number timeout])** ==
1008 )))
1009
1010 **Function:**
1011
1012 Publish message
1013
1014 **Parameters:**
1015
1016 //topic//, topic name
1017
1018 //message//, message
1019
1020 //qos//, quality of service
1021
1022 //retain//, retain flag
1023
1024 //[timeout=1000]//, waiting for response timeout, in milliseconds (only valid when qos is greater than 0)
1025
1026 **Return:**
1027
1028 Succeed: true
1029
1030 Failed: multi
1031
1032 (((
1033 == **4.9 mqtt:close()** ==
1034 )))
1035
1036 **Function:**
1037
1038 Close the mqtt object (the connection to the server will be automatically disconnected)
1039
1040 **Parameters:**
1041
1042 None
1043
1044 **Return:**
1045
1046 Succeed: true
1047
1048 Failed: multi
1049
1050 (((
1051 == **4.10 mqtt:on(string method, function callback)** ==
1052 )))
1053
1054 **Function:**
1055
1056 Register event callback function
1057
1058 **Parameters:**
1059
1060 //method//, It can be message/arrived/offline, these 3 types of events
1061
1062 //callback//, It is a callback function that needs to pass in a function
1063
1064 **1.**"message" will call this function after receiving the message
1065
1066 //Callback// prototype~:// function (string topic, string message)//
1067
1068 Parameter:
1069
1070 //Topic//, topic name
1071
1072 //Message//, content
1073
1074 **2.**"arrived" is published by publish, this function will be called after the publication arrives
1075
1076 //Callback// prototype~:// function ()//
1077
1078 Parameter:
1079
1080 None
1081
1082 **3.**This function will be called after the "offline" connection is lost
1083
1084 //Callback// prototype~:// function (string cause)//
1085
1086 Parameter:
1087
1088 //cause//, reason for loss of connection
1089
1090 **Return:**
1091
1092 Succeed: true
1093
1094 Failed: multi
1095
1096 (((
1097 == **4.11 mqtt:setup_cfg()** ==
1098 )))
1099
1100 **Function:**
1101
1102 Cloud mode interface, to obtain MQTT information configured by the cloud platform
1103
1104 **Parameters:**
1105
1106 None
1107
1108 **Return:**
1109
1110 //serverurl, clientid, conn, lwt, cart //(5 returns, respectively, server address, client ID, connection table, last word table, certificate table)
1111
1112 //conn// is the first parameter of the mqtt:connect method, which is fixed to table. If not configured, the information in the table is an empty string
1113
1114 //LWT// Last Words configuration is not yet open for setting, //lw//t is fixed to nil
1115
1116 If ssl is not enabled, //cart// is nil, otherwise //cart// is table
1117
1118 (((
1119 = **5 JSON operation** =
1120 )))
1121
1122 Lua only has a table data structure, so all arrays and key-value objects of json will be returned as a table.
1123
1124 (((
1125 == **5.1 json.encode( lua_object )** ==
1126 )))
1127
1128 **Function:**
1129
1130 Convert lua data type to json string
1131
1132 **Parameters:**
1133
1134 Lua data type (including boolean, number, string, table)
1135
1136 **Return:**
1137
1138 Json format string
1139
1140 (((
1141 == **5.2 json.decode(string json_string)** ==
1142 )))
1143
1144 **Function:**
1145
1146 Convert json string to lua data type
1147
1148 **Parameters:**
1149
1150 //json_string//, string of json data structure
1151
1152 **Return:**
1153
1154 Lua data type
1155
1156 (((
1157 == **5.3 json.null** ==
1158 )))
1159
1160 **Function:**
1161
1162 This method is used when assembling json data, which is equivalent to null in json. If the user directly uses json.null() to return the address of the function, it must be valid with the use of encode.
1163
1164 **Parameters:**
1165
1166 None
1167
1168 **Return:**
1169
1170 None
1171
1172 = **6 Cloud mode** =
1173
1174 The cloud interface is only used in cloud mode, and V-NET mode is not available.
1175
1176 (((
1177 == **6.1 bns_get_alldata()** ==
1178 )))
1179
1180 **Function:**
1181
1182 Obtain all monitoring points (point table) data configured by the end user
1183
1184 Note: Assuming there are timing scripts A and B with a period of 1 second, if this function is called in script A, the data will not be obtained if called in script B
1185
1186 **Parameters:**
1187
1188 None
1189
1190 **Return:**
1191
1192 Succeed: table two-dimensional array, the structure is as follows
1193
1194 Each item is a monitoring point, which contains 5 attributes:
1195
1196 (1 ID, 2 status, 3 tag name, 4 value, 5 custom)
1197
1198 The status contains 3 enumerated values (0: offline, 1: online, 2: timeout)
1199
1200 If there is no custom configuration, return an empty table, otherwise, return with "field name/field content"
1201
1202 E.g:
1203
1204 {
1205
1206 [1]= {[1]=1234, [2]=1, [3]='temp', [4]='23.5', [5]={"fruit"="apple"}},
1207
1208 [2]= {[1]=1235, [2]=1, [3]='humi', [4]='67', [5]={"fruit"="pear"}},
1209
1210 ...
1211
1212 [n]= {[1]=xxxx, [2]=x, [3]='xxxx', [4]='xx.x', [5]={}},
1213
1214 }
1215
1216 Failed: //table// empty table
1217
1218 (((
1219 == **6.2 bns_get_config(string from)** ==
1220 )))
1221
1222 **Function:**
1223
1224 Obtain custom configuration parameters with the specified from type
1225
1226 **parameter:**
1227
1228 from type, there are the following two categories, the string must be all lowercase
1229
1230 'user': terminal parameters, that is, custom parameters configured by the user
1231
1232 'bind': binding parameters, which are custom parameters that need to be input
1233
1234 when the user binds V-BOX
1235
1236 **Return:**
1237
1238 Succeed: table field name/field content table in organization form
1239
1240 Failed~:// table// empty table
1241
1242 (((
1243 == **6.3 bns_get_data(string name, string data)** ==
1244 )))
1245
1246 **Function:**
1247
1248 write data to the name of the monitoring point
1249
1250 **parameter:**
1251
1252 //name //The name of the monitoring point
1253
1254 //data// the data to be written
1255
1256 **Return:**
1257
1258 Succede: //string  // value before the monitoring point is written
1259
1260 Failed: nil
1261
1262 (((
1263 == **6.4 bns_get_data(string name)** ==
1264 )))
1265
1266 **Function:**
1267
1268 Read the data of the monitoring point name
1269
1270 **parameter:**
1271
1272 //name  // The name of the monitoring point
1273
1274 **Return:**
1275
1276 Succeed: string, table 2 results: the value of the monitoring point, custom content
1277
1278 Failed: nil
1279
1280 (((
1281 == **6.5 bns_get_datadesc()** ==
1282 )))
1283
1284 **Function:**
1285
1286 Obtain all configured communication ports and monitoring point information
1287
1288 **Parameters:**
1289
1290 None
1291
1292 **Return:**
1293
1294 Succeed: table three-dimensional array, the structure is as follows
1295
1296 Each item is a communication port, which contains 3 attributes (1 monitoring point array, 2 ID, 3 name)
1297
1298 The monitoring point array contains 4 attributes (1 ID, 2 name, 3 read and write attributes, 4 types)
1299
1300 Read and write attributes (1: read only, 2: write only, 3: read and write)
1301
1302 Type (1: switch, 2: number, 3: string)
1303
1304 E.g:
1305 {
1306
1307 [1]={~-~-The first communication port
1308
1309 [1]={~-~-monitoring point array of the first communication port
1310
1311 [1]={[1]=11,[2]='data1',[3]=3,[4]=2},
1312
1313 [2]={[1]=12,[2]='data2',[3]=3,[4]=2},
1314
1315 ...
1316
1317 [n]={[1]=xx,[2]='datan',[3]=x,[4]=x},~-~-n monitoring points
1318
1319 },
1320
1321 [2]=14, ~-~-ID
1322
1323 [3]='Modbus TCP' ~-~-n monitoring points
1324
1325 },
1326
1327 [2]={~-~-The second communication port
1328
1329 [1]={},~-~-The monitoring point of the second communication port is not configured and is empty
1330
1331 [2]=15, ~-~-ID
1332
1333 [3]='WECON' ~-~-communication protocol name
1334
1335 },
1336
1337 ...n communication ports and so on
1338
1339 }
1340
1341 Failed~:// table// empty table
1342
1343 (((
1344 == **6.6 bns_get_machineinfo()** ==
1345 )))
1346
1347 **Function:**
1348
1349 get machine information
1350
1351 **Parameters:**
1352
1353 None
1354
1355 **Return:**
1356
1357 Succeed: 3 string type results (model, machine code, software version)
1358
1359 Failed: nil
1360
1361 (((
1362 == **6.7 bns_get_groupdata(string name)** ==
1363 )))
1364
1365 **Function:**
1366
1367 Get all monitoring point data under the specified group name
1368
1369 **parameter:**
1370
1371 //Name  // group name
1372
1373 **Return:**
1374
1375 Succeed: //table// two-dimensional array, the structure is consistent with section 6.1
1376
1377 Failed: //table// empty table
1378
1379 (((
1380 == **6.8 bns_get_groupdesc()** ==
1381 )))
1382
1383 **Function:**
1384
1385 Get all group information
1386
1387 **Parameters:**
1388
1389 None
1390
1391 **Return:**
1392
1393 Succeed: //table// two-dimensional array, the structure is as follows
1394
1395 Each item represents a group, which contains 3 attributes (1 collection type, 2 name, 3 cycles)
1396
1397 Acquisition type (0: change acquisition, 1: word trigger, 2: no trigger, 3: trigger by time and conditions, 4: reset after trigger, 5: not reset after trigger)
1398
1399 Some collection types do not have a period, the period is -1
1400
1401 Failed: //table  // empty table
1402
1403 (((
1404 == **6.9 bns_get_onecache(string msg)** ==
1405 )))
1406
1407 **Function:**
1408
1409 Save a message to the cache file, which can be stored after power failure. Store up to 2000 items, delete the old and save the new in a rolling manner when it is full.
1410
1411 **Parameters:**
1412
1413 //msg// String
1414
1415 **Return:**
1416
1417 Succeed: true
1418
1419 Failed: nil
1420
1421 (((
1422 == **6.10 bns_get_allcache()** ==
1423 )))
1424
1425 **Function:**
1426
1427 Get all the cached content (once the internal cache file will be emptied)
1428
1429 **Parameters:**
1430
1431 None
1432
1433 **Return:**
1434
1435 Succeed: //table// one-dimensional array
1436
1437 E.g:
1438
1439 {
1440
1441 [1]="This is the oldest message", - the first is the oldest message
1442
1443 [2]="This is a test",
1444
1445 ...
1446
1447 [n]="This is the latest message", - the last is the latest message
1448
1449 }
1450
1451 Failede: nil
1452
1453 (((
1454 = **7 HTTP operation** =
1455 )))
1456
1457 Network communication includes Http request interface, this document does not provide interface description, please refer to the online document for how to use it.
1458
1459 (((
1460 == **7.1 http request** ==
1461 )))
1462
1463 [[http:~~/~~/w3.impa.br/~~~~diego/software/luasocket/http.html#request>>url:http://w3.impa.br/~~diego/software/luasocket/http.html#request]]
1464
1465 (((
1466 = **8 Internal register** =
1467 )))
1468
1469 The internal registers of the box are divided into bit addresses and word addresses, which can be accessed in two ways (taking HDW as an example):
1470
1471 **~1. **Access by word, prefix @W_HDW,
1472
1473 For example: @W_HDW0 represents the first word of the system data area, @W_HDW1 represents the second word of the system data area.
1474
1475 **2. **Access in bit mode, the prefix is @B_HDX, the number in front of "." indicates the number of the word, and the number behind is the bit number of the word.
1476
1477 For example: @B_HDX1020.12, its meaning is to access the system data area in bit mode, the specific location is the 13th bit of the 1020th word.
1478
1479 **✎Note: **
1480
1481 **~1. **The address in @B_HDX is taken from the word in @W_HDW, so pay special attention when using the address.
1482
1483 For example, @B_HDX1020.12 is to access the 13th bit of the 1020th word. The value of this bit is the same as the word obtained by @W_HDW001020. The 13th bit of this word is actually the same bit as @B_HDX1020.12.
1484
1485 **2.**The address of the bit address @B_HDX has a decimal point, while the word address is an integer.
1486
1487 (((
1488 == **8.1 Data storage area(HDW/HDX)** ==
1489 )))
1490
1491 The system storage area (HDW) of the V-BOX is used to store temporary data:
1492
1493 ~1. Access by word, the number range is: "@W_HDW0"-"@W_HDW299999".
1494
1495 2. Access in bit mode, the number range is: "@B_HDX0.0"-"@B_HDX299999.15".
1496
1497 (((
1498 == **8.2 Special data area (HSW/HSX)** ==
1499 )))
1500
1501 **✎Note: **
1502
1503 //{{id name="OLE_LINK1"/}}HSW// is a system special register, so please refer to the system special register table during use. Do not use addresses that are not mentioned in the table, and use the addresses stated in the table with caution (example: restart ("@W_HSW0") Writing a value of 1 will cause V-BOX to restart).
1504
1505 //Without any conditions. Direct use ("@W_HSW0") will cause the V-BOX to restart continuously.// When using ("@W_HSW0") address, please add judgment conditions, such as: connection to MQTT fails, there is no network, the value of a PLC address meets the condition or counts to a certain value.
1506
1507 1.The system data area (HSW) of the box is used for system special registers (system reserved). Use //addr_getword// to obtain the following register information:
1508
1509 (% class="table-bordered" %)
1510 |address|function|Read and write status: read only, write only, read and write
1511 |@W_HSW0|restart|read and write
1512 |@W_HSW1|Box time: year|read and write
1513 |@W_HSW2|Box time: month|read and write
1514 |@W_HSW3|Box time: day|read and write
1515 |@W_HSW4|Box time: hour|read and write
1516 |@W_HSW5|Box time: minute|read and write
1517 |@W_HSW6|Box time: second|read and write
1518 |@W_HSW7|Box time: week|read and write
1519 |@W_HSW8|Ethernet IP1|read only
1520 |@W_HSW9|Ethernet IP2|read only
1521 |@W_HSW10|Ethernet IP3|read only
1522 |@W_HSW11|Ethernet IP4|read only
1523 |@W_HSW12|Ethernet Mask 1|read only
1524 |@W_HSW13|Ethernet Mask 2|read only
1525 |@W_HSW14|Ethernet Mask 3|read only
1526 |@W_HSW15|Ethernet Mask 4|read only
1527 |@W_HSW16|Ethernet Gateway 1|read only
1528 |@W_HSW17|Ethernet Gateway 2|read only
1529 |@W_HSW18|Ethernet Gateway 3|read only
1530 |@W_HSW19|Ethernet Gateway 4|read only
1531 |@W_HSW21|Ethernet MAC1|read only
1532 |@W_HSW22|Ethernet MAC2|read only
1533 |@W_HSW23|Ethernet MAC3|read only
1534 |@W_HSW24|Ethernet MAC4|read only
1535 |@W_HSW25|Ethernet MAC3|read only
1536 |@W_HSW26|Ethernet MAC4|read only
1537 |@W_HSW128|WIFI IP1|read only
1538 |@W_HSW129|WIFI IP2|read only
1539 |@W_HSW130|WIFI IP3|read only
1540 |@W_HSW131|WIFI IP4|read only
1541 |@W_HSW132|WIFI Mask 1|read only
1542 |@W_HSW133|WIFI Mask 2|read only
1543 |@W_HSW134|WIFI Mask 3|read only
1544 |@W_HSW135|WIFI Mask 4|read only
1545 |@W_HSW136|WIFI Gateway 1|read only
1546 |@W_HSW137|WIFI Gateway 2|read only
1547 |@W_HSW138|WIFI Gateway 3|read only
1548 |@W_HSW139|WIFI Gateway 4|read only
1549 |@W_HSW140|WIFI MAC1|read only
1550 |@W_HSW141|WIFI MAC2|read only
1551 |@W_HSW142|WIFI MAC3|read only
1552 |@W_HSW143|WIFI MAC4|read only
1553 |@W_HSW144|WIFI MAC5|read only
1554 |@W_HSW145|WIFI MAC6|read only
1555 |@W_HSW146|WIFI Signal value|read only
1556 |@W_HSW148|4G IP1|read only
1557 |@W_HSW149|4G IP2|read only
1558 |@W_HSW150|4G IP3|read only
1559 |@W_HSW151|4G IP4|read only
1560 |@W_HSW152|4G Mask 1|read only
1561 |@W_HSW153|4G Mask 2|read only
1562 |@W_HSW154|4G Mask 3|read only
1563 |@W_HSW155|4G Mask 4|read only
1564 |@W_HSW156|4G Gateway 1|read only
1565 |@W_HSW157|4G Gateway 2|read only
1566 |@W_HSW158|4G Gateway 3|read only
1567 |@W_HSW159|4G Gateway 4|read only
1568 |@W_HSW160|4G MAC1|read only
1569 |@W_HSW161|4G MAC2|read only
1570 |@W_HSW162|4G MAC3|read only
1571 |@W_HSW163|4G MAC4|read only
1572 |@W_HSW164|4G MAC5|read only
1573 |@W_HSW165|4G MAC6|read only
1574 |@W_HSW166|4G Signal value|read only
1575
1576 2. Other
1577
1578 2.1 Access password: addr_getstring("@W_HSW27", 16)
1579
1580 2.2 Machine code: addr_getstring("@W_HSW60", 64)
1581
1582 2.3 Positioning method (@W_HSW167): (read only)
1583
1584 ~1. Latitude and longitude
1585
1586 Longitude: addr_getdouble("@W_HSW168") (read only)
1587
1588 Latitude: addr_getdouble("@W_HSW172") (read only)
1589
1590 2. Base station positioning
1591
1592 LAC: addr_getdword("@W_HSW168") (read only)
1593
1594 CI: addr_getdword("@W_HSW172") (read only)
1595
1596 2.4 Convert base station to latitude and longitude via API
1597
1598 Longitude: addr_getdouble("@W_HSW187") (read only)
1599
1600 Latitude: addr_getdouble("@W_HSW183") (read only)
1601
1602 2.5 Operator information: addr_getdword("@W_HSW181") (read only)
1603
1604 2.6 Networking mode: addr_getword("@W_HSW177") (read only)
1605
1606 0: Ethernet, 1: WIFI, 2: 4G, 3: 2G
1607
1608 2.7 Map fence flag: addr_getword("@W_HSW178") (read only)
1609
1610 0: No map fence is drawn
1611
1612 1: Draw a map fence and the box is in the fence
1613
1614 2: Draw a map fence and the box is not in the fence
1615
1616 2.8 SIM card status addr_getword("@W_HSW179") (read only)
1617
1618 1: No card detected
1619
1620 2: Card insertion detected
1621
1622 3: The card status is abnormal
1623
1624 2.9 MQTT status addr_getword("@W_HSW180") (read only)
1625
1626 1: online, 2: offline
1627
1628 2.10 IO interface, X is read only, Y is read and write (H series)
1629
1630 addr_getbit(addr1), addr_setbit(addr2)
1631
1632 addr1:"@B_Y0" "@B_Y1" "@B_X0" "@B_X1"
1633
1634 addr2:"@B_Y0" "@B_Y1"
1635
1636 (((
1637 = **9 General Functions** =
1638 )))
1639
1640 (((
1641 == **9.1 send_sms_ira(string number, string message)** ==
1642 )))
1643
1644 **Function:**
1645
1646 Use IRA character set to send English text messages
1647
1648 **Parameters:**
1649
1650 //number: //number (up to 32 characters, the excess will be discarded)
1651
1652 //message~:// SMS content (up to 160 English characters, including special symbols, the part exceeding 160 characters will be discarded, and no characters in other languages should appear in the content)
1653
1654 **Return:**
1655
1656 Succeed: SMS corresponding id, used to get whether the SMS was sent successfully
1657
1658 Failed: multi
1659
1660 (((
1661 == **9.2 send_sms_ucs2(string number, string message)** ==
1662 )))
1663
1664 **Function:**
1665
1666 Use UCS2 character set to send SMS in Chinese and other languages, such as Korean, Japanese, etc.
1667
1668 **Parameters:**
1669
1670 //number: //number (up to 32 characters, the excess will be discarded)
1671
1672 //message~:// SMS content (Only 70 Chinese characters at most, the part exceeding the length will be discarded)
1673
1674 **Return:**
1675
1676 Succeed: SMS corresponding id, used to get whether the SMS was sent successfully
1677
1678 Failed: multi
1679
1680 (((
1681 == **9.3 sms_get_state(number id)** ==
1682 )))
1683
1684 **Function:**
1685
1686 Get the status of the SMS
1687
1688 **parameter:**
1689
1690 //id~:// SMS corresponding id
1691
1692 **Return:**
1693
1694 Succeed: SMS status (1: not sent, 2: sent successfully, 3: failed to send)
1695
1696 Failed: multi
1697
1698 (((
1699 == **9.4 jwt_encode(table head, table payload, string aud, number iat, number exp, string key, int jwttype)** ==
1700 )))
1701
1702 **Function:**
1703
1704 Convert data to JWT format
1705
1706 **parameter:**
1707
1708 //aud: //project name
1709
1710 //iat: //The valid period start timestamp of the JWT data format
1711
1712 //exp~:// the expiration time stamp of the JWT data format
1713
1714 //head~:// head information table
1715
1716 key: key in JSON format
1717
1718 value: value in JSON format
1719
1720 type:value type, 0:string,1:integer,2:number,3:boolean
1721
1722 {
1723
1724 {key="test1",value="test1",type="0"}
1725
1726 }
1727
1728 payload: payload information table
1729
1730 The format is consistent with the header information table
1731
1732 {
1733
1734 {key="test",value="test",type="0"}
1735
1736 }
1737
1738 //jwttype: //encryption type
1739
1740 0:RS256 1:RS384 2:RS512
1741
1742 3: PS256 4: PS384 5: PS512
1743
1744 6:HS256 7:HS384 8:HS512
1745
1746 9:ES256 10:ES384 11:ES512
1747
1748 //key~:// the private key required for encryption
1749
1750 For example:
1751
1752 function jwt.main()
1753
1754 local PRIVATE_KEY = ~[~[~-~- Please enter the secret key~-~-]]
1755
1756 local JWTType=0
1757
1758 local payload = ~{~{key="test1",value="test1",type="0"},
1759
1760 {key="test",value="123122131",type="1"}}
1761
1762 local head = ~{~{ key="name",value="data",type="0"},
1763
1764 {key="test2",value="test2",type="0"}}
1765
1766 local aud = "project"
1767
1768 local iat = 123122131
1769
1770 local exp1 = 123122331
1771
1772 local en = jwt_encode(head,payload,aud,iat,exp1,PRIVATE_KEY,JWTType);
1773
1774 print(en)
1775
1776 End
1777
1778 (((
1779 == **9.5 convertohex(number type, number value)** ==
1780 )))
1781
1782 **Function:**
1783
1784 Convert data into hexadecimal data
1785
1786 **parameter:**
1787
1788 //type~:// incoming data type 0:word 1:dword 2:float
1789
1790 //value~:// the data to be converted
1791
1792 **Return:**
1793
1794 Succeed: the converted hexadecimal data
1795
1796 Failed: multi
1797
1798 (((
1799 == **9.6 set_network(table config)** ==
1800 )))
1801
1802 **Function:**
1803
1804 Set V-BOX network, take effect after restart
1805
1806 **parameter:**
1807
1808 //config~:// incoming network configuration table
1809
1810 1. connectMode: the way V-BOX connects to the server, 0: Ethernet, 1: WIFI, 2: 4G, 3: 2G, it is not allowed to be empty.
1811 1. ethernetEnable: Whether to enable Ethernet, 1: enable, 0: disable, and it is not allowed to be empty.
1812 1. ethernetLanIp: Set the LAN IP address. Only V-BOX with three network ports support this configuration, and other models of V-BOX do not support setting LAN IP. This item is allowed to be empty.
1813 1. ethernetIpMode: Whether to enable Ethernet static IP, 1: Enable static IP, 0: DHCP, not allowed to be empty.
1814 1. ethernetIp: The IP address needs to be configured when the Ethernet static IP is used, and it is not allowed to be empty.
1815 1. ethernetNetmask: The subnet mask needs to be configured when Ethernet static IP is used, and it is not allowed to be empty.
1816 1. ethernetGateway: The gateway can be configured when Ethernet static IP is used.
1817
1818 1. When using the Ethernet network, if the Gateway is empty, V-BOX will not connect to the server.
1819 1. If you only use Ethernet to directly connect to the PLC for communication, you do not need to configure a gateway.
1820
1821 1. ethernetFirstDns: You can configure the preferred DNS server when the Ethernet static IP is used, and it is allowed to be empty. If you use the Ethernet network and do not fill in the DNS server, V-BOX will not be connected to the server.
1822 1. ethernetSpareDns: Alternate DNS server can be configured when the Ethernet static IP is used, and it is allowed to be empty.
1823 1. wifiEnable: Whether to enable WIFI, 1: enable, 0: disable, it is not allowed to be empty. If it is a model that does not include WIFI, directly disable it.
1824 1. wifiName: WIFI name, if WIFI is enabled, it is not allowed to be empty.
1825 1. wifiPassword: WIFI password, it is allowed to be empty.
1826 1. wifiIpMode: Whether to enable WIFI static IP, 1: Enable static IP, 0: DHCP, not allowed to be empty.
1827 1. wifiIp: IP address needs to be configured when WIFI static IP is used, it is not allowed to be empty.
1828 1. wifiNetmask: The subnet mask needs to be configured when WIFI static IP is used, and it is not allowed to be empty.
1829 1. wifiGateway: The gateway can be configured when WIFI static IP is used, and it is not allowed to be empty.
1830 1. wifiFirstDns: You can configure the preferred DNS server when the WIFI static IP is used, and it is allowed to be empty. If you use the WIFI network and do not fill in the DNS server, V-BOX will not be connected to the server.
1831 1. wifiSpareDns: Alternate DNS server can be configured when the WIFI static IP is used, and it is allowed to be empty.
1832 1. mobileEnable: Whether to enable the mobile network, 1: enable, 0: disable, it is not allowed to be empty, if it does not include 4G models, directly disable it.
1833 1. mobileApnMode: Whether to manually configure the APN, 0: Use the default APN, 1: Manually configure the APN, it is not allowed to be empty.
1834 1. apnName: APN name, if you choose to manually configure APN, it is not allowed to be empty.
1835 1. apnPassword: APN username, it is allowed to be empty.
1836 1. apnUserName: APN number, it is allowed to be empty.
1837 1. apnNumber: APN number, it is allowed to be empty.
1838
1839 **Return:**
1840
1841 Succeed: true
1842
1843 Faied: multi
1844
1845 (((
1846 == **9.7 {{id name="_Toc22969"/}}remote_com_start(string config)** ==
1847 )))
1848
1849 **Function:**
1850
1851 start serial port pass-through
1852
1853 **Parameter:**
1854
1855 //config: //incoming serial port parameter configuration, JSON format
1856
1857 1. type:0, serial port pass-through
1858 1. port: serial port number marked on the V-BOX
1859 1. comtype:0-RS232, 1-RS485, 2-RS422
1860 1. baudrate: Baud Rate
1861 1. data_length: Data Bits
1862 1. stop_bit: Stop Bit
1863 1. check_bit: Check Bit
1864
1865 **Return:**
1866
1867 Succeed: true
1868
1869 Failed: multi
1870
1871 (((
1872 == **9.8 remote_com_stop()** ==
1873 )))
1874
1875 **Function:**
1876
1877 close serial port pass-through
1878
1879 **Return:**
1880
1881 Succeed: true
1882
1883 Failed: multi
1884
1885 (((
1886 == **9.9{{id name="_Toc22824"/}} remote_com_state()** ==
1887 )))
1888
1889 **Function:**
1890
1891 query the serial port pass-through status and pass-through server domain name and port
1892
1893 **Return:**
1894
1895 Succeed:
1896
1897 1. number, current pass-through status: 0-none 1,2-starting pass-through 3-penetrating 4,5-finishing pass-through 6-pass-through error
1898 1. string, pass-through server domain name and port number, xxxx (domain name): xxx (port number)
1899
1900 {{id name="OLE_LINK9"/}}Failed: multi