Changes for page 01 Lua Functions

Last modified by Theodore Xu on 2023/10/26 10:51

From version 17.1
edited by Theodore Xu
on 2023/08/24 16:45
Change comment: There is no comment for this version
To version 5.35
edited by Stone Wu
on 2022/07/12 11:00
Change comment: (Autosaved)

Summary

Details

Page properties
Parent
... ... @@ -1,1 +1,1 @@
1 -V-BOX.V-Net.Manual.04 Lua Script.WebHome
1 +V-BOX.V-Net.1\.User Manual.04 Lua Script.WebHome
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.AiXia
1 +XWiki.Stone
Content
... ... @@ -140,7 +140,7 @@
140 140  
141 141   Table 2-1
142 142  
143 -(% class="box infomessage" %)
143 +(% class="box errormessage" %)
144 144  (((
145 145  **✎Note: **If HLword enters any other value, it will be treated as invalid.
146 146  )))
... ... @@ -608,12 +608,11 @@
608 608  Attempting to use a script to open a serial port in an unsupported mode will result in an error directly, as below.
609 609  
610 610  |(((
611 -{{code language="LUA"}}
612 612  local setup = {
613 613  
614 614  name = "COM2",
615 615  
616 -mode = 422, -- COM2 does not support RS422
615 +mode = 422, ~-~- COM2 does not support RS422
617 617  
618 618  ...
619 619  
... ... @@ -620,7 +620,6 @@
620 620  }
621 621  
622 622  serial.open(setup)
623 -{{/code}}
624 624  )))
625 625  
626 626  **Data bit:**
... ... @@ -1065,9 +1065,8 @@
1065 1065  
1066 1066  If there is no custom configuration, return an empty table, otherwise, return with "field name/field content"
1067 1067  
1068 -**For example:**
1066 +E.g:
1069 1069  
1070 -{{code language="LUA"}}
1071 1071  {
1072 1072  
1073 1073  [1]= {[1]=1234, [2]=1, [3]='temp', [4]='23.5', [5]={"fruit"="apple"}},
... ... @@ -1080,8 +1080,7 @@
1080 1080  
1081 1081  }
1082 1082  
1083 -Failed: table empty table
1084 -{{/code}}
1080 +Failed: //table// empty table
1085 1085  
1086 1086  (((
1087 1087  == **bns_get_config(string from)** ==
... ... @@ -1161,15 +1161,13 @@
1161 1161  
1162 1162  Type (1: switch, 2: number, 3: string)
1163 1163  
1164 -**For example:**
1160 +E.g:
1161 + {
1165 1165  
1166 -{{code language="LUA"}}
1167 -{
1163 +[1]={~-~-The first communication port
1168 1168  
1169 -[1]={--The first communication port
1165 +[1]={~-~-monitoring point array of the first communication port
1170 1170  
1171 -[1]={--monitoring point array of the first communication port
1172 -
1173 1173  [1]={[1]=11,[2]='data1',[3]=3,[4]=2},
1174 1174  
1175 1175  [2]={[1]=12,[2]='data2',[3]=3,[4]=2},
... ... @@ -1176,23 +1176,23 @@
1176 1176  
1177 1177  ...
1178 1178  
1179 -[n]={[1]=xx,[2]='datan',[3]=x,[4]=x},--n monitoring points
1173 +[n]={[1]=xx,[2]='datan',[3]=x,[4]=x},~-~-n monitoring points
1180 1180  
1181 1181  },
1182 1182  
1183 -[2]=14, --ID
1177 +[2]=14, ~-~-ID
1184 1184  
1185 -[3]='Modbus TCP' --n monitoring points
1179 +[3]='Modbus TCP' ~-~-n monitoring points
1186 1186  
1187 1187  },
1188 1188  
1189 -[2]={--The second communication port
1183 +[2]={~-~-The second communication port
1190 1190  
1191 -[1]={},--The monitoring point of the second communication port is not configured and is empty
1185 +[1]={},~-~-The monitoring point of the second communication port is not configured and is empty
1192 1192  
1193 -[2]=15, --ID
1187 +[2]=15, ~-~-ID
1194 1194  
1195 -[3]='WECON' --communication protocol name
1189 +[3]='WECON' ~-~-communication protocol name
1196 1196  
1197 1197  },
1198 1198  
... ... @@ -1199,7 +1199,6 @@
1199 1199  ...n communication ports and so on
1200 1200  
1201 1201  }
1202 -{{/code}}
1203 1203  
1204 1204  Failed~:// table// empty table
1205 1205  
... ... @@ -1279,9 +1279,8 @@
1279 1279  
1280 1280  Succeed: //table// one-dimensional array
1281 1281  
1282 -**For example:**
1275 +E.g:
1283 1283  
1284 -{{code language="LUA"}}
1285 1285  {
1286 1286  
1287 1287  [1]="This is the oldest message", - the first is the oldest message
... ... @@ -1293,7 +1293,6 @@
1293 1293  [n]="This is the latest message", - the last is the latest message
1294 1294  
1295 1295  }
1296 -{{/code}}
1297 1297  
1298 1298  Failede: nil
1299 1299  
... ... @@ -1311,7 +1311,7 @@
1311 1311  
1312 1312  == **https request** ==
1313 1313  
1314 -**For example:**
1305 +Example
1315 1315  
1316 1316  {{code language="LUA"}}
1317 1317  local json = require("json")
... ... @@ -1367,7 +1367,7 @@
1367 1367  
1368 1368  **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.**
1369 1369  
1370 -**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.
1361 +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.
1371 1371  
1372 1372  (% class="box infomessage" %)
1373 1373  (((
... ... @@ -1389,7 +1389,7 @@
1389 1389  1. Access in bit mode, the number range is: "@B_HDX0.0"-"@B_HDX299999.15".
1390 1390  
1391 1391  (((
1392 -== **Special data area (HSW/HSX)** ==
1383 +== **8.2 Special data area (HSW/HSX)** ==
1393 1393  
1394 1394  (% class="box infomessage" %)
1395 1395  (((
... ... @@ -1507,19 +1507,8 @@
1507 1507  ** addr_getstring("@W_HSW191",17)
1508 1508  * Obtaining ICCID (read only)
1509 1509  ** addr_getstring("@W_HSW225",15)
1510 -* (((
1511 -TSAP settings of Siemens LOGO PLC*
1512 1512  
1513 1513  (((
1514 -addr_setword("@W_0#HSW1200",8192) means set the Local TSAP as 20.00
1515 -)))
1516 -
1517 -* (((
1518 -addr_setword("@W_0#HSW1201",4096) means set the Remote TSAP as 10.00
1519 -)))
1520 -)))
1521 -
1522 -(((
1523 1523  == **Power-down storage area (HAW/HAX)** ==
1524 1524  
1525 1525  The system storage area (HAW) is used for the system power-down hold registers:
... ... @@ -1554,7 +1554,7 @@
1554 1554  Failed: multi
1555 1555  
1556 1556  (((
1557 -== **send_sms_ucs2(string number, string message)** ==
1537 +== **9.2 send_sms_ucs2(string number, string message)** ==
1558 1558  )))
1559 1559  
1560 1560  **Function:**
... ... @@ -1703,7 +1703,7 @@
1703 1703  * number [prarm.refin]: whether each byte of the data to be measured is inverted by bit, true or false.
1704 1704  * number [prarm.refout]: after the calculation or before the heterodyning output, whether the whole data is inverted by bit, true or false.
1705 1705  
1706 -**Return:**
1686 +Return:
1707 1707  
1708 1708  Success: crc object
1709 1709  
... ... @@ -1762,7 +1762,7 @@
1762 1762  Failed: multi, error code
1763 1763  )))
1764 1764  
1765 -**For example:**
1745 +Example:
1766 1766  
1767 1767  {{code language="LUA"}}
1768 1768  function crcTest.main()
... ... @@ -1824,9 +1824,8 @@
1824 1824  ** 2: timeout
1825 1825  * Customization returns an empty table if there is no configuration, otherwise returns "field name/field content"
1826 1826  
1827 -**For example:**
1807 +For example:
1828 1828  
1829 -{{code language="LUA"}}
1830 1830  {
1831 1831  
1832 1832  [1]= {[1]=1234, [2]=1, [3]='temp', [4]='23.5'},
... ... @@ -1840,7 +1840,6 @@
1840 1840  }
1841 1841  
1842 1842  Failed: table, empty table
1843 -{{/code}}
1844 1844  
1845 1845  == **normal_setdata_byname(string name, string data)** ==
1846 1846  
... ... @@ -1856,10 +1856,13 @@
1856 1856  
1857 1857  Succeed: string: The value of the monitor point before it is written
1858 1858  
1859 -Failed: nil
1837 +Failed: mil
1860 1860  
1861 1861  == **normal_getdata_byname(string name)** ==
1862 1862  
1841 +
1842 +
1843 +
1863 1863  **Function:** Read the data of the monitoring point name
1864 1864  
1865 1865  **Parameter:**
... ... @@ -1870,7 +1870,7 @@
1870 1870  
1871 1871  Succeed: string
1872 1872  
1873 -Failed: nil
1854 +Failed: mil
1874 1874  
1875 1875  = **11 MySQL database operation** =
1876 1876  
... ... @@ -1910,12 +1910,13 @@
1910 1910  
1911 1911  Succeed: status: returns the number of rows affected by SQL statement execution.
1912 1912  
1913 -Failed: nil, errorString
1894 +Failed: mil, errorString
1914 1914  
1915 1915  == **luaMySql.execWithResult(string statement)** ==
1916 1916  
1917 -**Function:** Execute the given SQL statement returning the result set (check)
1918 1918  
1899 +**Function:** Execute the given SQL statement returning the result set (che)
1900 +
1919 1919  **Parameter:**
1920 1920  
1921 1921  statement: the given SQL statement
... ... @@ -1922,154 +1922,6 @@
1922 1922  
1923 1923  **Return:**
1924 1924  
1925 -Succeed: table: returns the result set
1907 +Succeed: status: returns the number of rows affected by SQL statement execution.
1926 1926  
1927 -Failed: nil, errorString
1928 -
1929 -**For example:**
1930 -
1931 -{{code language="LUA"}}
1932 --- Assuming the "mysqlclient" library is properly installed and available
1933 -mysql = require("mysqlclient")
1934 -
1935 -function DataInitRight()
1936 - local dbName = "excel"
1937 - local user = "root"
1938 - local pwd = "XXXXX"
1939 - local host = "192.168.39.146"
1940 - local port = 3306
1941 - local character = "utf8mb3"
1942 -
1943 - mysql.init(dbName, user, pwd, host, port, character)
1944 -end
1945 -
1946 -function ExecFunc()
1947 - status, errorString = mysql.exec("delete from student where Name = 'XXX';") --Delete statement, column name = table element
1948 - if nil == status then
1949 - print("ExecFunc() error:", errorString)
1950 - return -1
1951 - else
1952 - print("the number of rows affected by the command:", status)
1953 - end
1954 - return 0
1955 -end
1956 -
1957 -
1958 -function ExecWithResultFunc()
1959 - status, errorString = mysql.execWithResult("select * from student;")
1960 - if nil == status then
1961 - print("ExecWithResultFunc() error:", errorString)
1962 - return -1
1963 - else
1964 - print("ExecWithResultFunc() success : status type = ", type(status))
1965 - print("ExecWithResultFunc() success : status len = ", #status)
1966 - local num = #status
1967 - local i = 1
1968 - if num > 0 then
1969 - for i = 1, num, 1 do
1970 - local var = string.format("select result[%d] :Num = %d,Name = %s,Age = %d", i, status[i].Num, status[i].Name,status[i].Age) --Iterate through the data in the table, noting whether the elements are strings or numbers
1971 - print(var)
1972 - end
1973 - end
1974 - print("---------------")
1975 - end
1976 - return 0
1977 -end
1978 -
1979 -function MySQL.main()
1980 - print("script running ...")
1981 - DataInitRight()
1982 -
1983 - -- use exec demo
1984 - if ExecFunc() < 0 then
1985 - return
1986 - end
1987 -
1988 - -- use execWithResult demo
1989 - if ExecWithResultFunc() < 0 then
1990 - return
1991 - end
1992 -
1993 - print("script running success")
1994 -end
1995 -{{/code}}
1996 -
1997 -= **12 Message summary algorithm** =
1998 -
1999 -== **hmac(string hash_func, string key, string message)** ==
2000 -
2001 -**Function:** HMAC calculate
2002 -
2003 -**Function name**
2004 -
2005 -hash_func:
2006 -
2007 -* [md5, sha1, sha224, sha256, sha384, sha512]
2008 -* [sha512_224, sha512_256, sha3_224, sha3_256]
2009 -* [sha3_384, sha3_512]
2010 -
2011 -**Parameter:**
2012 -
2013 -key: the key
2014 -
2015 -message: message content
2016 -
2017 -**Return:**
2018 -
2019 -Succeed: string, calculation result
2020 -
2021 -Failed: nil
2022 -
2023 -**For example:**
2024 -
2025 -{{code language="LUA"}}
2026 -local sha = require"sha2"
2027 -
2028 -function hmac_test.main()
2029 -
2030 -local hmac = sha.hmac
2031 -
2032 -print(hmac(sha.sha1,
2033 -
2034 -"your key", "your message"))
2035 -
2036 -end
2037 -{{/code}}
2038 -
2039 -== **sha(string message** ==
2040 -
2041 -**Function:** SHA calculate
2042 -
2043 -**Function name:**
2044 -
2045 -sha:
2046 -
2047 -* sha1, sha224, sha256, sha384, sha512]
2048 -* [sha512_224, sha512_256, sha3_224, sha3_256]
2049 -* [sha3_384, sha3_512]
2050 -
2051 -**Parameter:**
2052 -
2053 -key: the key
2054 -
2055 -message: message content
2056 -
2057 -**Return:**
2058 -
2059 -Succeed: string, calculation result
2060 -
2061 -Failed: nil
2062 -
2063 -For example:
2064 -
2065 -{{code language="LUA"}}
2066 -local sha = require"sha2"
2067 -
2068 -function sha_test.main()
2069 -
2070 -local sha256 = sha.sha256
2071 -
2072 -print(sha256("your message"))
2073 -
2074 -end
2075 -{{/code}}
1909 +Failed: mil, errorString