Pandafuchs

printBahnhofMonitors V2

Oct 7th, 2015
236
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. os.loadAPI("ocs/apis/sensor")
  2. prox = sensor.wrap("top")
  3. trainWaitTime = 60
  4. lastTargets = nil
  5.  
  6. function getTargets()
  7.     lastTargets = prox.getTargets()
  8.     return lastTargets
  9. end
  10.  
  11. function getTimeout()
  12.     sleep(2)
  13.     return nil
  14. end
  15.  
  16. --Prints Texts on monitors and sets trains free
  17. function monitorPainting()
  18.     print("Monitorpainting wird gestartet....")
  19.  
  20.     local monitors = nil
  21.     if os.getComputerLabel() == "Bahnhof1" then
  22.         monitors = {peripheral.wrap( "monitor_0" ),peripheral.wrap( "monitor_1" ),peripheral.wrap( "monitor_2" ),peripheral.wrap( "monitor_6" )}
  23.     elseif os.getComputerLabel() == "Bahnhof2" then
  24.         monitors = {peripheral.wrap( "monitor_10" ), peripheral.wrap( "monitor_3" ),peripheral.wrap( "monitor_4" ),peripheral.wrap( "monitor_7" ),peripheral.wrap( "monitor_8" )}
  25.     end
  26.                
  27.     local zugPlan = {}
  28.     myApi.executeTableFunction(monitors, "setTextScale",0.7)
  29.    
  30.     while true do
  31.         while lastTargets == nil do
  32.             parallel.waitForAny(getTargets, getTimeout)
  33.         end
  34.        
  35.         local targets = lastTargets
  36.        
  37.         count = 0      
  38.         for k, v in pairs( targets ) do
  39.             count = count + 1
  40.         end
  41.         print(os.clock() ..  ": " .. count .. " targets")
  42.  
  43.         myApi.executeTableFunction(monitors, "clear")
  44.         myApi.executeTableFunction(monitors, "setTextColor", colors.white)
  45.         myApi.executeTableFunction(monitors, "setCursorPos", 1, 1)
  46.         myApi.executeTableFunction(monitors, "write", "Zug      Gleis     Ziel           ETA   Abfahrt")
  47.  
  48.         local zeile = 2
  49.         local nextZug = ""
  50.         for k, v in pairs( targets ) do
  51.             print(os.clock() .. ": Got target: " .. k )
  52.  
  53.             local gleis = myApi.getGleisFromPosX(v["Position"])
  54.             if string.find(k, "Locomotive") and (gleis ~= "?") then
  55.                 if zugPlan[k] == nil then
  56.                     zugPlan[k] = os.clock()
  57.                 end
  58.  
  59.                 if os.clock()-zugPlan[k] > trainWaitTime then
  60.                     if nextZug == "" or (os.clock()-zugPlan[nextZug]) < (os.clock()-zugPlan[k]) then
  61.                         nextZug = k
  62.                     end
  63.                 end
  64.  
  65.                 local ankunft = 0
  66.                
  67.                 if zugPlan[k] ~= nil then
  68.                     ankunft = (trainWaitTime - (os.clock()-zugPlan[k]))
  69.                     if ankunft < 0 then
  70.                         ankunft = 0
  71.                     end
  72.                 end
  73.  
  74.                 myApi.executeTableFunction(monitors, "setCursorPos", 1, zeile)
  75.                 local destination = myApi.fillMyString(v["RouteDestination"],6)
  76.                 ankunft = math.floor(ankunft)
  77.  
  78.                 myApi.executeTableFunction(monitors, "write", destination .. "    " .. gleis .. "       Ölplattform    0min  ".. ankunft .."sek" )
  79.                
  80.                 if (trainWaitTime - (os.clock()-zugPlan[k])) < -1 then
  81.                     myApi.executeTableFunction(monitors, "setTextColor", colors.red)
  82.                     myApi.executeTableFunction(monitors, "write", " +" .. math.floor(math.abs(trainWaitTime - (os.clock()-zugPlan[k])) ) )
  83.                     myApi.executeTableFunction(monitors, "setTextColor", colors.white)
  84.                 end
  85.                 zeile = zeile + 1
  86.            
  87.             end
  88.         end
  89.  
  90.         if nextZug ~= "" and colors.test(redstone.getBundledInput("bottom"), colors.lightGray) and (not colors.test(redstone.getBundledInput("bottom"), colors.red) ) then
  91.             if myApi.getGleisFromPosX( targets[nextZug]["Position"] ) == 1 then
  92.                 redstone.setBundledOutput("bottom", colors.white)
  93.             elseif myApi.getGleisFromPosX( targets[nextZug]["Position"] ) == 2 then
  94.                 redstone.setBundledOutput("bottom", colors.yellow)
  95.             elseif myApi.getGleisFromPosX( targets[nextZug]["Position"] ) == 3 then
  96.                 redstone.setBundledOutput("bottom", colors.lime)
  97.             elseif myApi.getGleisFromPosX( targets[nextZug]["Position"]) == 4 then
  98.                 redstone.setBundledOutput("bottom", colors.pink)
  99.             elseif myApi.getGleisFromPosX( targets[nextZug]["Position"] ) == 5 then
  100.                 redstone.setBundledOutput("bottom", colors.cyan)
  101.             end
  102.                            
  103.                 --myPrinter = peripheral.wrap( "printer_0" )
  104.                 --myPrinter.endPage()
  105.                 --ready = myPrinter.newPage()
  106.                 --myPrinter.setPageTitle("ZugLog Hauptbahnhof")
  107.                 --printerZeile = 1
  108.              
  109.               --printerZeile = printerZeile + 1
  110.               --if printerZeile == 20 then
  111.                 --printerZeile = 1
  112.                 --myPrinter.setPageTitle("ZugLog Hauptbahnhof")
  113.                 --myPrinter.endPage()
  114.                 --ready = myPrinter.newPage()
  115.              -- end
  116.              
  117.            
  118.             local h = fs.open("disk/logfile", fs.exists("disk/logfile") and "a" or "w")
  119.             uhrzeit = http.get("http://tankguru.me/extern/time.php?format=H:i:s")
  120.             h.writeLine("Bye ".. targets[nextZug]["RouteDestination"] .." um ".. uhrzeit.readAll().. "Uhr" );
  121.             h.flush();
  122.            
  123.  
  124.             zugPlan[nextZug] = nil
  125.             nextZug = ""
  126.  
  127.             sleep(3)
  128.             redstone.setBundledOutput("bottom", 0)
  129.         else
  130.             sleep(0.5)
  131.             redstone.setBundledOutput("bottom", 0)
  132.         end
  133.         lastTargets = nil
  134.     end
  135.  
  136. end
Advertisement
Add Comment
Please, Sign In to add comment