예제 #1
0
파일: NXTBox.cs 프로젝트: acj4/nxt-ucontrol
        public void ResetPos(Motor nMotor)
        {
            byte[] data = new byte[4];

            data[0] = 0x80;
            data[1] = 0x0a;
            data[2] = (byte)nMotor;
            data[3] = 0;

            Tx(data);
        }
예제 #2
0
파일: NXTBox.cs 프로젝트: acj4/nxt-ucontrol
        public void Output(Motor nMotor, int nPower, MotorMode nMode, MotorRegulation nReg, int nTurnRatio, MotorRunState nRunState, long nTacho)
        {
            byte[] data = new byte[12];

            data[0] = 0x80;
            data[1] = 0x04;
            data[2] = (byte)nMotor;
            data[3] = (byte)nPower;
            data[4] = (byte)nMode;
            data[5] = (byte)nReg;
            data[6] = (byte)nTurnRatio;
            data[7] = (byte)nRunState;

            data[8] = (byte)(nTacho & 0xff);
            data[9] = (byte)(nTacho >> 8);
            data[10] = (byte)(nTacho >> 16);
            data[11] = (byte)(nTacho >> 24);

            Tx(data);
        }
예제 #3
0
파일: NXTBox.cs 프로젝트: acj4/nxt-ucontrol
        public long ReadMotorRotationCount(Motor port)
        {
            mre.Reset();
            GetOutputState(port);
            if (!mre.WaitOne(1000, false))
                throw new NxtTimeout();

            if (nError > 0)
                throw new InvalidResult();

            return Buffer2SignedLong(result, 21);
        }
예제 #4
0
파일: NXTBox.cs 프로젝트: acj4/nxt-ucontrol
 public bool IsMotorRunning(Motor port)
 {
     return (GetMotorRunState(port) != MotorRunState.Idle);
 }
예제 #5
0
파일: NXTBox.cs 프로젝트: acj4/nxt-ucontrol
        public void GetOutputState(Motor nMotor)
        {
            byte[] data = new byte[3];

            data[0] = 0x00;
            data[1] = 0x06;
            data[2] = (byte)nMotor;

            Tx(data, 25);
        }
예제 #6
0
파일: NXTBox.cs 프로젝트: acj4/nxt-ucontrol
        public void GetMotorState(Motor port, out byte power, out MotorMode mode, out MotorRegulation regulation, out byte turnRatio, out MotorRunState state, out long tachoLimit, out long tachoCount, out long blockTachoCount, out long rotationCount)
        {
            mre.Reset();
            GetOutputState(port);
            if (!mre.WaitOne(1000, false))
                throw new NxtTimeout();

            if (nError > 0)
                throw new InvalidResult();

            power = result[4];
            mode = (MotorMode)result[5];
            regulation = (MotorRegulation)result[6];
            turnRatio = result[7];
            state = (MotorRunState)result[8];
            tachoLimit = Buffer2Long(result, 9);
            tachoCount = Buffer2SignedLong(result, 13);
            blockTachoCount = Buffer2SignedLong(result, 17);
            rotationCount = Buffer2SignedLong(result, 21);
        }
예제 #7
0
파일: NXTBox.cs 프로젝트: acj4/nxt-ucontrol
        public MotorRunState GetMotorRunState(Motor port)
        {
            mre.Reset();
            GetOutputState(port);
            if (!mre.WaitOne(1000, false))
                throw new NxtTimeout();

            if (nError > 0)
                throw new InvalidResult();

            return (MotorRunState)result[8];
        }
예제 #8
0
 public bool IsMotorRunning(Motor port)
 {
     return(GetMotorRunState(port) != MotorRunState.Idle);
 }