Advertisement
HandieAndy

OC_ir_train_monitor

Jun 13th, 2018
419
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.40 KB | None | 0 0
  1. --Require statements and component definitions.
  2. local component = require("component")
  3. local event = require("event")
  4. local computer = require("computer")
  5. local detector = component.ir_augment_detector
  6. local controller = component.ir_augment_control
  7.  
  8. local BRAKE_ENABLED = false
  9.  
  10. local function pullTrainEvent(func)
  11.     local event_name, net_address, augment_type, stock_uuid = event.pull("ir_train_overhead")
  12.     func(net_address, augment_type, stock_uuid)
  13. end
  14.  
  15. local function strStarts(str, start)
  16.     return string.sub(str, 1, string.len(start)) == start
  17. end
  18.  
  19. local function isStockLocomotive()
  20.     local info = detector.info()
  21.     return strStarts(info.id, "rolling_stock/loc")
  22. end
  23.  
  24. local function handleTrainEvent(net_address, augment_type, stock_uuid)
  25.     if (augment_type == "DETECTOR") then
  26.         local data = detector.consist()
  27.         if (data == nil  or not isStockLocomotive()) then
  28.             return
  29.         end
  30.         print("Locomotive Data from: "..net_address)
  31.         print("  Speed: "..data.speed_km.." Km/h")
  32.         print("  Direction: "..data.direction)
  33.         print("  Weight: "..data.weight_kg.." Kg")
  34.         print("  Tractive Effort: "..data.tractive_effort_N.." N")
  35.         print("  Cars: "..data.cars)
  36.         print("  TIME: "..os.time())
  37.     end
  38.     if (augment_type == "LOCO_CONTROL" and BRAKE_ENABLED) then
  39.         controller.setThrottle(0)
  40.         controller.setBrake(1)
  41.         controller.horn()
  42.     end
  43. end
  44.  
  45. while true do
  46.     pullTrainEvent(handleTrainEvent)
  47. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement