I've got a simple program that won't run due to an apparent missing "end" somewhere in the code. I've looked over the code a ridiculous number of times and can't find anything wrong with it. Hoping somebody is willing to review my code quick to see if I've missed something. I'm hoping I've just overlooked something simple.
I've run the program successfully in parts, with everything included except for the first if statement (line 28 thru 86). As soon as I add that section, I get an error looking for an 'end' to close the while loop at line 17 [see attached].
local component = require("component")
local modem = component.modem
local term = require("term")
local event = require("event")
local prgms = {"move to","home","unready","reportPos","exit"}
local port = 100
print("Starting Robot Commander...")
print("Opening port "..port.."...")
modem.open(port)
print("Port "..port.." open: :"..tostring(modem.isOpen(port)))
os.sleep(1)
local select = 0
while prgms[select] ~= "exit" do
print("\n\nRobot Commander\n")
print("1) Move robot to...")
print("2) Send robot home")
print("3) Exit robot ready state\n (unable to restart remotely)")
print("4) Report robot position")
print("5) Exit Robot Commander\n")
select = tonumber(io.read())
if prgms[select] == "move to" then
local mode
local valid = false
while valid == false do
print("\n(R)elative or (absolute) movement?")
mode = io.read()
if mode == "r" or mode == "R" then
print("Enter x-distance:")
xTarget = io.read()
print("Enter y-distance:")
yTarget = io.read()
print("Enter z-distance:")
zTarget = io.read()
valid = true
elseif mode == "a" or mode == "A" then
print("Enter x-target:")
xTarget = io.read()
print("Enter y-target:")
yTarget = io.read()
print("Enter z-target:")
zTarget = io.read()
valid = true
else
print("Error: Must enter 'a' or 'r' for mode...\n")
end
end
valid = false
while valid == false do
print("\nMode\tx\ty\tz")
print(tostring(mode).."\t"..xTarget.."\t"..yTarget.."\t"..zTarget)
print("Send command? ('y' or 'n')")
option = io.read()
if option == "y" or option == "Y" then
modem.broadcast(100,1,xTarget,yTarget,zTarget,tostring(mode))
print("Command sent")
valid = true
elseif option == "n" or option == "N" then
print("Please re-select command.")
valid = true
else
print("Error: Must enter 'y' or 'n'")
end
end
end
if prgms[select] == "home" then
modem.broadcast(port,2)
end
if prgms[select] == "unready" then
modem.broadcast(port,3)
end
if prgms[select] == "reportPos" then
local pos = {}
modem.broadcast(port,4)
pos = {event.pull(10,"modem")}
print(pos[6].." "..pos[7].." "..pos[8])
print("press any key to continue")
os.sleep(3)
io.read()
end
if prgms[select] == "exit" then
print("Exiting Robot Commander...")
os.sleep(1)
end
end
You can post now and register later.
If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.
I've got a simple program that won't run due to an apparent missing "end" somewhere in the code. I've looked over the code a ridiculous number of times and can't find anything wrong with it. Hoping somebody is willing to review my code quick to see if I've missed something. I'm hoping I've just overlooked something simple.
I've run the program successfully in parts, with everything included except for the first if statement (line 28 thru 86). As soon as I add that section, I get an error looking for an 'end' to close the while loop at line 17 [see attached].
Link to post
Share on other sites