System
Sisältää käyttöjärjestelmään ja laitteistoon liittyviä funktioita.
System.base64encode (strTxt)
System.base64decode (strTxt)
strTxt Tulostettava teksti
Koodaa ja dekoodaa tekstiä tai binääridataa base64 -muotoon. Kyseistä koodaustapaa käytetään usein binäärimuotoisen datan siirtämiseksi vain tekstimuotoa tukevan linjan ylitse – usein ascii 7-bit.
Paluuarvot
Palauttaa koodatun tai dekoodatun datan.
Esimerkki:
-- Lue binääri dataa tiedostosta ja koodaa se
local bin = file:read (”*a”)
local coded = System.base64encode(bin)
System.shell (strCmd)
strCmd Suoritettava komento
Suorittaa komennon järjestelmän shellissä (synkronisesti, eli kutsuva käyttöjärjestemän prosessi odottaa että komento on suoritettu kokonaan) ja palauttaa komennon stdout:iin tulostaman tekstin riveittäin taulukossa. Palautettu taulukko on numeraalisesti indeksoitu 1 eteenpäin, ja yksi tulosteen rivi vastaa yhtä taulukon riviä.
Palauttaa nil jos komentoa ei voitu suorittaa, ja tyhjän taulukon jos komento ei tulosta mitään std out:iin.
Komento palauttaa toisena paluuarvona suoritetun komennon paluuarvon, eli n.s. exit code:n.
Esimerkki:
-- hakemiston tiedostot
-- huom! että kaksi ensimmmäistä aina . Ja ..
-- ne pitää ohittaa
local dir, ec = System.shell (”ls /tmp/*”)
if #dir > 2 and ec == ”0” then
for i = 3, #dir do
print (dir[i])
end
end
System.log (prio, strCmd)
prio Loki merkinnän kiireellisyys. Kokonaisluku välillä 0 .. 7 jossa 0 vähiten kiireellinen (debug).
strCmd Tulostettava teksti
Kirjoittaa merkinnän järjestelmä lokiin.
Paluuarvot
true mikäli onnistuu, muuten nil.
Esimerkki:
Slc.log(0, ”This is my system log info”)
System.nanosleep (intDly)
intDly Viive nanosekunteina
Vastaa POSIX kutsua nanosleep(). Asettaa kutsuvan säikeen uneen (minimissään) annetuksi ajaksi.
Esimerkki:
-- Plc ohjelma odottaa 1 millisekunnin
Slc.nanosleep (1000000)
System.nanotimer ()
Ei argumentteja
Palauttaa järjestelmän tarkkuusajastimen nykyisen arvon. Ajastin on laskuri (uint64), joka alkaa juosta 0:sta kun käyttöjärjestelmä käynnistyy. Sen laskee nanosekuntteja, ja sen todellinen tarkkuus on usein noin 40 nanosekunnin luokkaa (ARM cortex A8).
Esimerkki:
print (”Current hires timer value: ”.. System.nanotimer () )
System.parseUrl (strUrl)
strUrl Url teksti
Parsii URL merkkijonon, ja palauttaa URL eri kentät talukossa.
Esimerkkinä:
URL: https://areena.yle.fi/tv/ohjelmat/sarjat?t=uusimmat
Parsittu taulukko:
URL_taulukko = {
protocol = ”https”,
user = ””,
pass = ””,
address=”areena.yle.fi”,
port=””,
fullpath=”/tv/ohjelmat/sarjat”,
path={”tv”, ”ohjelmat”, ”sarjat”},
paramstring=”t=uusimmat”,
params={t=”uusimmat”}
}
Toinen esimerkki:
URL:
http://name:secret@www.google.com:8080/this/is/path/file.xml?param1=1&meaning=42
Parsittu taulukko:
{
protocol = "http",
user = "name",
pass = "secret",
address = "www.google.com",
port = "8080",
fullpath = "/this/is/path/file.xml",
path = {"this", "is", "path", "file.xml" },
paramstring = "param1=1&meaning=42",
params = {
param1 = "1",
meaning = "42"
}
}
Virhetilanteessa funktio voi palauttaa arvon nil.
Esimerkki:
local parsed = System.parseUrl ( urlString )
if parsed.protocol == ”http” then
-- Handle http request
end
System.encodeUrl (strData)
System.decodeUrl (strData)
strData Tulostettava teksti
Kun käsitellään URL tekstejä, on itse lokaattorin lopussa annettavien parametrien arvot koodattava niin sanotulla prosentti koodauksella. Näillä funktioilla voidaan tehdä parametrien arvojen prosenttikoodaus, ja dekoodaus.
Paluuarvot
koodattu tai purettu teksti.
Esimerkki:
-- Palauttaa meik%C3%A4%0A
local encoded = System.encodeUrl (”meikä”)
System.serialize (data)
data Serialisoitava data (merkkijono, luku, taulukko)
Tekee lua objekteille niin sanotus sarjoituksen, eli serialisoinnin.
Täma muunnos tarkoittaa että objekti muutetaan takaisin lähdekoodi -muotoon. Tätä muunnosta tarvitaan esimerkiksi silloin kun lua taulukko halutaan siirtää tcp yhteyden ylitse toiseen laitteeseen, tai vain IPC-kanavan lävitse laitteen muistissa toiseen prosessiin, tai tallentaa tiedostoon.
Serialisoitu objekti on helppoa palauttaa takaisin ohjelmassa käsiteltäväksi, koska se voidaan ”ajaa” normaalissa lua tulkissa.
Vastaa suurinpiirtein javascriptin JSON.stringify() kutsua.
Tämä funktio on käyttökelpoinen paitsi tiedonsiirrossa ja tallentamisessa, myös ohjelmien debuggauksessa, koska miltei mikä tahansa objekti voidaan tulostaa tekstimuodossa vaikkapa konsoliin ohjelmoijan tarkasteltavaksi.
Paluuarvot
Annettu objekti tekstimuodossaan merkkijonona, tai nil mikäli kutsuttiin virheellisillä arvoilla.
System.importCSV (strCsv [, strDlm] )
strCsv Tab eroteltu data
strDlm Sarakeet erottava merkki, oletus on \t eli tabulaattori
Tämä funktio luo CSV muotoisesta – tai oletusarvoisesti TAB-erotellusta tekstistä – taulukon ja palauttaa sen.
Nimestään huolimatta oletus sarake-erottimelle on ’\t’.
Luotavan rivin nimen oletetaan löytyvän sarakkeesta, jonka nimi on ”dataname”, ”pointname”, ”rowname”, ”datapoint” tai ”keyname” – kaikki edellämainitut ovat synonyymejä.
Esimerkki:
csv = [[name description pv
data1 tunnit 7.0
data2 minuutit 15.0
data3 sekunnit 23.0
data4 paivat 1.0
]]
local d = System.importCSV (csv)
>> taulukon d sisältö:
d = {
data1 = {description = ”tunnit”, pv = 7},
data2 = {description = ”minuutit”, pv = 15},
data3 = {description = ”sekunnit”, pv = 23},
data4 = {description = ”paivat”, pv = 1}
}
System.archInfo ()
Funktio palauttaa taulukossa laitteiston käyttöjärjestelmän ja prosessoriarkkitehtuurin.
Palauttaa taulukon, jossa rivit
os Käyttöjärjestelmän nimi. Joitakin tavallisia arvoja ovat mm.
Ubuntu, Builtroot, Debian.
arch Prosessoriarkkitehtuuri. Tyypillisiä arvoja ovat
armv7l (beagle bone) ja x86_64
Esimerkki:
local d = System.archInfo (csv)
print (”Käyttöjärjestelmä: ”.. d.os)
System.getNetworkInterfaces ()
Funktio palauttaa taulukossa järjestelmän verkkosovittimet ja niiden asetukset.
System.pid ()
Funktio palauttaa kutsuvan prosessin (yleensä slc engine) process ID (eli pid) numeron. Tämä on se tekninen tunnus, jolla käyttöjärjestelmä tunnistaa prosessit, ja jonka avulla voi lähettää mm. signaaleita prosessien välillä.
System.sendSig (pid, signal)
pid (int) prosessin ID numero
signal (int) signaali joka lähetetään (kts. posix singals)
Funktion avulla voi lähettää signaalin käyttöjärjestelmäprosessien välillä. Palauttaa true onnistuessaan, ja nil mikäli kutsussa ilmeni virhe.