コード例 #1
0
ファイル: NXTProtocol.cs プロジェクト: joetex/NXT-ucontrol
        private void CommandWorker()
        {
            //lock (sync)
            {
                while (cmdQueue.Count > 0)
                {
                    NXTCommand cmd = (NXTCommand)cmdQueue[0];

                    if (!SocketSend(cmd.command))
                    {
                        cmdArchive.Add(cmd);
                        cmdQueue.RemoveAt(0);
                        cmdQueue.TrimToSize();
                        continue;
                    }

                    if (cmd.UpdateStatus())
                    {
                        SocketReceive(cmd.reply);
                    }

                    ProcessReply(cmd);

                    cmdArchive.Add(cmd);
                    cmdQueue.RemoveAt(0);
                    cmdQueue.TrimToSize();

                    /*
                     * byte nError = cmd.reply[2];
                     * if (nError > 0)
                     *  throw new NXTException(GetError(nError));
                     */
                }
            }
        }
コード例 #2
0
ファイル: NXTProtocol.cs プロジェクト: joetex/NXT-ucontrol
        protected bool SendCommand(byte[] command, byte[] reply)
        {
            NXTCommand cmd = new NXTCommand(command, reply);

            lock (sync)
            {
                cmdQueue.Add(cmd);

                if (cmdThread == null || !cmdThread.IsAlive)
                {
                    cmdThread = new Thread(CommandWorker);
                    cmdThread.Start();
                }
            }
            return(true);
        }
コード例 #3
0
ファイル: NXTProtocol.cs プロジェクト: joetex/NXT-ucontrol
        public void ProcessReply(NXTCommand cmd)
        {
            switch ((NXTCommandCode)cmd.commandCode)
            {
            case NXTCommandCode.GETOUTPUTSTATE:
                break;

            case NXTCommandCode.GETINPUTVALUES:
                break;

            case NXTCommandCode.GETBATTERYLEVEL:
                Process_GetBatteryLevel(cmd.reply);
                break;

            case NXTCommandCode.KEEPALIVE:
                Process_KeepAlive(cmd.reply);
                break;

            case NXTCommandCode.LSGETSTATUS:
                Process_LSGetStatus(cmd.reply);
                break;

            case NXTCommandCode.LSWRITE:
                break;

            case NXTCommandCode.LSREAD:
                Process_LSRead(cmd.reply);
                break;

            case NXTCommandCode.GETCURRENTPROGRAMNAME:
                break;

            case NXTCommandCode.MESSAGEREAD:
                Process_MessageRead(cmd.reply);
                break;

            case NXTCommandCode.VERSION:
                Process_GetVersion(cmd.reply);
                break;
            }
        }
コード例 #4
0
ファイル: NXTProtocol.cs プロジェクト: acj4/nxt-ucontrol
        protected bool SendCommand(byte[] command, byte[] reply)
        {
            NXTCommand cmd = new NXTCommand(command, reply);

            lock (sync)
            {
                cmdQueue.Add(cmd);

                if (cmdThread == null || !cmdThread.IsAlive)
                {
                    cmdThread = new Thread(CommandWorker);
                    cmdThread.Start();
                }
            }
            return true;
        }
コード例 #5
0
ファイル: NXTProtocol.cs プロジェクト: acj4/nxt-ucontrol
        public void ProcessReply(NXTCommand cmd)
        {
            switch ((NXTCommandCode)cmd.commandCode)
            {

                case NXTCommandCode.GETOUTPUTSTATE:
                    break;
                case NXTCommandCode.GETINPUTVALUES:
                    break;
                case NXTCommandCode.GETBATTERYLEVEL:
                    Process_GetBatteryLevel(cmd.reply);
                    break;
                case NXTCommandCode.KEEPALIVE:
                    Process_KeepAlive(cmd.reply);
                    break;
                case NXTCommandCode.LSGETSTATUS:
                    Process_LSGetStatus(cmd.reply);
                    break;
                case NXTCommandCode.LSWRITE:
                    break;
                case NXTCommandCode.LSREAD:
                    Process_LSRead(cmd.reply);
                    break;
                case NXTCommandCode.GETCURRENTPROGRAMNAME:
                    break;
                case NXTCommandCode.MESSAGEREAD:
                    Process_MessageRead(cmd.reply);
                    break;
                case NXTCommandCode.VERSION:
                    Process_GetVersion(cmd.reply);
                    break;
            }
        }