예제 #1
0
SRXSpeed::SRXSpeed(int id, double Pvalue, double Ivalue, double Dvalue, int a):CANTalon(id)
{
	SetControlMode(CANTalon::kSpeed);
	SetFeedbackDevice(CANTalon::QuadEncoder);
	SetP(Pvalue);
	SetI(Ivalue);
	SetD(Dvalue);
	EnableControl();
	maxTicks=a;
}
예제 #2
0
SRXPosition::SRXPosition(int id, double p, double i, double d, bool invert):CANTalon(id) {
	SetControlMode(CANTalon::kPosition);
	SetP(p);
	SetI(i);
	SetD(d);
	SetFeedbackDevice(CANTalon::QuadEncoder);
	invertMotor=invert;
	SetInverted(invert);
	if (invert)
	{
		ConfigFwdLimitSwitchNormallyOpen(false);
	}
	else
	{
		ConfigRevLimitSwitchNormallyOpen(false);
	}
	SetPosition(0);
	target=0;
	EnableControl();
}
예제 #3
0
/*
	Output command with controlmode
*/
void OutputCmdType002( char *cmdPtr, long cmdLen, short isSetTime )
{
	int n;
	long len;
	char buf[CMD_BUF_MAX_SIZE];
	char *p = buf;

	n = SetBJLStart(p); p += n;
	n = SetControlMode(p); p += n;

	if ( isSetTime ) {
		n = SetCurrentTime(p); p+=n; 
	}

	memcpy( p, cmdPtr, cmdLen ); p += cmdLen;
	n = SetBJLEnd(p); p += n;
	*p = 0x00; p++;

	len = (long)(p - buf);
	PutPrintData( buf, len );
}
예제 #4
0
/*
	Output command
*/
void OutputCmdType001( char *cmdPtr, long cmdLen )
{
	int n;
	long len;
	char buf[CMD_BUF_MAX_SIZE];
	char *p = buf;

	/* Output SetTime */
	n = SetBJLStart(p); p += n;
	n = SetControlMode(p); p += n;
	n = SetCurrentTime(p); p+=n; 
	n = SetBJLEnd(p); p += n;

	/* Output Command */
	n = SetBJLStart(p); p += n;
	memcpy( p, cmdPtr, cmdLen ); p += cmdLen;
	n = SetBJLEnd(p); p += n;
	*p = 0x00; p++;

	len = (long)(p - buf);
	PutPrintData( buf, len );
}
예제 #5
0
/**
 * TODO documentation (see CANJaguar.cpp)
 */
void CANTalon::EnableControl() {
  SetControlMode(m_controlMode);
  m_controlEnabled = true;
}