Пример #1
3
        public override bool Send(CommBuffer buffer, out bool send, out bool free)
        {
            float val = (expr == null) ? ugao : expr.Value();

            float dir1 = (val - c.r.rot + 360) % 360;
            float dir2 = (c.r.rot - (val - 360)) % 360;

            val = (Math.Abs(dir1) < Math.Abs(dir2)) ? dir1 : dir2;

            // Metadata
            buffer.Write(0xFF);
            buffer.Write(0x0A);
            buffer.Write((byte)(8));

            // Data
            buffer.Write((byte)(val > 0 ? 0x06 : 0x07));
            //buffer.Write((byte)0x00);

            int Ugao = (int)(Math.Abs(val) * 3100 / 90);

            buffer.Write((byte)(Ugao & 0x000F));
            buffer.Write((byte)((Ugao & 0x00F0) >> 4));
            buffer.Write((byte)((Ugao & 0x0F00) >> 8));
            buffer.Write((byte)((Ugao & 0xF000) >> 12));

            buffer.Write((byte)(ID & 0x0F));
            buffer.Write((byte)((ID & 0xF0) >> 4));

            return(base.Send(buffer, out send, out free));
        }
Пример #2
1
        public override bool Send(CommBuffer buffer, out bool send, out bool free)
        {
            send = false;
            free = true;

            return(Convert.ToBoolean(expr.Value()));
        }
Пример #3
1
        public override bool Send(CommBuffer buffer, out bool send, out bool free)
        {
            float val = (expr == null) ? ugao : expr.Value();

            // Metadata
            buffer.Write(0xFF);
            buffer.Write(0x0A);
            buffer.Write((byte)(8));

            // Data
            buffer.Write((byte)(val > 0 ? 0x06 : 0x07));
            //buffer.Write((byte)0x00);

            //int Ugao = (int)(Math.Abs(val) * 3100 / 90);
            int Ugao = (int)(Math.Abs(val) * c.r.rotationConst);

            buffer.Write((byte)(Ugao & 0x000F));
            buffer.Write((byte)((Ugao & 0x00F0) >> 4));
            buffer.Write((byte)((Ugao & 0x0F00) >> 8));
            buffer.Write((byte)((Ugao & 0xF000) >> 12));

            buffer.Write((byte)(ID & 0x0F));
            buffer.Write((byte)((ID & 0xF0) >> 4));

            return(base.Send(buffer, out send, out free));
        }
Пример #4
0
        public override bool Send(CommBuffer buffer, out bool send, out bool free)
        {
            // Metadata
            buffer.Write(0xFF);
            buffer.Write(0x09);
            buffer.Write(5);

            // Data
            byte command = 0;

            if (arm == Arm.Left)
            {
                command = 0x03;
            }
            if (arm == Arm.Right)
            {
                command = 0x07;
            }
            if (arm == Arm.Cup)
            {
                command = 0x0D;
            }
            //byte command = (byte)((arm == Arm.Left) ? 0x03 : 0x07); //0x0D

            buffer.Write(command);
            buffer.Write(0x00);
            buffer.Write((byte)(ID & 0x0F));
            buffer.Write((byte)((ID & 0xF0) >> 4));

            return(base.Send(buffer, out send, out free));
        }
Пример #5
0
        public override bool Send(CommBuffer buffer, out bool send, out bool free)
        {
            buffer.Write(0xFF);
            buffer.Write(0x07);
            buffer.Write(9);

            // Data
            buffer.Write((byte)(0x10));
            //buffer.Write((byte)(val >= 0 ? 0xF1 : 0xF2));
            //buffer.Write((byte)0x00);
            buffer.Write((byte)servoID);

            buffer.Write((byte)(position & 0x000F));
            buffer.Write((byte)((position & 0x00F0) >> 4));
            buffer.Write((byte)((position & 0x0F00) >> 8));
            buffer.Write((byte)((position & 0xF000) >> 12));

            buffer.Write((byte)(ID & 0x0F));
            buffer.Write((byte)((ID & 0xF0) >> 4));

            return(base.Send(buffer, out send, out free));

            // TODO: add protocol

            return(base.Send(buffer, out send, out free));
        }
