Advertisement
Pdevo

gestore_scambi

Sep 30th, 2015
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.39 KB | None | 0 0
  1. -- versori cardinalita'
  2.  
  3. ve = 1
  4. vs = 2
  5. vw = 3
  6. vn = 4
  7.  
  8. -- versori direzionalita'
  9.  
  10. we = 3
  11. ws = 4
  12. ww = 1
  13. wn = 2
  14.  
  15. -- binari di direttrice
  16.  
  17. xd = 1
  18. yd = 2
  19.  
  20. -- codifica di direttice
  21.  
  22. cd = 0
  23.  
  24. -- fattore sequenziale
  25.  
  26. fs = 1/5
  27.  
  28. -- inizializzazione tragitti
  29.  
  30. tragitto = {}
  31.  
  32. -- inizializzazione versore est
  33.  
  34. tragitto[ve] = {}
  35. tragitto[ve][cd] = {}
  36. tragitto[ve][cd]["scambi"] = {}
  37. tragitto[ve][xd] = {}
  38. tragitto[ve][xd]["scambi"] = {}
  39. tragitto[ve][yd] = {}
  40. tragitto[ve][yd]["scambi"] = {}
  41.  
  42. -- inizializzazione versore sud
  43.  
  44. tragitto[vs] = {}
  45. tragitto[vs][cd] = {}
  46. tragitto[vs][cd]["scambi"] = {}
  47. tragitto[vs][xd] = {}
  48. tragitto[vs][xd]["scambi"] = {}
  49. tragitto[vs][yd] = {}
  50. tragitto[vs][yd]["scambi"] = {}
  51.  
  52. -- inizializzazione versore ovest
  53.  
  54. tragitto[vw] = {}
  55. tragitto[vw][cd] = {}
  56. tragitto[vw][cd]["scambi"] = {}
  57. tragitto[vw][xd] = {}
  58. tragitto[vw][xd]["scambi"] = {}
  59. tragitto[vw][yd] = {}
  60. tragitto[vw][yd]["scambi"] = {}
  61.  
  62. -- inizializzazione versore nord
  63.  
  64. tragitto[vn] = {}
  65. tragitto[vn][cd] = {}
  66. tragitto[vn][cd]["scambi"] = {}
  67. tragitto[vn][xd] = {}
  68. tragitto[vn][xd]["scambi"] = {}
  69. tragitto[vn][yd] = {}
  70. tragitto[vn][yd]["scambi"] = {}
  71.  
  72. -- configurazione tragitti
  73.  
  74. tragitto[ve][xd]["scambi"][101] = {"0","attivo","1","inattivo","2","attivo","3","attivo","4","attivo","5","attivo"}
  75. tragitto[ve][xd]["scambi"][102] = {"0","attivo","1","inattivo","2","attivo","3","attivo","4","attivo","5","inattivo"}
  76. tragitto[ve][xd]["scambi"][103] = {"0","attivo","1","inattivo","2","inattivo","6","inattivo"}
  77. tragitto[ve][xd]["scambi"][104] = {"0","attivo","1","inattivo","2","inattivo","6","attivo"}
  78.  
  79. tragitto[vn][yd]["scambi"][101] = {"5","attivo","4","attivo","3","attivo","2","attivo","1","attivo","10","inattivo","11","inattivo","12","inattivo"}
  80. tragitto[vn][yd]["scambi"][102] = {"5","inattivo","4","attivo","3","attivo","2","attivo","1","attivo","10","inattivo","11","inattivo","12","inattivo"}
  81. tragitto[vn][yd]["scambi"][103] = {"6","inattivo","2","inattivo","1","attivo","10","inattivo","11","inattivo","12","inattivo"}
  82. tragitto[vn][yd]["scambi"][104] = {"6","attivo","2","inattivo","1","attivo","10","inattivo","11","inattivo","12","inattivo"}
  83.  
  84. -- inizializzazione periferiche
  85.  
  86. modem = nil
  87.  for _, side in pairs(rs.getSides()) do
  88.   if peripheral.getType(side) == "modem" then
  89.   modem = side
  90.   break
  91.   end
  92.  end
  93.  
  94. monitor = nil
  95.  for _, side in pairs(rs.getSides()) do
  96.   if peripheral.getType(side) == "monitor" then
  97.   monitor = side
  98.   break
  99.   end
  100.  end
  101.  
  102. -- codice avvio
  103.  
  104. sleep(1)
  105. print("< scambi >")
  106. sleep(1)
  107. print("gestore")
  108. sleep(1)
  109. print("assegnazione")
  110. sleep(1)
  111. print("inizializzazione")
  112. sleep(1)
  113. print("connessione")
  114. rednet.open(modem)
  115. rednet.broadcast("avvio_gestore_scambi")
  116. sleep(1)
  117. print("funzionamento")
  118.  
  119. -- codice sistema
  120.  
  121. while true do
  122. local message = rednet.receive()
  123. local words = {}
  124.  
  125. for word in string.gmatch(message, "%w+") do words[#words + 1] = word end
  126.  
  127.  if words[1] == "configura" then
  128.  
  129.   if words[2] == "tragitto" then
  130.  
  131.   local v = tonumber(words[3])
  132.   local d = tonumber(words[4])
  133.   local c = tonumber(words[5])
  134.   local t = tragitto[v][d]["scambi"][c]
  135.  
  136.    if t == nil then
  137.    rednet.broadcast("tragitto_"..v.."_"..d.."_"..c.."_scambi_indefinito")
  138.    end
  139.    
  140.    if t ~= nil then
  141.    local i1 = 1
  142.    local i2 = #t/2
  143.    error = nil
  144.     for i = i1, i2 do
  145.     local jn = i*1
  146.     local js = i*2
  147.     local n = tragitto[v][d]["scambi"][c][jn]
  148.     local s = tragitto[v][d]["scambi"][c][js]
  149.     rednet.broadcast("comando_scambio_"..n.."_"..s)
  150.     event, id, message, distance, protocol = os.pullEvent("rednet_message")
  151.      if message ~= "aggiornamento_scambio_"..n.."_"..s then
  152.      error = true
  153.      break
  154.      end    
  155.      if message == "aggiornamento_scambio_"..n.."_"..s then
  156.      error = false
  157.      end
  158.     end
  159.     if error == true then  
  160.     rednet.broadcast("tragitto_"..v.."_"..d.."_"..c.."_scambi_errore")
  161.     end
  162.     if error == false then
  163.     rednet.broadcast("tragitto_"..v.."_"..d.."_"..c.."_scambi_configurato")
  164.     end
  165.    end
  166.    
  167.   end
  168.  
  169.  end
  170.  
  171.  if words[1] == "sistemi" then
  172.  
  173.   if words[2] == "gestore" then
  174.  
  175.    if words[3] == "scambi" then
  176.    
  177.     if words[4] == "spegnimento" then
  178.     rednet.broadcast("spegnimento_gestore_scambi")
  179.     os.shutdown()
  180.     end
  181.     if words[4] == "riavvio" then
  182.     rednet.broadcast("riavvio_gestore_scambi")
  183.     os.reboot()
  184.     end
  185.    
  186.    end
  187.    
  188.   end
  189.  
  190.  end
  191.  
  192. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement