def __init__(self): # Create an advancedServo object try: self.__advancedServo = AdvancedServo() except RuntimeError as e: print('[ERROR] [ServoControl] Runtime Exception: %s' % e.details) return 1 # set up our event handlers try: # logging example, uncomment to generate a log file #self.__advancedServo.enableLogging(PhidgetLogLevel.PHIDGET_LOG_VERBOSE, 'phidgetlog.log') self.__advancedServo.setOnAttachHandler(self.__attached) self.__advancedServo.setOnDetachHandler(self.__detached) self.__advancedServo.setOnErrorhandler(self.__error) except PhidgetException as e: print('[ERROR] Phidget Exception %i: %s' % (e.code, e.details)) return 1 print('[INFO] [ServoControl] Opening phidget object....') try: self.__advancedServo.openPhidget() except PhidgetException as e: print('[ERROR] Phidget Exception %i: %s' % (e.code, e.details)) return 1 print('[INFO] [ServoControl] Waiting for attach....') try: self.__advancedServo.waitForAttach(10000) except PhidgetException as e: print('[ERROR] Phidget Exception %i: %s' % (e.code, e.details)) try: self.__advancedServo.closePhidget() except PhidgetException as e: print('[ERROR] Phidget Exception %i: %s' % (e.code, e.details)) return 1 return 1 else: # self.__DisplayDeviceInfo() pass
def __openSer(self): try: self._advancedServo = AdvancedServo() except RuntimeError as e: print("Servo - Runtime Exception: %s" % e.details) return False try: self._advancedServo.setOnAttachHandler(self.__onAttachedSer) self._advancedServo.setOnDetachHandler(self.__onDetachedSer) self._advancedServo.setOnErrorhandler(self.__onErrorSer) except PhidgetException as e: print("Servo - Phidget Exception %i: %s" % (e.code, e.details)) return False try: self._advancedServo.openPhidget() except PhidgetException as e: print("Servo - Phidget Exception %i: %s" % (e.code, e.details)) return False self._openSer = True return True
""" #Basic imports from ctypes import * import sys from time import sleep #Phidget specific imports from Phidgets.PhidgetException import PhidgetErrorCodes, PhidgetException from Phidgets.Events.Events import AttachEventArgs, DetachEventArgs, ErrorEventArgs, CurrentChangeEventArgs, PositionChangeEventArgs, VelocityChangeEventArgs from Phidgets.Devices.AdvancedServo import AdvancedServo from Phidgets.Devices.Servo import ServoTypes from Phidgets.Phidget import PhidgetLogLevel #Create an advancedServo object try: advancedServo = AdvancedServo() except RuntimeError as e: print("Runtime Exception: %s" % e.details) print("Exiting....") exit(1) #stack to keep current values in currentList = [0, 0, 0, 0, 0, 0, 0, 0] velocityList = [0, 0, 0, 0, 0, 0, 0, 0] #Information Display Function def DisplayDeviceInfo(): print( "|------------|----------------------------------|--------------|------------|" )
def __init__(self, serial_number, yservo, zservo): self.controller = AdvancedServo() self.serial_number = serial_number self.yservo = yservo self.zservo = zservo
from Phidgets.Devices.AdvancedServo import AdvancedServo from Phidgets.PhidgetException import PhidgetErrorCodes, PhidgetException from Phidgets.Events.Events import AttachEventArgs, DetachEventArgs, ErrorEventArgs, CurrentChangeEventArgs, PositionChangeEventArgs, VelocityChangeEventArgs from Phidgets.Devices.AdvancedServo import AdvancedServo from Phidgets.Devices.Servo import ServoTypes import time import sys import socket ###################### # globals stop = False # Boards servos = [AdvancedServo(), AdvancedServo()] # two boards for the cube serials = [392856, 392822] # Boards IDs actuators = [ 8, 4 ] #8 motors on the first board (top and vertical edges), and 4 motors for the other board # a socket for listening UDP messages and then update actuators address = ('localhost', 6006) sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.bind(address) ###################### # funcs def engage(): """Engage the 8 actuators and set position to 0"""
def AttachAdvancedServo(databasepath, serialNumber): def onAttachHandler(event): logString = "AdvancedServo Attached " + str( event.device.getSerialNum()) DisplayAttachedDeviceInfo(event.device) def onDetachHandler(event): logString = "AdvancedServo Detached " + str( event.device.getSerialNum()) DisplayDetachedDeviceInfo(event.device) event.device.closePhidget() def onErrorHandler(event): logString = "AdvancedServo Error " + str( event.device.getSerialNum()) + ", Error: " + event.description print(logString) DisplayErrorDeviceInfo(event.device) def onServerConnectHandler(event): logString = "AdvancedServo Server Connect " + str( event.device.getSerialNum()) def onServerDisconnectHandler(event): logString = "AdvancedServo Server Disconnect " + str( event.device.getSerialNum()) def currentChangeHandler(event): logString = "AdvancedServo Current Changed" try: conn = sqlite3.connect(databasepath) conn.execute( "INSERT INTO ADVANCEDSERVO_CURRENTCHANGE VALUES(NULL, DateTime('now'), ?, ?, ?)", (event.device.getSerialNum(), event.index, event.current)) conn.commit() conn.close() except sqlite3.Error as e: print "An error occurred:", e.args[0] def positionChangeHandler(event): logString = "AdvancedServo Position Changed" #print(logString) try: conn = sqlite3.connect(databasepath) conn.execute( "INSERT INTO ADVANCEDSERVO_POSITIONCHANGE VALUES(NULL, DateTime('now'), ?, ?, ?)", (event.device.getSerialNum(), event.index, event.position)) conn.commit() conn.close() except sqlite3.Error as e: print "An error occurred:", e.args[0] def velocityChangeHandler(event): logString = "AdvancedServo Velocity Changed" #print(logString) try: conn = sqlite3.connect(databasepath) conn.execute( "INSERT INTO ADVANCEDSERVO_VELOCITYCHANGE VALUES(NULL, DateTime('now'), ?, ?, ?)", (event.device.getSerialNum(), event.index, event.velocity)) conn.commit() conn.close() except sqlite3.Error as e: print "An error occurred:", e.args[0] try: p = AdvancedServo() p.setOnAttachHandler(onAttachHandler) p.setOnDetachHandler(onDetachHandler) p.setOnErrorhandler(onErrorHandler) p.setOnServerConnectHandler(onServerConnectHandler) p.setOnServerDisconnectHandler(onServerDisconnectHandler) p.setOnCurrentChangeHandler(currentChangeHandler) p.setOnPositionChangeHandler(positionChangeHandler) p.setOnVelocityChangeHandler(velocityChangeHandler) p.openPhidget(serialNumber) except PhidgetException as e: print("Phidget Exception %i: %s" % (e.code, e.details)) print("Exiting...") exit(1)
import threading # Multi threading from Phidgets.Devices.MotorControl import MotorControl # Motor control from Phidgets.Devices.AdvancedServo import AdvancedServo # Servo control from Phidgets.Devices.Servo import ServoTypes # Servo type setting import pygame # General Pygame imports from pygame import init as startPygame # Initialize imported Pygame modules from pygame import joystick, locals # Logitech attack 3 joystick support import tornado.web # Tornado web framework import tornado.ioloop # I/O event loop for non-blocking sockets import tornado.websocket # Bi directional messages from server (this) to client (webpage) # Motors and servo control boards m1 = MotorControl() m2 = MotorControl() m3 = MotorControl() s1 = AdvancedServo() # Websocket list for storing values wss = [] # Set motor acceleration def setAllMotorsAcceleration(v): m1.setAcceleration(0, v) m1.setAcceleration(1, v) m2.setAcceleration(0, v) m2.setAcceleration(1, v) m3.setAcceleration(0, v) # Tornado website application settings
servos = nServos outputs = nOutputs return True from Phidgets.PhidgetException import * from Phidgets.Events.Events import * from Phidgets.Manager import Manager from Phidgets.Phidget import PhidgetLogLevel from Phidgets.Devices.MotorControl import MotorControl motorC = MotorControl() from Phidgets.Devices.AdvancedServo import AdvancedServo servoC = AdvancedServo() from Phidgets.Devices.InterfaceKit import InterfaceKit interC = InterfaceKit() def motorInpChange(e): inp = e.state print('[M] Motor Input: ' + str(inp)) def motorCurChange(e): cur = e.current print('[M] Motor Cur: ' + str(cur))