Пример #6
0
        public override bool Send(CommBuffer buffer, out bool send, out bool free)
        {
            float val = (expr == null) ? dist : expr.Value();

            int pomeraj = (int)(val * 11.7374f);

            // Metadata
            buffer.Write(0xFF);
            buffer.Write(0x0A);
            buffer.Write(8);

            // Data
            buffer.Write((byte)(val >= 0 ? 0x04 : 0x05));
            //buffer.Write((byte)(val >= 0 ? 0xF1 : 0xF2));
            //buffer.Write((byte)0x00);

            pomeraj = Math.Abs(pomeraj);
            buffer.Write((byte)(pomeraj & 0x000F));
            buffer.Write((byte)((pomeraj & 0x00F0) >> 4));
            buffer.Write((byte)((pomeraj & 0x0F00) >> 8));
            buffer.Write((byte)((pomeraj & 0xF000) >> 12));

            buffer.Write((byte)(ID & 0x0F));
            buffer.Write((byte)((ID & 0xF0) >> 4));

            return(base.Send(buffer, out send, out free));
        }
Пример #7
0
        public virtual bool Send(CommBuffer buffer, out bool send, out bool free)
        {
            c.r.upToDate = 0;
            send         = true;
            free         = true;

            return(true);
        }
Пример #8
0
        public override bool Send(CommBuffer buffer, out bool send, out bool free)
        {
            Thread.Sleep(delay);

            send = false;
            free = true;
            return(true);
        }
Пример #9
0
        public override bool Send(CommBuffer buffer, out bool send, out bool free)
        {
            // Metadata
            buffer.Write(0xFF);
            buffer.Write(0x0A);
            buffer.Write(2);

            // Data
            buffer.Write((byte)(0x11));

            return(base.Send(buffer, out send, out free));
        }
Пример #10
0
        public override bool Send(CommBuffer buffer, out bool send, out bool free)
        {
            buffer.Write(0xFF);
            buffer.Write(0x0A);
            buffer.Write(2);

            buffer.Write((byte)0x0A);
            //buffer.Write((byte)0x00);

            buffer.Write((byte)(ID & 0x0F));
            buffer.Write((byte)((ID & 0xF0) >> 4));

            return(base.Send(buffer, out send, out free));
        }
Пример #11
0
        public void IssueSingleCommand(Command comm)
        {
            SerialComm serialComm = r.comm;
            CommBuffer buffer     = serialComm.outputBuffer;

            bool send, free;

            if (comm.Send(buffer, out send, out free))
            {
                if (send)
                {
                    serialComm.ForceSendMessage();
                }
            }
        }
Пример #12
0
        public override State DoStuff()
        {
            Command_StopAll comm = new Command_StopAll(c);

            Robot      r          = c.r;
            SerialComm serialComm = r.comm;
            CommBuffer buffer     = serialComm.outputBuffer;

            bool send, free;

            comm.Send(buffer, out send, out free);

            serialComm.ForceSendMessage();

            return(this);
        }
Пример #13
0
        public override bool Send(CommBuffer buffer, out bool send, out bool free)
        {
            int data = (int)prescaler;

            // Metadata
            buffer.Write(0xFF);
            buffer.Write(0x0A);
            buffer.Write(6);

            // Data
            buffer.Write((byte)(0xFB));
            //buffer.Write((byte)(val >= 0 ? 0xF1 : 0xF2));
            //buffer.Write((byte)0x00);

            buffer.Write((byte)(data & 0x000F));
            buffer.Write((byte)((data & 0x00F0) >> 4));
            buffer.Write((byte)((data & 0x0F00) >> 8));
            buffer.Write((byte)((data & 0xF000) >> 12));

            return(base.Send(buffer, out send, out free));
        }
Пример #14
0
        public override State DoStuff()
        {
            Robot r = c.r;

            if (r.Ready)
            {
                SerialComm serialComm = r.comm;
                CommBuffer buffer     = serialComm.outputBuffer;

                Command comm = commands.Peek();

                bool send, free;
                if (comm.Send(buffer, out send, out free))
                {
                    if (send)
                    {
                        serialComm.ForceSendMessage();
                    }
                    //if (send) serialComm.SendMessage();

                    if (free)
                    {
                        commands.Dequeue();

                        if (commands.Count == 0)
                        {
                            return(c.GetNextState());
                        }
                    }
                }

                Thread.Sleep(100);
            }

            return(this);
        }
Пример #15
0
        public override bool Send(CommBuffer buffer, out bool send, out bool free)
        {
            Command comm = null;

            if (!rotationSent)
            {
                comm = new Command_Rotate(c, angle);

                free = false;
            }
            else
            {
                comm = new Command_Move(c, distance);

                free = true;
            }

            bool dummySend, dummyFree;

            comm.Send(buffer, out dummySend, out dummyFree);

            send = true;
            return(true);
        }