|
|
|
|
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]
|
|
|
|
|
|