local head = { "V TRAIN LINE STATION ", " " } local length = 18 local sformat = string.format if event.type=="digiline" or event.type=="punch" then if event.channel=="upd_main" or event.type=="punch" then local table = table local start_t = os.clock() if not S.lagrec then S.lagrec = {} end local la = {} local lb = {} local i local counter=0 local ids = {} for i in pairs(S.trains) do ids[#ids+1] = i end table.sort(ids) for id = 1, #ids, 1 do local st = (S.trains[ids[id] or 0] or "") i = (counter-counter%7)/7*2+((counter%7<3) and 1 or 2) if not la[i] then la[i] = (i%2==0) and {} or {head[1]} end if not lb[i] then lb[i] = (i%2==0) and {} or {head[2]} end local n = sformat("[%s] %s", st.t or "?", F.stnlist[st.s] or st.s) la[i][#la[i]+1] = sformat("%02d %06d %-7s %s", st.v, ids[id], st.l, n) lb[i][#lb[i]+1] = (n:len() < 10 and " " or n:sub(10)) counter = counter + 1 end for i=1,#la,1 do digiline_send("d"..tostring(i).."a", table.concat(la[i] or {" "," "},"\n")) digiline_send("d"..tostring(i).."b", table.concat(lb[i] or {" "," "},"\n")) end local end_t = os.clock() S.lagrec[#S.lagrec+1] = end_t - start_t table.sort(S.lagrec) local lagavg = 0 for i = 1, #S.lagrec, 1 do lagavg = lagavg + S.lagrec[i] end lagavg = lagavg / #S.lagrec digiline_send("lag1", sformat("DEBUG\nTRAINS: %d\nTS: %d", counter, os.time())) digiline_send("lag2", sformat("CUR %f\nMIN %f\nMAX %f\nAVG %f", end_t - start_t, S.lagrec[1], S.lagrec[#S.lagrec], lagavg)) end end