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")localevent=require("event")local prgms ={"move to","home","unready","reportPos","exit"}local port =100print("Starting Robot Commander...")print("Opening port "..port.."...")
modem.open(port)print("Port "..port.." open: :"..tostring(modem.isOpen(port)))
os.sleep(1)localselect=0while prgms[select]~="exit"doprint("\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"thenlocal mode
local valid =falsewhile valid ==falsedoprint("\n(R)elative or (absolute) movement?")
mode = io.read()if mode =="r"or mode =="R"thenprint("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"thenprint("Enter x-target:")
xTarget = io.read()print("Enter y-target:")
yTarget = io.read()print("Enter z-target:")
zTarget = io.read()
valid =trueelseprint("Error: Must enter 'a' or 'r' for mode...\n")endend
valid =falsewhile valid ==falsedoprint("\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"thenprint("Please re-select command.")
valid =trueelseprint("Error: Must enter 'y' or 'n'")endendendif prgms[select]=="home"then
modem.broadcast(port,2)endif prgms[select]=="unready"then
modem.broadcast(port,3)endif prgms[select]=="reportPos"thenlocal 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()endif prgms[select]=="exit"thenprint("Exiting Robot Commander...")
os.sleep(1)endend
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