Changes for page 01 Lua Functions

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

From version 5.35
edited by Stone Wu
on 2022/07/12 11:00
Change comment: (Autosaved)
To version 9.2
edited by Stone Wu
on 2022/07/25 11:32
Change comment: Update document after refactoring.

Summary

Details

Page properties
Parent
... ... @@ -1,1 +1,1 @@
1 -V-BOX.V-Net.1\.User Manual.04 Lua Script.WebHome
1 +V-BOX.V-Net.04 Lua Script.WebHome
Content
... ... @@ -140,7 +140,7 @@
140 140  
141 141   Table 2-1
142 142  
143 -(% class="box errormessage" %)
143 +(% class="box infomessage" %)
144 144  (((
145 145  **✎Note: **If HLword enters any other value, it will be treated as invalid.
146 146  )))
... ... @@ -608,11 +608,12 @@
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"}}
611 611  local setup = {
612 612  
613 613  name = "COM2",
614 614  
615 -mode = 422, ~-~- COM2 does not support RS422
616 +mode = 422, -- COM2 does not support RS422
616 616  
617 617  ...
618 618  
... ... @@ -619,6 +619,7 @@
619 619  }
620 620  
621 621  serial.open(setup)
623 +{{/code}}
622 622  )))
623 623  
624 624  **Data bit:**
... ... @@ -1063,8 +1063,9 @@
1063 1063  
1064 1064  If there is no custom configuration, return an empty table, otherwise, return with "field name/field content"
1065 1065  
1066 -E.g:
1068 +**For example:**
1067 1067  
1070 +{{code language="LUA"}}
1068 1068  {
1069 1069  
1070 1070  [1]= {[1]=1234, [2]=1, [3]='temp', [4]='23.5', [5]={"fruit"="apple"}},
... ... @@ -1077,7 +1077,8 @@
1077 1077  
1078 1078  }
1079 1079  
1080 -Failed: //table// empty table
1083 +Failed: table empty table
1084 +{{/code}}
1081 1081  
1082 1082  (((
1083 1083  == **bns_get_config(string from)** ==
... ... @@ -1157,13 +1157,15 @@
1157 1157  
1158 1158  Type (1: switch, 2: number, 3: string)
1159 1159  
1160 -E.g:
1161 - {
1164 +**For example:**
1162 1162  
1163 -[1]={~-~-The first communication port
1166 +{{code language="LUA"}}
1167 +{
1164 1164  
1165 -[1]={~-~-monitoring point array of the first communication port
1169 +[1]={--The first communication port
1166 1166  
1171 +[1]={--monitoring point array of the first communication port
1172 +
1167 1167  [1]={[1]=11,[2]='data1',[3]=3,[4]=2},
1168 1168  
1169 1169  [2]={[1]=12,[2]='data2',[3]=3,[4]=2},
... ... @@ -1170,23 +1170,23 @@
1170 1170  
1171 1171  ...
1172 1172  
1173 -[n]={[1]=xx,[2]='datan',[3]=x,[4]=x},~-~-n monitoring points
1179 +[n]={[1]=xx,[2]='datan',[3]=x,[4]=x},--n monitoring points
1174 1174  
1175 1175  },
1176 1176  
1177 -[2]=14, ~-~-ID
1183 +[2]=14, --ID
1178 1178  
1179 -[3]='Modbus TCP' ~-~-n monitoring points
1185 +[3]='Modbus TCP' --n monitoring points
1180 1180  
1181 1181  },
1182 1182  
1183 -[2]={~-~-The second communication port
1189 +[2]={--The second communication port
1184 1184  
1185 -[1]={},~-~-The monitoring point of the second communication port is not configured and is empty
1191 +[1]={},--The monitoring point of the second communication port is not configured and is empty
1186 1186  
1187 -[2]=15, ~-~-ID
1193 +[2]=15, --ID
1188 1188  
1189 -[3]='WECON' ~-~-communication protocol name
1195 +[3]='WECON' --communication protocol name
1190 1190  
1191 1191  },
1192 1192  
... ... @@ -1193,6 +1193,7 @@
1193 1193  ...n communication ports and so on
1194 1194  
1195 1195  }
1202 +{{/code}}
1196 1196  
1197 1197  Failed~:// table// empty table
1198 1198  
... ... @@ -1272,8 +1272,9 @@
1272 1272  
1273 1273  Succeed: //table// one-dimensional array
1274 1274  
1275 -E.g:
1282 +**For example:**
1276 1276  
1284 +{{code language="LUA"}}
1277 1277  {
1278 1278  
1279 1279  [1]="This is the oldest message", - the first is the oldest message
... ... @@ -1285,6 +1285,7 @@
1285 1285  [n]="This is the latest message", - the last is the latest message
1286 1286  
1287 1287  }
1296 +{{/code}}
1288 1288  
1289 1289  Failede: nil
1290 1290  
... ... @@ -1302,7 +1302,7 @@
1302 1302  
1303 1303  == **https request** ==
1304 1304  
1305 -Example
1314 +**For example:**
1306 1306  
1307 1307  {{code language="LUA"}}
1308 1308  local json = require("json")
... ... @@ -1358,7 +1358,7 @@
1358 1358  
1359 1359  **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.**
1360 1360  
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.
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.
1362 1362  
1363 1363  (% class="box infomessage" %)
1364 1364  (((
... ... @@ -1380,7 +1380,7 @@
1380 1380  1. Access in bit mode, the number range is: "@B_HDX0.0"-"@B_HDX299999.15".
1381 1381  
1382 1382  (((
1383 -== **8.2 Special data area (HSW/HSX)** ==
1392 +== **Special data area (HSW/HSX)** ==
1384 1384  
1385 1385  (% class="box infomessage" %)
1386 1386  (((
... ... @@ -1534,7 +1534,7 @@
1534 1534  Failed: multi
1535 1535  
1536 1536  (((
1537 -== **9.2 send_sms_ucs2(string number, string message)** ==
1546 +== **send_sms_ucs2(string number, string message)** ==
1538 1538  )))
1539 1539  
1540 1540  **Function:**
... ... @@ -1683,7 +1683,7 @@
1683 1683  * number [prarm.refin]: whether each byte of the data to be measured is inverted by bit, true or false.
1684 1684  * number [prarm.refout]: after the calculation or before the heterodyning output, whether the whole data is inverted by bit, true or false.
1685 1685  
1686 -Return:
1695 +**Return:**
1687 1687  
1688 1688  Success: crc object
1689 1689  
... ... @@ -1742,7 +1742,7 @@
1742 1742  Failed: multi, error code
1743 1743  )))
1744 1744  
1745 -Example:
1754 +**For example:**
1746 1746  
1747 1747  {{code language="LUA"}}
1748 1748  function crcTest.main()
... ... @@ -1804,8 +1804,9 @@
1804 1804  ** 2: timeout
1805 1805  * Customization returns an empty table if there is no configuration, otherwise returns "field name/field content"
1806 1806  
1807 -For example:
1816 +**For example:**
1808 1808  
1818 +{{code language="LUA"}}
1809 1809  {
1810 1810  
1811 1811  [1]= {[1]=1234, [2]=1, [3]='temp', [4]='23.5'},
... ... @@ -1819,6 +1819,7 @@
1819 1819  }
1820 1820  
1821 1821  Failed: table, empty table
1832 +{{/code}}
1822 1822  
1823 1823  == **normal_setdata_byname(string name, string data)** ==
1824 1824  
... ... @@ -1834,13 +1834,10 @@
1834 1834  
1835 1835  Succeed: string: The value of the monitor point before it is written
1836 1836  
1837 -Failed: mil
1848 +Failed: nil
1838 1838  
1839 1839  == **normal_getdata_byname(string name)** ==
1840 1840  
1841 -
1842 -
1843 -
1844 1844  **Function:** Read the data of the monitoring point name
1845 1845  
1846 1846  **Parameter:**
... ... @@ -1851,7 +1851,7 @@
1851 1851  
1852 1852  Succeed: string
1853 1853  
1854 -Failed: mil
1862 +Failed: nil
1855 1855  
1856 1856  = **11 MySQL database operation** =
1857 1857  
... ... @@ -1891,13 +1891,12 @@
1891 1891  
1892 1892  Succeed: status: returns the number of rows affected by SQL statement execution.
1893 1893  
1894 -Failed: mil, errorString
1902 +Failed: nil, errorString
1895 1895  
1896 1896  == **luaMySql.execWithResult(string statement)** ==
1897 1897  
1906 +**Function:** Execute the given SQL statement returning the result set (check)
1898 1898  
1899 -**Function:** Execute the given SQL statement returning the result set (che)
1900 -
1901 1901  **Parameter:**
1902 1902  
1903 1903  statement: the given SQL statement
... ... @@ -1904,6 +1904,210 @@
1904 1904  
1905 1905  **Return:**
1906 1906  
1907 -Succeed: status: returns the number of rows affected by SQL statement execution.
1914 +Succeed: table: returns the result set
1908 1908  
1909 -Failed: mil, errorString
1916 +Failed: nil, errorString
1917 +
1918 +**For example:**
1919 +
1920 +{{code language="LUA"}}
1921 +mysql = require"mysqlclient"
1922 +
1923 +function DataInitRight()
1924 +
1925 +local dbName = "db_lua1"
1926 +
1927 +local user = "root"
1928 +
1929 +local pwd = "123456"
1930 +
1931 +local host = "192.168.56.186"
1932 +
1933 +local port = 3306
1934 +local character = "UTF8"
1935 +
1936 +mysql.init(dbName, user, pwd, host, port, character)
1937 +
1938 +end
1939 +
1940 +function ExecFunc()
1941 +
1942 +status, errorString = mysql.exec("delete from tb_lua1 where mykey =
1943 +
1944 +10;")
1945 +
1946 +if nil == status then
1947 +
1948 +print("ExecFunc() error:", errorString)
1949 +
1950 +return -1
1951 +
1952 +else
1953 +
1954 +print("the number of rows affected by the command:", status)
1955 +
1956 +end
1957 +
1958 +return 0
1959 +
1960 +end
1961 +
1962 +function ExecWithResultFunc()
1963 +
1964 +status, errorString = mysql.execWithResult("select * from tb_lua1;")
1965 +
1966 +if nil == status then
1967 +
1968 +print("ExecWithResultFunc() error:", errorString)
1969 +
1970 +return -1
1971 +
1972 +else
1973 +
1974 +print("ExecWithResultFunc()
1975 +
1976 +success
1977 +
1978 +: status
1979 +
1980 +type
1981 +
1982 +=
1983 +
1984 +",
1985 +
1986 +type(status))
1987 +
1988 +print("ExecWithResultFunc() success : status len = ", #status)
1989 +
1990 +local num = #status
1991 +
1992 +local i = 1
1993 +
1994 +if num > 0 then
1995 +
1996 +for i = 1, num, 1 do
1997 +
1998 +local var = string.format("select result[%d] :mykey = %d,
1999 +
2000 +value = %s", i, status[i].mykey, status[i].value)
2001 +
2002 +print(var)
2003 +
2004 +end
2005 +
2006 +end
2007 +
2008 +print("---------------")
2009 +
2010 +end
2011 +
2012 +return 0
2013 +end
2014 +
2015 +function luaMysql_apiTest.main()
2016 +
2017 +print("script running ...")
2018 +
2019 +DataInitRight()
2020 +
2021 +--use exec demo
2022 +
2023 +if ExecFunc() < 0 then
2024 +
2025 +return
2026 +
2027 +end
2028 +
2029 +--use execWithResult demo
2030 +
2031 +if ExecWithResultFunc() < 0 then
2032 +
2033 +return
2034 +
2035 +end
2036 +
2037 +print("script running success")
2038 +
2039 +end
2040 +{{/code}}
2041 +
2042 += **12 Message summary algorithm** =
2043 +
2044 +== **hmac(string hash_func, string key, string message)** ==
2045 +
2046 +**Function:** HMAC calculate
2047 +
2048 +**Function name**
2049 +
2050 +hash_func:
2051 +
2052 +* [md5, sha1, sha224, sha256, sha384, sha512]
2053 +* [sha512_224, sha512_256, sha3_224, sha3_256]
2054 +* [sha3_384, sha3_512]
2055 +
2056 +**Parameter:**
2057 +
2058 +key: the key
2059 +
2060 +message: message content
2061 +
2062 +**Return:**
2063 +
2064 +Succeed: string, calculation result
2065 +
2066 +Failed: nil
2067 +
2068 +**For example:**
2069 +
2070 +{{code language="LUA"}}
2071 +local sha = require"sha2"
2072 +
2073 +function hmac_test.main()
2074 +
2075 +local hmac = sha.hmac
2076 +
2077 +print(hmac(sha.sha1,
2078 +
2079 +"your key", "your message"))
2080 +
2081 +end
2082 +{{/code}}
2083 +
2084 +== **sha(string message** ==
2085 +
2086 +**Function:** SHA calculate
2087 +
2088 +**Function name:**
2089 +
2090 +sha:
2091 +
2092 +* sha1, sha224, sha256, sha384, sha512]
2093 +* [sha512_224, sha512_256, sha3_224, sha3_256]
2094 +* [sha3_384, sha3_512]
2095 +
2096 +**Parameter:**
2097 +
2098 +key: the key
2099 +
2100 +message: message content
2101 +
2102 +**Return:**
2103 +
2104 +Succeed: string, calculation result
2105 +
2106 +Failed: nil
2107 +
2108 +For example:
2109 +
2110 +{{code language="LUA"}}
2111 +local sha = require"sha2"
2112 +
2113 +function sha_test.main()
2114 +
2115 +local sha256 = sha.sha256
2116 +
2117 +print(sha256("your message"))
2118 +
2119 +end
2120 +{{/code}}