def dbconnect(self): self.AprsDB = MySQLdbConn() if not self.AprsDB.connect(DB_SERVER, DB_USER, DB_PASSWD, DB_NAME): return False return True
class App(object): global WS_PORT, EMOVE_PORT, HOST, DB_SERVER, DB_USER, DB_PASSWD, DB_NAME MSG_LEN = 1000 PERIOD = 5 def __init__(self, master): # self.wsSock = -1 self.emoveSock = -1 self.nameVar = StringVar() self.wsPortVar = StringVar() self.emovePortVar = StringVar() self.kitVar = StringVar() self.cmdVar = StringVar() self.statusVar = StringVar() self.hbVar = StringVar() self.emoveVar = StringVar() self.diagsVar = StringVar() # self.nameVar.set(HOST) self.wsPortVar.set(str(WS_PORT)) self.emovePortVar.set(str(EMOVE_PORT)) self.kitVar.set("kit_design_GearBox") self.cmdVar.set("") self.statusVar.set("") self.hbVar.set("") self.emoveVar.set("") self.diagsVar.set("") # self.AprsDB = None # Label(master, text="Host").grid(row=0,column=0,columnspan=2) # # Label(master, text="Name:").grid(row=1,column=0) self.nameEntry = Entry(master, textvariable=self.nameVar, state=NORMAL) self.nameEntry.grid(row=1,column=1) # # Label(master, text="WS Port:").grid(row=2,column=0) self.wsPortEntry = Entry(master, textvariable=self.wsPortVar, state=NORMAL) self.wsPortEntry.grid(row=2,column=1) # # Label(master, text="Emove Port:").grid(row=3,column=0) self.emovePortEntry = Entry(master, textvariable=self.emovePortVar, state=NORMAL) self.emovePortEntry.grid(row=3,column=1) # # self.connectButton = Button(master, text="Connect", command=self.connect, state=NORMAL) self.connectButton.grid(row=4,column=0) self.disconnectButton = Button(master, text="Disconnect", command=self.disconnect, state=DISABLED) self.disconnectButton.grid(row=4,column=1) # Label(master, text="Kit").grid(row=0, column=2, columnspan=2) # # Label(master, text="Name:").grid(row=1, column=2) Entry(master, textvariable=self.kitVar).grid(row=1, column=3) # # Button(master, text="Browse...", command=self.browse).grid(row=3,column=2) self.makeButton = Button(master, text="Make", command=self.make, state=DISABLED) self.makeButton.grid(row=3,column=3) createToolTip(self.makeButton, "Send a 'make kit' request") # Label(master, text="Status").grid(row=0, column=4, columnspan=2) # # Label(master, text="Command:").grid(row=1, column=4) self.cmdEntry = Entry(master, textvariable=self.cmdVar) self.cmdEntry.grid(row=1, column=5) # # Label(master, text="Status:").grid(row=2, column=4) self.statusEntry = Entry(master, textvariable=self.statusVar) self.statusEntry.grid(row=2, column=5) # # Label(master, text="Heartbeat:").grid(row=3, column=4) self.hbEntry = Entry(master, textvariable=self.hbVar) self.hbEntry.grid(row=3, column=5) # # Label(master, text="Emove:").grid(row=4, column=4) self.emoveEntry = Entry(master, textvariable=self.emoveVar) self.emoveEntry.grid(row=4, column=5) # Entry(master, textvariable=self.diagsVar).grid(row=5, column=0, columnspan=6, sticky=W+E) # Button(master, text="Quit", command=self.quit).grid(row=6,columnspan=6) # self.wsRecvThread = threading.Thread(target=self.wsRecvFunc) self.wsRecvThread.daemon = True self.wsRecvThread.start() # self.emoveRecvThread = threading.Thread(target=self.emoveRecvFunc) self.emoveRecvThread.daemon = True self.emoveRecvThread.start() def sockconnect(self): self.sockdisconnect() try: self.wsSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.wsSock.connect((self.nameVar.get(), int(self.wsPortVar.get()))) self.emoveSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.emoveSock.connect((self.nameVar.get(), int(self.emovePortVar.get()))) except IOError as err: self.wsSock = -1 self.emoveSock = -1 self.diagsVar.set(str(err)) print "kitting_hmi: connect:", str(err) return False self.makeConnected() self.diagsVar.set("") return True def sockdisconnect(self): if self.wsSock != -1: try: self.wsSock.shutdown(socket.SHUT_RDWR) self.wsSock.close() self.diagsVar.set("") except IOError as err: self.diagsVar.set(str(err)) print "kitting_hmi: disconnect:", str(err), self.wsSock if self.emoveSock != -1: try: self.emoveSock.shutdown(socket.SHUT_RDWR) self.emoveSock.close() self.diagsVar.set("") except IOError as err: self.diagsVar.set(str(err)) print "kitting_hmi: disconnect:", str(err), self.emoveSock self.makeDisconnected() return True def dbconnect(self): self.AprsDB = MySQLdbConn() if not self.AprsDB.connect(DB_SERVER, DB_USER, DB_PASSWD, DB_NAME): return False return True def dbdisconnect(self): if self.AprsDB != None: self.AprsDB.disconnect() return True def connect(self): if self.sockconnect() and self.dbconnect(): return True return False def disconnect(self): self.sockdisconnect() self.dbdisconnect() return True def wsRecvFunc(self): while True: if self.wsSock < 0: time.sleep(self.PERIOD) else: try: msg = self.wsSock.recv(self.MSG_LEN) msglist = msg.split() if len(msglist) >= 5: self.cmdVar.set(msglist[0]) self.statusVar.set(msglist[3]) self.hbVar.set(msglist[4]) except IOError as err: self.diagsVar.set(str(err)) print "kitting_hmi: recv:", str(err) def emoveRecvFunc(self): while True: if self.emoveSock < 0: time.sleep(self.PERIOD) else: try: msg = self.emoveSock.recv(self.MSG_LEN) # Should be something like this: # EmoveRun 21 S0 Done 82 /usr/local/iora/PDDLplans/plan.txt place-kit MoveTo msglist = msg.split() if len(msglist) >= 6: stuff = msglist[3] + " " + os.path.basename(msglist[5]) + " " + msglist[6] + " " + msglist[7] self.emoveVar.set(stuff) except IOError as err: self.diagsVar.set(str(err)) print "kitting_hmi: recv:", str(err) def browse(self): try: ret = self.AprsDB.read("select _NAME from KitDesign") except: return False d = BrowseDialog(root, ret) root.wait_window(d.top) if d.get() != None: self.kitVar.set(d.get()) return True def make(self): if self.wsSock < 0: return msg = self.kitVar.get() try: self.wsSock.send(msg) self.diagsVar.set("") except IOError as err: self.diagsVar.set(str(err)) print "kitting_hmi: make:", str(err) def makeConnected(self): self.nameEntry.config(state=DISABLED) self.wsPortEntry.config(state=DISABLED) self.emovePortEntry.config(state=DISABLED) self.connectButton.config(state=DISABLED) self.disconnectButton.config(state=NORMAL) self.makeButton.config(state=NORMAL) self.cmdEntry.config(state=NORMAL) self.statusEntry.config(state=NORMAL) self.hbEntry.config(state=NORMAL) def makeDisconnected(self): self.wsSock = -1 self.emoveSock = -1 self.nameEntry.config(state=NORMAL) self.wsPortEntry.config(state=NORMAL) self.emovePortEntry.config(state=NORMAL) self.connectButton.config(state=NORMAL) self.disconnectButton.config(state=DISABLED) self.makeButton.config(state=DISABLED) self.cmdEntry.config(state=DISABLED) self.statusEntry.config(state=DISABLED) self.hbEntry.config(state=DISABLED) def quit(self): self.disconnect() sys.exit(0)
#!/usr/bin/python import sys from MySQLdbConn import * DB_SERVER = "aprs-dev" DB_USER = "******" DB_PASSWD = "ElsaIsdDb!" DB_NAME = "aprs-dev" AprsDB = MySQLdbConn() if not AprsDB.connect(DB_SERVER, DB_USER, DB_PASSWD, DB_NAME): print "can't connect to database" sys.exit(1) slots = AprsDB.read("select _NAME from Slot") print len(slots), "slots:" for slot in slots: if len(slot) > 0: name = slot[0] try: ret = AprsDB.read( 'select hasPoint_X, hasPoint_Y, hasPoint_Z from Point where _NAME = (select hasPartRefAndPose_Point from PartRefAndPose where _NAME = (select hasSlot_PartRefAndPose from Slot where _NAME = "' + name + '"))' ) if len(ret) > 0: xyz = ret[0] if len(xyz) > 2:
RobotCommandID = 0 RobotStatusID = 0 RobotCommandState = CommandStateType.READY RobotPose = PoseLocationType() GripperCommandID = 0 GripperStatusID = 0 GripperCommandState = CommandStateType.READY def except_info(): exc_type, exc_value = sys.exc_info()[:2] return str(exc_type.__name__) + ": " + str(exc_value) AprsDB = MySQLdbConn() def robot_reader(conn): global DEBUG, RobotCommandID, RobotStatusID, RobotCommandState, RobotPose size = 1024 while True: try: data = conn.recv(size) except: break if not data: break try: tree = ET.parse(StringIO.StringIO(data.rstrip(' \t\n\r\0'))) root = tree.getroot() if root.tag == "CRCLStatus":
ZAXIS = VectorType(0, 0, 1) RobotCommandID = 0 RobotStatusID = 0 RobotCommandState = CommandStateType.READY RobotPose = PoseLocationType() GripperCommandID = 0 GripperStatusID = 0 GripperCommandState = CommandStateType.READY def except_info(): exc_type, exc_value = sys.exc_info()[:2] return str(exc_type.__name__) + ": " + str(exc_value) AprsDB = MySQLdbConn() def robot_reader(conn): global DEBUG, RobotCommandID, RobotStatusID, RobotCommandState, RobotPose size = 1024 while True: try: data = conn.recv(size) except: break if not data: break try: tree = ET.parse(StringIO.StringIO(data.rstrip(' \t\n\r\0'))) root = tree.getroot() if root.tag == "CRCLStatus": for child in root: if child.tag == "CommandStatus": t = child.findtext("CommandID")
#!/usr/bin/python import sys from MySQLdbConn import * DB_SERVER = "aprs-dev" DB_USER = "******" DB_PASSWD = "ElsaIsdDb!" DB_NAME = "aprs-dev" AprsDB = MySQLdbConn() if not AprsDB.connect(DB_SERVER, DB_USER, DB_PASSWD, DB_NAME): print "can't connect to database" sys.exit(1) slots = AprsDB.read("select _NAME from Slot") print len(slots), "slots:" for slot in slots: if len(slot) > 0: name = slot[0] try: ret = AprsDB.read( "select hasPoint_X, hasPoint_Y, hasPoint_Z from Point where _NAME = (select hasPartRefAndPose_Point from PartRefAndPose where _NAME = (select hasSlot_PartRefAndPose from Slot where _NAME = \"" + name + "\"))") if len(ret) > 0: xyz = ret[0] if len(xyz) > 2: x = xyz[0] y = xyz[1]