from ctypes import * import time, platform def enum(**enums): return type('Enum', (), enums) EndType = enum(EndTypeCustom=0, EndTypeSuctionCup=1, EndTypeGripper=2, EndTypeLaser=3, EndTypePen = 4, EndTypeMax=5) # For EndTypeParams class EndTypeParams(Structure): _pack_ = 1 _fields_ = [ ("xBias", c_float), ("yBias", c_float), ("zBias", c_float) ] class Pose(Structure): _pack_ = 1 _fields_ = [ ("x", c_float), ("y", c_float), ("z", c_float), ("rHead", c_float), ("joint1Angle", c_float), ("joint2Angle", c_float), ("joint3Angle", c_float), ("joint4Angle", c_float) ] class Kinematics(Structure): _pack_ = 1 _fields_ = [ ("velocity", c_float), ("acceleration", c_float) ] class AlarmsState(Structure): _pack_ = 1 _fields_ = [ ("alarmsState", c_int32) ] class HOMEParams(Structure): _pack_ = 1 _fields_ = [ ("x", c_float), ("y", c_float), ("z", c_float), ("r", c_float) ] class HOMECmd(Structure): _pack_ = 1 _fields_ = [ ("temp", c_float) ] class EMotor(Structure): _pack_ = 1 _fields_ = [ ("index", c_byte), ("isEnabled", c_byte), ("speed", c_float) ] class EMotorS(Structure): _pack_ = 1 _fields_ = [ ("index", c_byte), ("isEnabled", c_byte), ("deltaPulse", c_int) ] ################## Arm orientation ################## ArmOrientation = enum( LeftyArmOrientation=0, RightyArmOrientation=1) ################## ################## class JOGJointParams(Structure): _pack_ = 1 _fields_ = [ ("joint1Velocity", c_float), ("joint2Velocity", c_float), ("joint3Velocity", c_float), ("joint4Velocity", c_float), ("joint1Acceleration", c_float), ("joint2Acceleration", c_float), ("joint3Acceleration", c_float), ("joint4Acceleration", c_float) ] class JOGCoordinateParams(Structure): _pack_ = 1 _fields_ = [ ("xVelocity", c_float), ("yVelocity", c_float), ("zVelocity", c_float), ("rVelocity", c_float), ("xAcceleration", c_float), ("yAcceleration", c_float), ("zAcceleration", c_float), ("rAcceleration", c_float) ] class JOGCommonParams(Structure): _pack_ = 1 _fields_ = [ ("velocityRatio", c_float), ("accelerationRatio", c_float) ] class JOGLParams(Structure): _pack_ = 1 _fields_ = [ ("velocity", c_float), ("acceleration", c_float) ] JC = enum(JogIdle=0, JogAPPressed=1, JogANPressed=2, JogBPPressed=3, JogBNPressed=4, JogCPPressed=5, JogCNPressed=6, JogDPPressed=7, JogDNPressed=8, JogEPPressed=9, JogENPressed=10) class JOGCmd(Structure): _pack_ = 1 _fields_ = [ ("isJoint", c_byte), ("cmd", c_byte) ] ################## ################## class PTPJointParams(Structure): _fields_ = [ ("joint1Velocity", c_float), ("joint2Velocity", c_float), ("joint3Velocity", c_float), ("joint4Velocity", c_float), ("joint1Acceleration", c_float), ("joint2Acceleration", c_float), ("joint3Acceleration", c_float), ("joint4Acceleration", c_float) ] class PTPCoordinateParams(Structure): _fields_ = [ ("xyzVelocity", c_float), ("rVelocity", c_float), ("xyzAcceleration", c_float), ("rAcceleration", c_float) ] class PTPLParams(Structure): _pack_ = 1 _fields_ = [ ("velocity", c_float), ("acceleration", c_float) ] class PTPJumpParams(Structure): _pack_ = 1 _fields_ = [ ("jumpHeight", c_float), ("zLimit", c_float) ] class PTPCommonParams(Structure): _pack_ = 1 _fields_ = [ ("velocityRatio", c_float), ("accelerationRatio", c_float) ] PTPMode = enum( PTPJUMPXYZMode=0, PTPMOVJXYZMode=1, PTPMOVLXYZMode=2, PTPJUMPANGLEMode=3, PTPMOVJANGLEMode=4, PTPMOVLANGLEMode=5, PTPMOVJANGLEINCMode=6, PTPMOVLXYZINCMode=7, PTPMOVJXYZINCMode=8, PTPJUMPMOVLXYZMode=9) InputPin = enum( InputPinNone=0, InputPin1=1, InputPin2=2, InputPin3=3, InputPin4=4, InputPin5=5, InputPin6=6, InputPin7=7, InputPin8=8) InputLevel = enum(InputLevelBoth=0, InputLevelLow=1, InputLevelHigh=2) OutputPin = enum( SIGNALS_O1=1, SIGNALS_O2=2, SIGNALS_O3=3, SIGNALS_O4=4, SIGNALS_O5=5, SIGNALS_O6=6, SIGNALS_O7=7, SIGNALS_O8=8) class PTPCmd(Structure): _pack_ = 1 _fields_ = [ ("ptpMode", c_byte), ("x", c_float), ("y", c_float), ("z", c_float), ("rHead", c_float), ("gripper", c_float) ] class PTPWithLCmd(Structure): _pack_ = 1 _fields_ = [ ("ptpMode", c_byte), ("x", c_float), ("y", c_float), ("z", c_float), ("rHead", c_float), ("l", c_float), ("gripper", c_float) ] ################## Continuous path ################## class CPParams(Structure): _pack_ = 1 _fields_ = [ ("planAcc", c_float), ("juncitionVel", c_float), ("acc", c_float), ("realTimeTrack", c_byte) ] ContinuousPathMode = enum( CPRelativeMode=0, CPAbsoluteMode=1) class CPCmd(Structure): _pack_ = 1 _fields_ = [ ("cpMode", c_byte), ("x", c_float), ("y", c_float), ("z", c_float), ("velocity", c_float) ] ################## :ARC ################## class ARCPoint(Structure): _pack_ = 1 _fields_ = [ ("x", c_float), ("y", c_float), ("z", c_float), ("rHead", c_float) ] class ARCParams(Structure): _pack_ = 1 _fields_ = [ ("xyzVelocity", c_float), ("rVelocity", c_float), ("xyzAcceleration", c_float), ("rAcceleration", c_float) ] class ARCCmd(Structure): _pack_ = 1 _fields_ = [ ("cirPoint", ARCPoint), ("toPoint", ARCPoint) ] ################## User parameters ################## class WAITParams(Structure): _pack_ = 1 _fields_ = [ ("unitType", c_byte) ] class WAITCmd(Structure): _pack_ = 1 _fields_ = [ ("waitTime", c_uint32) ] TRIGMode = enum( TRIGInputIOMode = 0, TRIGADCMode=1) TRIGInputIOCondition = enum( TRIGInputIOEqual = 0, TRIGInputIONotEqual=1) TRIGADCCondition = enum( TRIGADCLT = 0, TRIGADCLE=1, TRIGADCGE = 2, TRIGADCGT=3) class TRIGCmd(Structure): _pack_ = 1 _fields_ = [ ("address", c_byte), ("mode", c_byte), ("condition", c_byte), ("threshold", c_uint16) ] GPIOType = enum( GPIOTypeDO = 1, GPIOTypePWM=2, GPIOTypeDI=3, GPIOTypeADC=4) class IOMultiplexing(Structure): _pack_ = 1 _fields_ = [ ("address", c_byte), ("multiplex", c_byte) ] class IODO(Structure): _pack_ = 1 _fields_ = [ ("address", c_byte), ("level", c_byte) ] class IOPWM(Structure): _pack_ = 1 _fields_ = [ ("address", c_byte), ("frequency", c_float), ("dutyCycle", c_float) ] class IODI(Structure): _pack_ = 1 _fields_ = [ ("address", c_byte), ("level", c_byte) ] class IOADC(Structure): _pack_ = 1 _fields_ = [ ("address", c_byte), ("value", c_int) ] class UserParams(Structure): _pack_ = 1 _fields_ = [ ("params1", c_float), ("params2", c_float), ("params3", c_float), ("params4", c_float), ("params5", c_float), ("params6", c_float), ("params7", c_float), ("params8", c_float) ] ZDFCalibStatus = enum( ZDFCalibNotFinished=0, ZDFCalibFinished=1) """ WIFI JoMar 20160906 """ class WIFIIPAddress(Structure): _pack_ = 1 _fields_ = [ ("dhcp", c_byte), ("addr1", c_byte), ("addr2", c_byte), ("addr3", c_byte), ("addr4", c_byte), ] class WIFINetmask(Structure): _pack_ = 1 _fields_ = [ ("addr1", c_byte), ("addr2", c_byte), ("addr3", c_byte), ("addr4", c_byte), ] class WIFIGateway(Structure): _pack_ = 1 _fields_ = [ ("addr1", c_byte), ("addr2", c_byte), ("addr3", c_byte), ("addr4", c_byte), ] class WIFIDNS(Structure): _pack_ = 1 _fields_ = [ ("addr1", c_byte), ("addr2", c_byte), ("addr3", c_byte), ("addr4", c_byte), ] ################## API result ################## DobotConnect = enum( DobotConnect_NoError=0, DobotConnect_NotFound=1, DobotConnect_Occupied=2) DobotCommunicate = enum( DobotCommunicate_NoError=0, DobotCommunicate_BufferFull=1, DobotCommunicate_Timeout=2) ################## API func ################## def load(): if platform.system() == "Windows": return CDLL("DobotDll.dll", RTLD_GLOBAL) elif platform.system() == "Darwin" : return CDLL("libDobotDll.dylib", RTLD_GLOBAL) else: return cdll.loadLibrary("libDobotDll.so") def dSleep(ms): time.sleep(ms / 1000) def gettime(): return time.time() def output(str): #print(str) #sys.stdout.flush() pass def SearchDobot(api, maxLen=1000): szPara = create_string_buffer(1000) #((len(str(maxLen)) + 4) * maxLen + 10) l = api.SearchDobot(szPara, maxLen) if l == 0: return [] ret = szPara.value.decode("utf-8") return ret.split(" ") def ConnectDobot(api, portName, baudrate): szPara = create_string_buffer(100) szPara.raw = portName.encode("utf-8") fwType = create_string_buffer(100) version = create_string_buffer(100) result = api.ConnectDobot(szPara, baudrate, fwType, version) return [result, fwType.value.decode("utf-8"), version.value.decode("utf-8")] def DisconnectDobot(api): api.DisconnectDobot() def PeriodicTask(api): api.PeriodicTask() def SetCmdTimeout(api, times): api.SetCmdTimeout(times) def DobotExec(api): return api.DobotExec() def GetQueuedCmdCurrentIndex(api): queuedCmdIndex = c_uint64(0) while(True): result = api.GetQueuedCmdCurrentIndex(byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(2) continue break return [queuedCmdIndex.value] def SetQueuedCmdStartExec(api): while(True): result = api.SetQueuedCmdStartExec() if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break def SetQueuedCmdStopExec(api): while(True): result = api.SetQueuedCmdStopExec() if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break def SetQueuedCmdForceStopExec(api): while(True): result = api.SetQueuedCmdForceStopExec() if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break def SetQueuedCmdStartDownload(api, totalLoop, linePerLoop): while(True): result = api.SetQueuedCmdStartDownload(totalLoop, linePerLoop) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break def SetQueuedCmdStopDownload(api): while(True): result = api.SetQueuedCmdStopDownload() if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break def SetQueuedCmdClear(api): return api.SetQueuedCmdClear() def SetDeviceSN(api, str): szPara = create_string_buffer(25) szPara.raw = str.encode("utf-8") while(True): result = api.SetDeviceSN(szPara) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break def GetDeviceSN(api): szPara = create_string_buffer(25) while(True): result = api.GetDeviceSN(szPara, 25) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break ret = szPara.value.decode("utf-8") output('GetDeviceSN: ' + ret) return ret def SetDeviceName(api, str): szPara = create_string_buffer(66) szPara.raw = str.encode("utf-8") while(True): result = api.SetDeviceName(szPara) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break def GetDeviceName(api): szPara = create_string_buffer(66) while(True): result = api.GetDeviceName(szPara, 100) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break ret = szPara.value.decode("utf-8") output('GetDeviceName: ' + ret) return ret def GetDeviceVersion(api): majorVersion = c_byte(0) minorVersion = c_byte(0) revision = c_byte(0) while(True): result = api.GetDeviceVersion(byref(majorVersion), byref(minorVersion), byref(revision)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetDeviceVersion: V%d.%d.%d' %(majorVersion.value, minorVersion.value, revision.value)) return [majorVersion.value, minorVersion.value, revision.value] def SetDeviceWithL(api, isWithL): cIsWithL = c_bool(isWithL) while(True): result = api.SetDeviceWithL(cIsWithL) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break def GetDeviceWithL(api): isWithL = c_bool(False) while(True): result = api.GetDeviceWithL(byref(isWithL)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return isWithL.value def ResetPose(api, manual, rearArmAngle, frontArmAngle): c_rearArmAngle = c_float(rearArmAngle) c_frontArmAngle = c_float(frontArmAngle) while(True): result = api.ResetPose(manual, c_rearArmAngle, c_frontArmAngle) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break def GetPose(api): pose = Pose() while(True): result = api.GetPose(byref(pose)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetPose: %.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f' %(pose.x,pose.y,pose.z,pose.rHead, pose.joint1Angle,pose.joint2Angle,pose.joint3Angle,pose.joint4Angle)) return [pose.x, pose.y, pose.z,pose.rHead, pose.joint1Angle, pose.joint2Angle, pose.joint3Angle, pose.joint4Angle] def GetPoseL(api): l = c_float(0) while(True): result = api.GetPoseL(byref(l)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [l.value] def GetKinematics(api): kinematics = Kinematics() while(True): result = api.GetKinematics(byref(kinematics)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetKinematics: velocity=%.4f acceleration=%.4f' %(kinematics.velocity, kinematics.acceleration)) return [kinematics.velocity, kinematics.acceleration] def GetAlarmsState(api, maxLen=1000): alarmsState = create_string_buffer(maxLen) #alarmsState = c_byte(0) len = c_int(0) while(True): result = api.GetAlarmsState(alarmsState, byref(len), maxLen) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break #output('GetAlarmsState: alarmsState=%.4f len=%.4f' %(alarmsState.value, len.value)) return [alarmsState.raw, len.value] def ClearAllAlarmsState(api): while(True): result = api.ClearAllAlarmsState() if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break def GetUserParams(api): param = UserParams() while(True): result = api.GetUserParams(byref(param)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetUserParams: %.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f' %(param.params1,param.params2,param.params3,param.params4,param.params5,param.params6,param.params7,param.params8)) return [param.params1,param.params2,param.params3,param.params4,param.params5,param.params6,param.params7,param.params8] def SetHOMEParams(api, x, y, z, r, isQueued=0): param = HOMEParams() param.x = x param.y = y param.z = z param.r = r queuedCmdIndex = c_uint64(0) while(True): result = api.SetHOMEParams(byref(param), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def GetHOMEParams(api): param = HOMEParams() while(True): result = api.GetHOMEParams(byref(param)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetUserParams: %.4f' %(param.temp)) return [param.temp] def SetHOMECmd(api, temp, isQueued=0): cmd = HOMECmd() cmd.temp = temp queuedCmdIndex = c_uint64(0) while(True): result = api.SetHOMECmd(byref(cmd), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def SetArmOrientation(api, armOrientation, isQueued=0): queuedCmdIndex = c_uint64(0) while(True): result = api.SetArmOrientation(armOrientation, isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def GetArmOrientation(api): armOrientation = c_int32(0) while(True): result = api.GetArmOrientation(byref(armOrientation)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetArmOrientation: armOrientation=%d' %(armOrientation.value)) return [armOrientation.value] def SetHHTTrigMode(api, hhtTrigMode): while(True): result = api.SetHHTTrigMode(hhtTrigMode) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break def GetHHTTrigMode(api): hhtTrigMode = c_int(0) while(True): result = api.GetHHTTrigMode(byref(hhtTrigMode)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [hhtTrigMode.value] def SetHHTTrigOutputEnabled(api, isEnabled): while(True): result = api.SetHHTTrigOutputEnabled(isEnabled) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break def GetHHTTrigOutputEnabled(api): isEnabled = c_int32(0) while(True): result = api.GetHHTTrigOutputEnabled(byref(isEnabled)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [isEnabled.value] def GetHHTTrigOutput(api): isAvailable = c_int32(0) result = api.GetHHTTrigOutput(byref(isAvailable)) if result != DobotCommunicate.DobotCommunicate_NoError or isAvailable.value == 0: return False return True def SetEndEffectorParams(api, xBias, yBias, zBias, isQueued=0): param = EndTypeParams() param.xBias = xBias param.yBias = yBias param.zBias = zBias queuedCmdIndex = c_uint64(0) while(True): result = api.SetEndEffectorParams(byref(param), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def GetEndEffectorParams(api): param = EndTypeParams() while(True): result = api.GetEndEffectorParams(byref(param)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetEndEffectorParams: xBias=%.4f yBias=%.4f zBias=%.4f' %(param.xBias, param.yBias, param.zBias)) return [param.xBias, param.yBias, param.zBias] def SetEndEffectorLaser(api, enableCtrl, on, isQueued=0): queuedCmdIndex = c_uint64(0) while(True): result = api.SetEndEffectorLaser(enableCtrl, on, isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def GetEndEffectorLaser(api): isCtrlEnabled = c_int(0) isOn = c_int(0) while(True): result = api.GetEndEffectorLaser(byref(isCtrlEnabled), byref(isOn)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetEndEffectorLaser: isCtrlEnabled=%d, isOn=%4f' %(isCtrlEnabled.value, isOn.value)) return [isCtrlEnabled.value, isOn.value] def SetEndEffectorSuctionCup(api, enableCtrl, on, isQueued=0): queuedCmdIndex = c_uint64(0) while(True): result = api.SetEndEffectorSuctionCup(enableCtrl, on, isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def GetEndEffectorSuctionCup(api): enableCtrl = c_int(0) isOn = c_int(0) while(True): result = api.GetEndEffectorSuctionCup(byref(enableCtrl), byref(isOn)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetEndEffectorSuctionCup: isOn=%.4f' %(isOn.value)) return [isOn.value] def SetEndEffectorGripper(api, enableCtrl, on, isQueued=0): queuedCmdIndex = c_uint64(0) while(True): result = api.SetEndEffectorGripper(enableCtrl, on, isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def GetEndEffectorGripper(api): enableCtrl = c_int(0) isOn = c_int(0) while(True): result = api.GetEndEffectorGripper(byref(enableCtrl), byref(isOn)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetEndEffectorGripper: isOn=%.4f' %(isOn.value)) return [isOn.value] def SetJOGJointParams(api, j1Velocity, j1Acceleration, j2Velocity, j2Acceleration, j3Velocity, j3Acceleration, j4Velocity, j4Acceleration, isQueued=0): jogParam = JOGJointParams() jogParam.joint1Velocity = j1Velocity jogParam.joint1Acceleration = j1Acceleration jogParam.joint2Velocity = j2Velocity jogParam.joint2Acceleration = j2Acceleration jogParam.joint3Velocity = j3Velocity jogParam.joint3Acceleration = j3Acceleration jogParam.joint4Velocity = j4Velocity jogParam.joint4Acceleration = j4Acceleration queuedCmdIndex = c_uint64(0) while(True): result = api.SetJOGJointParams(byref(jogParam), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def GetJOGJointParams(api): param = JOGJointParams() while(True): result = api.GetJOGJointParams(byref(param)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetJOGJointParams: %.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f' %(param.joint1Velocity, param.joint1Acceleration, param.joint2Velocity, param.joint2Acceleration, param.joint3Velocity, param.joint3Acceleration, param.joint4Velocity, param.joint4Acceleration)) return [param.joint1Velocity, param.joint1Acceleration, param.joint2Velocity, param.joint2Acceleration, param.joint3Velocity, param.joint3Acceleration, param.joint4Velocity, param.joint4Acceleration] def SetJOGCoordinateParams(api, xVelocity, xAcceleration, yVelocity, yAcceleration, zVelocity, zAcceleration, rVelocity, rAcceleration, isQueued=0): param = JOGCoordinateParams() param.xVelocity = xVelocity param.xAcceleration = xAcceleration param.yVelocity = yVelocity param.yAcceleration = yAcceleration param.zVelocity = zVelocity param.zAcceleration = zAcceleration param.rVelocity = rVelocity param.rAcceleration = rAcceleration queuedCmdIndex = c_uint64(0) while(True): result = api.SetJOGCoordinateParams(byref(param), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def GetJOGCoordinateParams(api): param = JOGCoordinateParams() while(True): result = api.GetJOGCoordinateParams(byref(param)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetJOGCoordinateParams: %.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f' %(param.xVelocity, param.xAcceleration, param.yVelocity, param.yVelocity, param.zVelocity, param.zAcceleration, param.rVelocity, param.rAcceleration)) return [param.xVelocity, param.xAcceleration, param.yVelocity, param.yVelocity, param.zVelocity, param.zAcceleration, param.rVelocity, param.rAcceleration] def SetJOGLParams(api, velocity, acceleration, isQueued=0): param = JOGLParams() param.velocity = velocity param.acceleration = acceleration queuedCmdIndex = c_uint64(0) while(True): result = api.SetJOGLParams(byref(param), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def GetJOGLParams(api): param = JOGLParams() while(True): result = api.GetJOGLParams(byref(param)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [param.velocity, param.acceleration] def SetJOGCommonParams(api, value_velocityratio, value_accelerationratio, isQueued=0): param = JOGCommonParams() param.velocityRatio = value_velocityratio param.accelerationRatio = value_accelerationratio queuedCmdIndex = c_uint64(0) while(True): result = api.SetJOGCommonParams(byref(param), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def GetJOGCommonParams(api): param = JOGCommonParams() while(True): result = api.GetJOGCommonParams(byref(param)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetJOGCommonParams: velocityRatio=%.4f accelerationRatio=%.4f' %(param.velocityRatio, param.accelerationRatio)) return [param.velocityRatio, param.accelerationRatio] def SetJOGCmd(api, isJoint, cmd, isQueued=0): cmdParam = JOGCmd() cmdParam.isJoint = isJoint cmdParam.cmd = cmd queuedCmdIndex = c_uint64(0) while(True): result = api.SetJOGCmd(byref(cmdParam), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def SetPTPJointParams(api, j1Velocity, j1Acceleration, j2Velocity, j2Acceleration, j3Velocity, j3Acceleration, j4Velocity, j4Acceleration, isQueued=0): pbParam = PTPJointParams() pbParam.joint1Velocity = j1Velocity pbParam.joint1Acceleration = j1Acceleration pbParam.joint2Velocity = j2Velocity pbParam.joint2Acceleration = j2Acceleration pbParam.joint3Velocity = j3Velocity pbParam.joint3Acceleration = j3Acceleration pbParam.joint4Velocity = j4Velocity pbParam.joint4Acceleration = j4Acceleration queuedCmdIndex = c_uint64(0) while(True): result = api.SetPTPJointParams(byref(pbParam), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def GetPTPJointParams(api): pbParam = PTPJointParams() while(True): result = api.GetPTPJointParams(byref(pbParam)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetPTPJointParams: %.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f' %(pbParam.joint1Velocity,pbParam.joint1Acceleration,pbParam.joint2Velocity,pbParam.joint2Acceleration,pbParam.joint3Velocity,pbParam.joint3Acceleration,pbParam.joint4Velocity,pbParam.joint4Acceleration)) return [pbParam.joint1Velocity,pbParam.joint1Acceleration,pbParam.joint2Velocity,pbParam.joint2Acceleration,pbParam.joint3Velocity,pbParam.joint3Acceleration,pbParam.joint4Velocity,pbParam.joint4Acceleration] def SetPTPCoordinateParams(api, xyzVelocity, xyzAcceleration, rVelocity, rAcceleration, isQueued=0): pbParam = PTPCoordinateParams() pbParam.xyzVelocity = xyzVelocity pbParam.rVelocity = rVelocity pbParam.xyzAcceleration = xyzAcceleration pbParam.rAcceleration = rAcceleration queuedCmdIndex = c_uint64(0) while(True): result = api.SetPTPCoordinateParams(byref(pbParam), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def GetPTPCoordinateParams(api): pbParam = PTPCoordinateParams() while(True): result = api.GetPTPCoordinateParams(byref(pbParam)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetPTPCoordinateParams: xyzVelocity=%.4f rVelocity=%.4f xyzAcceleration=%.4f rAcceleration=%.4f' %(pbParam.xyzVelocity, pbParam.rVelocity, pbParam.xyzAcceleration, pbParam.rAcceleration)) return [pbParam.xyzVelocity, pbParam.rVelocity, pbParam.xyzAcceleration, pbParam.rAcceleration] def SetPTPLParams(api, velocity, acceleration, isQueued=0): param = PTPLParams() param.velocity = velocity param.acceleration = acceleration queuedCmdIndex = c_uint64(0) while(True): result = api.SetPTPLParams(byref(param), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def GetPTPLParams(api): param = PTPLParams() while(True): result = api.GetPTPLParams(byref(param)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [param.velocity, param.acceleration] def SetPTPJumpParams(api, jumpHeight, zLimit, isQueued=0): pbParam = PTPJumpParams() pbParam.jumpHeight = jumpHeight pbParam.zLimit = zLimit queuedCmdIndex = c_uint64(0) while(True): result = api.SetPTPJumpParams(byref(pbParam), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def GetPTPJumpParams(api): pbParam = PTPJumpParams() while(True): result = api.GetPTPJumpParams(byref(pbParam)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetPTPJumpParams: jumpHeight=%.4f zLimit=%.4f' %(pbParam.jumpHeight, pbParam.zLimit)) return [pbParam.jumpHeight, pbParam.zLimit] def SetPTPCommonParams(api, velocityRatio, accelerationRatio, isQueued=0): pbParam = PTPCommonParams() pbParam.velocityRatio = velocityRatio pbParam.accelerationRatio = accelerationRatio queuedCmdIndex = c_uint64(0) while(True): result = api.SetPTPCommonParams(byref(pbParam), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def GetPTPCommonParams(api): pbParam = PTPCommonParams() while(True): result = api.GetPTPCommonParams(byref(pbParam )) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetPTPCommonParams: velocityRatio=%.4f accelerationRatio=%.4f' %(pbParam.velocityRatio, pbParam.accelerationRatio)) return [pbParam.velocityRatio, pbParam.accelerationRatio] def SetPTPCmd(api, ptpMode, x, y, z, rHead, isQueued=0): cmd = PTPCmd() cmd.ptpMode=ptpMode cmd.x=x cmd.y=y cmd.z=z cmd.rHead=rHead queuedCmdIndex = c_uint64(0) while(True): result = api.SetPTPCmd(byref(cmd), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(2) continue break return [queuedCmdIndex.value] def SetPTPWithLCmd(api, ptpMode, x, y, z, rHead, l, isQueued=0): cmd = PTPWithLCmd() cmd.ptpMode=ptpMode cmd.x=x cmd.y=y cmd.z=z cmd.rHead=rHead cmd.l = l queuedCmdIndex = c_uint64(0) while(True): result = api.SetPTPWithLCmd(byref(cmd), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(2) continue break return [queuedCmdIndex.value] def SetCPParams(api, planAcc, juncitionVel, acc, realTimeTrack = 0, isQueued=0): parm = CPParams() parm.planAcc = planAcc parm.juncitionVel = juncitionVel parm.acc = acc parm.realTimeTrack = realTimeTrack queuedCmdIndex = c_uint64(0) while(True): result = api.SetCPParams(byref(parm), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def GetCPParams(api): parm = CPParams() while(True): result = api.GetCPParams(byref(parm)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetCPParams: planAcc=%.4f juncitionVel=%.4f acc=%.4f' %(arm.planAcc, parm.juncitionVel, parm.acc)) return [parm.planAcc, parm.juncitionVel, parm.acc] def SetCPCmd(api, cpMode, x, y, z, velocity, isQueued=0): cmd = CPCmd() cmd.cpMode = cpMode cmd.x = x cmd.y = y cmd.z = z cmd.velocity = velocity queuedCmdIndex = c_uint64(0) while(True): result = api.SetCPCmd(byref(cmd), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(2) continue break return [queuedCmdIndex.value] def SetCPLECmd(api, cpMode, x, y, z, power, isQueued=0): cmd = CPCmd() cmd.cpMode = cpMode cmd.x = x cmd.y = y cmd.z = z cmd.velocity = power queuedCmdIndex = c_uint64(0) while(True): result = api.SetCPLECmd(byref(cmd), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(2) continue break return [queuedCmdIndex.value] def SetARCParams(api, xyzVelocity, rVelocity, xyzAcceleration, rAcceleration, isQueued=0): param = ARCParams() param.xyzVelocity = xyzVelocity param.rVelocity = rVelocity param.xyzAcceleration = xyzAcceleration param.rAcceleration = rAcceleration queuedCmdIndex = c_uint64(0) while(True): result = api.SetARCParams(byref(param), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def GetARCParams(api): parm = ARCParams() while(True): result = api.GetARCParams(byref(parm)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetARCParams: xyzVelocity=%.4f,rVelocity=%.4f,xyzAcceleration=%.4f,rAcceleration=%.4f' %(parm.xyzVelocity, parm.rVelocity, parm.xyzAcceleration, parm.rAcceleration)) return [parm.xyzVelocity, parm.rVelocity, parm.xyzAcceleration, parm.rAcceleration] def SetARCCmd(api, cirPoint, toPoint, isQueued=0): cmd = ARCCmd() cmd.cirPoint.x = cirPoint[0];cmd.cirPoint.y = cirPoint[1];cmd.cirPoint.z = cirPoint[2];cmd.cirPoint.rHead = cirPoint[3] cmd.toPoint.x = toPoint[0];cmd.toPoint.y = toPoint[1];cmd.toPoint.z = toPoint[2];cmd.toPoint.rHead = toPoint[3] queuedCmdIndex = c_uint64(0) while(True): result = api.SetARCCmd(byref(cmd), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def SetWAITCmd(api, waitTime, isQueued=0): param = WAITCmd() param.waitTime = int(waitTime * 1000) queuedCmdIndex = c_uint64(0) while(True): result = api.SetWAITCmd(byref(param), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(100) continue break return [queuedCmdIndex.value] def SetTRIGCmd(api, address, mode, condition, threshold, isQueued=0): param = TRIGCmd() param.address = address param.mode = mode param.condition = condition param.threshold = threshold queuedCmdIndex = c_uint64(0) while(True): result = api.SetTRIGCmd(byref(param), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def SetIOMultiplexing(api, address, multiplex, isQueued=0): param = IOMultiplexing() param.address = address param.multiplex = multiplex queuedCmdIndex = c_uint64(0) while(True): result = api.SetIOMultiplexing(byref(param), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def GetIOMultiplexing(api, addr): param = IOMultiplexing() param.address = addr while(True): result = api.GetIOMultiplexing(byref(param)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetIOMultiplexing: address=%.4f multiplex=%.4f' %(param.address, param.multiplex)) return [param.multiplex] def SetIODO(api, address, level, isQueued=0): param = IODO() param.address = address param.level = level queuedCmdIndex = c_uint64(0) while(True): result = api.SetIODO(byref(param), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def GetIODO(api, addr): param = IODO() param.address = addr while(True): result = api.GetIODO(byref(param)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetIODO: address=%.4f level=%.4f' %(param.address, param.level)) return [param.level] def SetIOPWM(api, address, frequency, dutyCycle, isQueued=0): param = IOPWM() param.address = address param.frequency = frequency param.dutyCycle = dutyCycle queuedCmdIndex = c_uint64(0) while(True): result = api.SetIOPWM(byref(param), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def GetIOPWM(api, addr): param = IOPWM() param.address = addr while(True): result = api.GetIOPWM(byref(param)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetIOPWM: address=%.4f frequency=%.4f dutyCycle=%.4f' %(param.address, param.frequency, param.dutyCycle)) return [param.frequency, param.dutyCycle] def GetIODI(api, addr): param = IODI() param.address = addr while(True): result = api.GetIODI(byref(param)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetIODI: address=%d level=%d' %(param.address, param.level)) return [param.level] def SetEMotor(api, index, isEnabled, speed, isQueued=0): emotor = EMotor() emotor.index = index emotor.isEnabled = isEnabled emotor.speed = speed queuedCmdIndex = c_uint64(0) while(True): result = api.SetEMotor(byref(emotor), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def SetEMotorS(api, index, isEnabled, deltaPulse, isQueued=0): emotor = EMotor() emotor.index = index emotor.isEnabled = isEnabled emotor.deltaPulse = deltaPulse queuedCmdIndex = c_uint64(0) while(True): result = api.SetEMotor(byref(emotor), isQueued, byref(queuedCmdIndex)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [queuedCmdIndex.value] def GetIOADC(api, addr): param = IOADC() param.address = addr while(True): result = api.GetIOADC(byref(param)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetIOADC: address=%.4f value=%.4f' %(param.address, param.value)) return [param.value] def SetAngleSensorStaticError(api, rearArmAngleError, frontArmAngleError): c_rearArmAngleError = c_float(rearArmAngleError) c_frontArmAngleError = c_float(frontArmAngleError) while(True): result = api.SetAngleSensorStaticError(c_rearArmAngleError, c_frontArmAngleError) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break def GetAngleSensorStaticError(api): rearArmAngleError = c_float(0) frontArmAngleError = c_float(0) while(True): result = api.GetAngleSensorStaticError(byref(rearArmAngleError), byref(frontArmAngleError)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetAngleSensorStaticError: rearArmAngleError=%.4f,frontArmAngleError=%.4f' %(rearArmAngleError.value, frontArmAngleError.value)) return [rearArmAngleError.value, frontArmAngleError.value] def SetAngleSensorCoef(api, rearArmAngleCoef, frontArmAngleCoef): c_rearArmAngleCoef = c_float(rearArmAngleCoef) c_frontArmAngleCoef = c_float(frontArmAngleCoef) while(True): result = api.SetAngleSensorCoef(c_rearArmAngleCoef, c_frontArmAngleCoef) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break def GetAngleSensorCoef(api): rearArmAngleCoef = c_float(0) frontArmAngleCoef = c_float(0) while(True): result = api.GetAngleSensorCoef(byref(rearArmAngleCoef), byref(frontArmAngleCoef)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetAngleSensorStaticCoef: rearArmAngleCoef=%.4f,frontArmAngleCoef=%.4f' %(rearArmAngleCoef.value, frontArmAngleCoef.value)) return [rearArmAngleCoef.value, frontArmAngleCoef.value] def SetBaseDecoderStaticError(api, baseDecoderError): c_baseDecoderError = c_float(baseDecoderError) while(True): result = api.SetBaseDecoderStaticError(c_baseDecoderError) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break def GetBaseDecoderStaticError(api): baseDecoderError = c_float(0) while(True): result = api.GetBaseDecoderStaticError(byref(baseDecoderError)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetBaseDecoderStaticError: baseDecoderError=%.4f' %(baseDecoderError.value)) return [baseDecoderError.value] """ WIFI JoMar 20160906 """ def GetWIFIConnectStatus(api): isConnected = c_bool(0) while(True): result = api.GetWIFIConnectStatus(byref(isConnected)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetWIFIConnectStatus: isConnected=%d' %(isConnected.value)) return isConnected.value def SetWIFIConfigMode(api, enable): while(True): result = api.SetWIFIConfigMode(enable) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break def GetWIFIConfigMode(api): isEnabled = c_bool(0) while(True): result = api.GetWIFIConfigMode(byref(isEnabled)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetWIFIConfigMode: isEnabled=%d' %(isEnabled.value)) return isEnabled.value def SetWIFISSID(api, ssid): szPara = create_string_buffer(25) szPara.raw = ssid.encode("utf-8") while(True): result = api.SetWIFISSID(szPara) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break def GetWIFISSID(api): szPara = create_string_buffer(25) while(True): result = api.GetWIFISSID(szPara, 25) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break ssid = szPara.value.decode("utf-8") output('GetWIFISSID: ssid=' + ssid) return ssid def SetWIFIPassword(api, password): szPara = create_string_buffer(25) szPara.raw = password.encode("utf-8") while(True): result = api.SetWIFIPassword(szPara) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break def GetWIFIPassword(api): szPara = create_string_buffer(25) while(True): result = api.GetWIFIPassword(szPara, 25) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break password = szPara.value.decode("utf-8") output('GetWIFIPassword: password=' + password) return password def SetWIFIIPAddress(api, dhcp, addr1, addr2, addr3, addr4): wifiIPAddress = WIFIIPAddress() wifiIPAddress.dhcp = dhcp wifiIPAddress.addr1 = addr1 wifiIPAddress.addr2 = addr2 wifiIPAddress.addr3 = addr3 wifiIPAddress.addr4 = addr4 while(True): result = api.SetWIFIIPAddress(byref(wifiIPAddress)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break def GetWIFIIPAddress(api): wifiIPAddress = WIFIIPAddress() while(True): result = api.GetWIFIIPAddress(byref(wifiIPAddress)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetWIFIIPAddress: IPAddress=%d.%d.%d.%d' %(wifiIPAddress.addr1, wifiIPAddress.addr2, wifiIPAddress.addr3, wifiIPAddress.addr4)) return [c_uint8(wifiIPAddress.dhcp).value, c_uint8(wifiIPAddress.addr1).value, c_uint8(wifiIPAddress.addr2).value, c_uint8(wifiIPAddress.addr3).value, c_uint8(wifiIPAddress.addr4).value] def SetWIFINetmask(api, addr1, addr2, addr3, addr4): wifiNetmask = WIFINetmask() wifiNetmask.addr1 = addr1 wifiNetmask.addr2 = addr2 wifiNetmask.addr3 = addr3 wifiNetmask.addr4 = addr4 while(True): result = api.SetWIFINetmask(byref(wifiNetmask)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break def GetWIFINetmask(api): wifiNetmask = WIFINetmask() while(True): result = api.GetWIFINetmask(byref(wifiNetmask)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetWIFINetmask: Netmask=%d.%d.%d.%d' %(wifiNetmask.addr1, wifiNetmask.addr2, wifiNetmask.addr3, wifiNetmask.addr4)) return [c_uint8(wifiNetmask.addr1).value, c_uint8(wifiNetmask.addr2).value, c_uint8(wifiNetmask.addr3).value, c_uint8(wifiNetmask.addr4).value] def SetWIFIGateway(api, addr1, addr2, addr3, addr4): wifiGateway = WIFIGateway() wifiGateway.addr1 = addr1 wifiGateway.addr2 = addr2 wifiGateway.addr3 = addr3 wifiGateway.addr4 = addr4 while(True): result = api.SetWIFIGateway(byref(wifiGateway)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break def GetWIFIGateway(api): wifiGateway = WIFIGateway() while(True): result = api.GetWIFIGateway(byref(wifiGateway)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetWIFIGateway: wifiGateway=%d.%d.%d.%d' %(wifiGateway.addr1, wifiGateway.addr2, wifiGateway.addr3, wifiGateway.addr4)) return [c_uint8(wifiGateway.addr1).value, c_uint8(wifiGateway.addr2).value, c_uint8(wifiGateway.addr3).value, c_uint8(wifiGateway.addr4).value] def SetWIFIDNS(api, addr1, addr2, addr3, addr4): wifiDNS = WIFIDNS() wifiDNS.addr1 = addr1 wifiDNS.addr2 = addr2 wifiDNS.addr3 = addr3 wifiDNS.addr4 = addr4 while(True): result = api.SetWIFIDNS(byref(wifiDNS)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break def GetWIFIDNS(api): wifiDNS = WIFIDNS() while(True): result = api.GetWIFIDNS(byref(wifiDNS)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break output('GetWIFIDNS: wifiDNS=%d.%d.%d.%d' %(wifiDNS.addr1, wifiDNS.addr2, wifiDNS.addr3, wifiDNS.addr4)) return [c_uint8(wifiDNS.addr1).value, c_uint8(wifiDNS.addr2).value, c_uint8(wifiDNS.addr3).value, c_uint8(wifiDNS.addr4).value] def SetColorSensor(api, isEnable): enable = c_bool(isEnable) while(True): result = api.SetColorSensor(enable) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break def GetColorSensor(api): r = c_ubyte(0) g = c_ubyte(0) b = c_ubyte(0) while(True): result = api.GetColorSensor(byref(r), byref(g), byref(b)) if result != DobotCommunicate.DobotCommunicate_NoError: dSleep(5) continue break return [r.value, g.value, b.value] ################## Ex扩展函数,该套函数会检测每一条指令运行完毕 ################## def GetPoseEx(api, index): if index == 0: ret = GetDeviceWithL(api) if not ret: print("Dobot is not in L model") return lr = GetPoseL(api) return round(lr[0], 4) pos = GetPose(api) return round(pos[index-1], 4) def SetHOMECmdEx(api, temp, isQueued=0): ret = SetHOMECmd(api, temp, isQueued) queuedCmdIndex = c_uint64(0) while(True): result = api.GetQueuedCmdCurrentIndex(byref(queuedCmdIndex)) if result == DobotCommunicate.DobotCommunicate_NoError and ret[0] <= queuedCmdIndex.value: break #延时太短的话按reset键后不能断开连接 dSleep(100) def SetWAITCmdEx(api, waitTime, isQueued=0): #ret = SetWAITCmd(api, waitTime, isQueued) #while(True): # if ret[0] <= GetQueuedCmdCurrentIndex(api)[0]: # break; dSleep(waitTime * 1000) def SetEndEffectorParamsEx(api, xBias, yBias, zBias, isQueued=0): ret = SetEndEffectorParams(api, xBias, yBias, zBias, isQueued) while(True): if ret[0] <= GetQueuedCmdCurrentIndex(api)[0]: break; dSleep(5) def SetPTPJointParamsEx(api, j1Velocity, j1Acceleration, j2Velocity, j2Acceleration, j3Velocity, j3Acceleration, j4Velocity, j4Acceleration, isQueued=0): ret = SetPTPJointParams(api, j1Velocity, j1Acceleration, j2Velocity, j2Acceleration, j3Velocity, j3Acceleration, j4Velocity, j4Acceleration, isQueued) while(True): if ret[0] <= GetQueuedCmdCurrentIndex(api)[0]: break; dSleep(5) def SetPTPLParamsEx(api, lVelocity, lAcceleration, isQueued=0): ret = GetDeviceWithL(api) if not ret: print("Dobot is not in L model") return ret = SetPTPLParams(api, lVelocity, lAcceleration, isQueued) while(True): if ret[0] <= GetQueuedCmdCurrentIndex(api)[0]: break; dSleep(5) def SetPTPCommonParamsEx(api, velocityRatio, accelerationRatio, isQueued=0): ret = SetPTPCommonParams(api, velocityRatio, accelerationRatio, isQueued) while(True): if ret[0] <= GetQueuedCmdCurrentIndex(api)[0]: break; dSleep(5) def SetPTPJumpParamsEx(api, jumpHeight, maxJumpHeight, isQueued=0): ret = SetPTPJumpParams(api, jumpHeight, maxJumpHeight, isQueued) while(True): if ret[0] <= GetQueuedCmdCurrentIndex(api)[0]: break; dSleep(5) def SetPTPCmdEx(api, ptpMode, x, y, z, rHead, isQueued=0): ret = SetPTPCmd(api, ptpMode, x, y, z, rHead, isQueued) while(True): if ret[0] <= GetQueuedCmdCurrentIndex(api)[0]: break; dSleep(5) def SetIOMultiplexingEx(api, address, multiplex, isQueued=0): ret = SetIOMultiplexing(api, address, multiplex, isQueued) while(True): if ret[0] <= GetQueuedCmdCurrentIndex(api)[0]: break; dSleep(5) def SetEndEffectorSuctionCupEx(api, enableCtrl, on, isQueued=0): ret = SetEndEffectorSuctionCup(api, enableCtrl, on, isQueued) while(True): if ret[0] <= GetQueuedCmdCurrentIndex(api)[0]: break; dSleep(5) def SetEndEffectorGripperEx(api, enableCtrl, on, isQueued=0): ret = SetEndEffectorGripper(api, enableCtrl, on, isQueued) while(True): if ret[0] <= GetQueuedCmdCurrentIndex(api)[0]: break; dSleep(5) def SetIODOEx(api, address, level, isQueued=0): ret = SetIODO(api, address, level, isQueued) while(True): if ret[0] <= GetQueuedCmdCurrentIndex(api)[0]: break; dSleep(5) def SetEMotorEx(api, index, isEnabled, speed, isQueued=0): ret = SetEMotor(api, index, isEnabled, speed, isQueued) while(True): if ret[0] <= GetQueuedCmdCurrentIndex(api)[0]: break; dSleep(5) def SetEMotorSEx(api, index, isEnabled, speed, deltaPulse, isQueued=0): ret = SetEMotorS(api, index, isEnabled, speed, deltaPulse, isQueued) while(True): if ret[0] <= GetQueuedCmdCurrentIndex(api)[0]: break; dSleep(5) def SetIOPWMEx(api, address, frequency, dutyCycle, isQueued=0): while(True): ret = SetIOPWM(api, address, frequency, dutyCycle, isQueued) if ret[0] <= GetQueuedCmdCurrentIndex(api)[0]: break; dSleep(5) def SetPTPWithLCmdEx(api, ptpMode, x, y, z, rHead, l, isQueued=0): ret = GetDeviceWithL(api) if not ret: print("Dobot is not in L model") return ret = SetPTPWithLCmd(api, ptpMode, x, y, z, rHead, l, isQueued) while(True): if ret[0] <= GetQueuedCmdCurrentIndex(api)[0]: break; dSleep(5) def GetColorSensorEx(api, index): result = GetColorSensor(api) return result[index]