Advertisement
manaphoenix

CC Printer Program

Apr 12th, 2020
407
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.20 KB | None | 0 0
  1. local printer -- printer var
  2.  
  3. do
  4. -- find printer
  5. for _,side in pairs(redstone.getSides()) do
  6.     if peripheral.getType(side) == "printer" then
  7.         printer = peripheral.wrap(side)
  8.         break;
  9.     end
  10. end
  11.  
  12. -- printer check
  13. if not printer then
  14.     error("No printer block found!")
  15. end
  16. end
  17.  
  18. local function checkPrinterLevels()
  19. -- check for ink
  20. if printer.getInkLevel() == 0 then
  21.     print("Please insert Ink!")
  22.     while printer.getInkLevel() == 0 do
  23.         os.sleep(0.5)
  24.     end
  25. end
  26.  
  27. -- check for paper
  28. if printer.getPaperLevel() == 0 then
  29.     print("Please insert Paper!")
  30.     while printer.getPaperLevel == 0 do
  31.         os.sleep(0.5)
  32.     end
  33. end
  34. end
  35.  
  36. -- checks passed, let's print somethin'
  37. local mw, mh
  38. local h = 1;
  39. local name;
  40. local docs = 0
  41. term.clear()
  42. term.setCursorPos(1,1)
  43.  
  44. local function setupPage()
  45. term.clear()
  46. term.setCursorPos(1,1)
  47. printer.newPage() -- new page
  48. mw, mh = printer.getPageSize()
  49. h = 1
  50. printer.setCursorPos(1, h)
  51.  
  52. print("Page Size:")
  53. print("Width: " .. mw)
  54. print("Height: " .. mh)
  55. print("")
  56.  
  57. print("Name this page:")
  58. name = read()
  59.  
  60. printer.setPageTitle(name)
  61.  
  62. end
  63.  
  64. local function findDocuments()
  65.     for _,item in pairs(fs.list("")) do
  66.         if string.find(item,".txt") then
  67.             print(item)
  68.             docs = docs + 1
  69.         end
  70.     end
  71. end
  72.  
  73. local function writeLine(line)
  74.     checkPrinterLevels() -- ensure printer can print
  75.     printer.write(line)
  76.     if h < mh + 1 then
  77.         h = h + 1 -- track page length
  78.         printer.setCursorPos(1,h)
  79.     else
  80.         printer.endPage() -- prints finished page.
  81.         -- start new page
  82.         setupPage();
  83.     end
  84. end
  85.  
  86. local function readDocument(doc)
  87.     local line = ""
  88.     repeat
  89.         line = writeLine(doc.readLine())
  90.     until line == nil
  91. end
  92.  
  93. local function loadDocument()
  94.     print("Please choose file")
  95.     local file = read()
  96.     term.clear()
  97.     term.setCursorPos(1, 1)
  98.    
  99.     if fs.exists(file) then
  100.         setupPage()
  101.         term.clear()
  102.         term.setCursorPos(1, 1)
  103.         print("Document found... Printing!")
  104.         local doc = fs.open(file,"r")
  105.         readDocument(doc)
  106.         doc.close()
  107.     else
  108.         error("Document not found!")
  109.     end
  110. end
  111.  
  112. findDocuments()
  113. if docs < 1 then
  114.     error("No documents found!")
  115. end
  116.  
  117. loadDocument()
  118.  
  119. term.clear()
  120. term.setCursorPos(1,1)
  121. print("Print Finished!")
  122. print("Check printer for printed page(s)")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement