//functions called by the networkplaybehaviour
    public void SendCommands(SerializableCommandList commands)
    {
        CommandMsg msg = new CommandMsg();

        byte[] result;

        BinaryFormatter bf = new BinaryFormatter();

        System.IO.MemoryStream ms = new System.IO.MemoryStream();

        bf.Serialize(ms, commands);
        result = ms.ToArray();
        CommandMsg cmdMsg = new CommandMsg();

        cmdMsg.serializedCommands = result;
        //f(cmdMsg.serializedCommands);
        if (remoteConnection != null)
        {
            remoteConnection.Send(CommandMsg.msgType, cmdMsg);
        }
        else
        {
            Debug.Log("no remote connection to send to");
        }
    }
Exemple #2
0
        private void Client_EnableRecordRequestOnNatSuccessEvent(object obj, CommandMsg msg)
        {
            recorder = new RTPRecorderCouple(21011, CONNECTED_MODE.NAT);

            IsRecording = true;
            this.SetMessage(Application.Current.FindResource("ISRECORDING").ToString());
        }
Exemple #3
0
        static void Main(string[] args)
        {
            EZRoboNetDevice netdev = new EZRoboNetDevice(1, (byte)t_Robot.t_Station); // creating a network device as a station

            rnd = new Random((int)DateTime.Now.Ticks);

            MyRobot myrobot = new MyRobot(netdev,
                                          2,    // this is the ID of the robot which MyRobot controls (in this case it is the arduino, and its assigned id is 2)
                                          rnd   // this is an unused/useless parameter for now...
                                          );

            // send something out
            // sending a sample answer
            CommandMsg outmsg = new CommandMsg();

            outmsg.robot        = t_Robot.t_Station;
            outmsg.Cmd          = RobotCmd.rc_ManualCommand;
            outmsg.CmdParams    = new byte[] { (byte)'H', (byte)'E', (byte)'L', (byte)'L', (byte)'O' };
            outmsg.ParamsLength = (byte)outmsg.CmdParams.Length; // 5 bytes

            // send it
            myrobot.sendCommandMessage(outmsg);

            while (true)
            {
                Application.DoEvents();
            }
        }
Exemple #4
0
        // the message handling function (called by an internal timer)
        public override void handleMessages(object sender, EventArgs e)
        {
            int      packetsavailable = packetsAvailable();
            EZPacket pack;

            // 1. checking pakcets available and acting

            if (packetsavailable > 0)
            {
                pack = getNextAvailablePacket();

                // unwrapping the packet
                CommandMsg msg = RobotMessenger.convertBytes2CommandMsg(pack.Message);

                ////////////////// Handle the message here //////////////////

                // sending a sample answer
                CommandMsg outmsg = new CommandMsg();
                outmsg.robot        = t_Robot.t_Station;
                outmsg.Cmd          = RobotCmd.rc_ManualCommand;
                outmsg.CmdParams    = new byte[] { (byte)'H', (byte)'E', (byte)'L', (byte)'L', (byte)'O' };
                outmsg.ParamsLength = (byte)outmsg.CmdParams.Length; // one byte - ability index

                // send it
                sendCommandMessage(outmsg);
            }
        }
        protected void HandleCommand(CommandMsg action)
        {
            if (isCurrentView)
            {
                switch (action.Command)
                {
                case CommandType.Insert:
                    Create();
                    break;

                case CommandType.Delete:
                    Delete();
                    break;

                case CommandType.Save:
                    Save();
                    break;

                case CommandType.Update:
                    Update();
                    break;

                default:
                    break;
                }
            }
        }
    void ReceviceCmdMsg(CommandMsg msg, params object[] objs)
    {
        //Debug.Log("ReceviceCmdMsg " + msg.index + " currentframe " + m_world.FrameCount);

        //立即返回确认消息
        AffirmMsg amsg = new AffirmMsg();

        amsg.index = msg.index;
        amsg.time  = msg.serverTime;
        ProtocolAnalysisService.SendCommand(amsg);

        if (m_world.IsStart)
        {
            //TODO 如果全部都与本地预测相同则不再重计算
            for (int i = 0; i < msg.msg.Count; i++)
            {
                //Debug.Log("RecordCommand " + Serializer.Serialize(msg.msg[i]));
                RecordCommand(msg.msg[i]);
            }

            Recalc();
        }
        else
        {
            //存入未执行命令列表
            //Debug.Log("存入未执行命令列表");
            //GameDataCacheComponent gdcc = m_world.GetSingletonComp<GameDataCacheComponent>();
            //gdcc.m_noExecuteCommandList.Add(msg);
        }
    }
Exemple #7
0
 private void Client_DropCallSuccessEvent(object obj, CommandMsg msg)
 {
     Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate
     {
         btnCall.Content = "☎";
         btnCall.ToolTip = "Call";
     }));
 }
Exemple #8
0
        private void Couplemodeclient_RegSuccessEvent(object obj, CommandMsg msg)
        {
            if (!client.IsRegistered)
            {
                ConnectSuccess(msg);
                client.IsRegistered = true;
            }

            connectedmode = CONNECTED_MODE.PUBLIC;
        }
Exemple #9
0
        // this method requests sensory data from the robosapien V2 avatar
        public void requestSensorData()
        {
            CommandMsg msg = new CommandMsg();

            msg.robot        = t_Robot.t_Station;
            msg.Cmd          = RobotCmd.rc_SendSensors;
            msg.ParamsLength = 1;
            msg.CmdParams    = new byte[msg.ParamsLength];
            msg.CmdParams[0] = 0;
            this.sendCommandMessage(msg);
        }
Exemple #10
0
        private void Couplemodeclient_RegSuccessNatEvent(object obj, CommandMsg msg)
        {
            if (!client.IsRegistered)
            {
                client.RegTimerInit();
                ConnectSuccess(msg);
                client.IsRegistered = true;
            }

            connectedmode = CONNECTED_MODE.NAT;
        }
Exemple #11
0
        private void Client_DisableRecordRequestSuccessEvent(object obj, CommandMsg msg)
        {
            if (recorder != null)
            {
                recorder.Close();
                recorder.Dispose();
                recorder = null;
            }

            IsRecording = false;
            this.SetMessage(Application.Current.FindResource("ISNOTRECORDING").ToString());
        }
Exemple #12
0
        public override void handleMessages(object sender, EventArgs e)
        {
            int      packetsavailable = packetsAvailable();
            EZPacket pack;

            // 1. checking pakcest available and acting

            if (packetsavailable > 0)
            {
                pack = getNextAvailablePacket();

                // unwrapping the packet
                CommandMsg msg = RobotMessenger.convertBytes2CommandMsg(pack.Message);
                // handling the message
                switch (msg.Cmd)
                {
                case RobotCmd.rc_CommandDone:     // handling the flags
                    flagAbilityExecuting = false;
                    flagAbilityDone      = true;
                    break;

                case RobotCmd.rc_ManualCommand:     // Nothing...
                    break;

                case RobotCmd.rc_SendCMUCAMAbstractionData:     // nothing...
                    break;

                case RobotCmd.rc_SendSensors:     // nothing
                    break;

                case RobotCmd.rc_SensorData:     // retrieving sensory data from the avatar
                    acquireSensorData(msg);
                    flagSensorDataAcquired = true;
                    break;

                case RobotCmd.rc_CMUCAMAbstractionData:     // retrieving a CMUCAM frame
                    acquireCMUCAMAbstractionData(msg);
                    break;

                case RobotCmd.rc_SonarFired:     // handling flags
                    flagSonarArrayFiring     = false;
                    flagSonarArrayFiringDone = true;
                    break;
                }
            }

            // 2. Cheking state and flags
            if (flagAbstractionDataReady)
            {
                requestCMUCAMAbstractionData();
            }
        }
Exemple #13
0
        // this method copies sensor data from the frame into the entity's sensor member variables
        public void acquireSensorData(CommandMsg msg)
        {
            byte[] sensorData = msg.CmdParams;
            // movingcurrent sensor readings to previous sensor readings array
            // assigning sensor readings
            int i;

            for (i = 0; i < 8; i++)
            {
                PrevSonarArray[i] = SonarArray[i];
                SonarArray[i]     = (ushort)(sensorData[2 * i] + sensorData[2 * i + 1] * 256);
            }
        }
Exemple #14
0
        // this method requests a CMUCAM Frame
        public void requestCMUCAMAbstractionData()
        {
            CommandMsg msg = new CommandMsg();

            msg.robot                = t_Robot.t_Station;
            msg.Cmd                  = RobotCmd.rc_SendCMUCAMAbstractionData;
            msg.ParamsLength         = 1;
            msg.CmdParams            = new byte[msg.ParamsLength];
            msg.CmdParams[0]         = 0;
            flagAbstractionDataReady = false;

            this.sendCommandMessage(msg);
        }
Exemple #15
0
        // the following method commands the mobile robot to fire the sonar array
        public void fireSonarArray()
        {
            CommandMsg msg = new CommandMsg();

            msg.robot        = t_Robot.t_Station;
            msg.Cmd          = RobotCmd.rc_FireSonarArray;
            msg.ParamsLength = 1; // one byte - just zero
            msg.CmdParams    = new byte[msg.ParamsLength];
            msg.CmdParams[0] = 0;
            // raising flags
            flagSonarArrayFiring     = true;
            flagSonarArrayFiringDone = false;

            this.sendCommandMessage(msg);
        }
Exemple #16
0
        // this method downloads a command to the avatar
        // based on the available abilities
        public void useAbility(t_RSV2Ability ability)
        {
            CommandMsg msg = new CommandMsg();

            msg.robot        = t_Robot.t_Station;
            msg.Cmd          = RobotCmd.rc_ManualCommand;
            msg.ParamsLength = 1; // one byte - ability index
            msg.CmdParams    = new byte[msg.ParamsLength];
            msg.CmdParams[0] = (byte)ability;
            // raising flag
            flagAbilityDone      = false;
            flagAbilityExecuting = true;

            this.sendCommandMessage(msg);
        }
Exemple #17
0
        // bytes to Object
        public static Object getObject(byte[] arr)
        {
            CommandMsg str = new CommandMsg();

            //int size = Marshal.SizeOf(str);
            int    size = arr.Length;
            IntPtr ptr  = Marshal.AllocHGlobal(size);

            Marshal.Copy(arr, 0, ptr, size);

            str = (CommandMsg)Marshal.PtrToStructure(ptr, str.GetType());
            Marshal.FreeHGlobal(ptr);

            return(str);
        }
Exemple #18
0
        private void Client_CallConnectedEvent(object obj, CommandMsg msg)
        {
            if (curCall == null)
            {
                return;
            }

            if (curCall.Cust_Idx > 0)
            {
                SetMessage(string.Format(Application.Current.FindResource("MSG_CALL_STATES_CONNECTED2").ToString(), curCall.Name));
            }
            else
            {
                SetMessage(Application.Current.FindResource("MSG_CALL_STATES_CONNECTED").ToString());
            }

            this.UIChanging(msg.status);
        }
Exemple #19
0
    // convert bytes to a command message structure
    public static CommandMsg convertBytes2CommandMsg(byte[] rawmsg)
    {
        CommandMsg msg = new CommandMsg();

        msg.robot        = (t_Robot)rawmsg[0];
        msg.Cmd          = (RobotCmd)rawmsg[1];
        msg.ParamsLength = (ushort)(rawmsg[2] + rawmsg[3] * 256);

        int i;

        msg.CmdParams = new byte[msg.ParamsLength];
        for (i = 0; i < msg.ParamsLength; i++)
        {
            msg.CmdParams[i] = rawmsg[4 + i];
        }

        return(msg);
    }
Exemple #20
0
 private void ConnectSuccess(CommandMsg msg)
 {
     Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate
     {
         if (msg.status == 0 || msg.status == 99)
         {
             this.Title         = this.Title + " (" + msg.from_ext + ")";
             img_antena.ToolTip = Application.Current.FindResource("TOOTIP_MAIN_ANTENA_ON");
             img_antena.Style   = (Style)Application.Current.FindResource("antena_on");
         }
         else
         {
             this.Title         = Application.Current.FindResource("MSG_MAIN_TITLE").ToString();
             img_antena.ToolTip = Application.Current.FindResource("TOOTIP_MAIN_ANTENA_OFF");
             img_antena.Style   = (Style)Application.Current.FindResource("antena_off");
         }
     }));
 }
Exemple #21
0
        // copying sensor data from the frame into the entity's sensor member variables
        public void acquireSensorData(CommandMsg msg)
        {
            byte[] sensorData = msg.CmdParams;
            // assigning sensor readings
            sensorLeft_Foot_Front_Bumper  = sensorData[0];
            sensorLeft_Foot_Rear_Bumper   = sensorData[1];
            sensorRight_Foot_Front_Bumper = sensorData[2];
            sensorRight_Foot_Rear_Bumper  = sensorData[3];
            sensorLeft_Hand_Bumper        = sensorData[4];
            sensorRight_Hand_Bumper       = sensorData[5];
            sensorLeft_Hand_Pickup        = sensorData[6];
            sensorRight_Hand_Pickup       = sensorData[7];

            sensorLeft_Wrist_Encoder  = sensorData[8];
            sensorRight_Wrist_Encoder = sensorData[9];

            // analog sensors
            sensorCamera_HSD = (ushort)(sensorData[10] + sensorData[11] * 256);
            sensorCamera_RST = (ushort)(sensorData[12] + sensorData[13] * 256);
            sensorCamera_RDY = (ushort)(sensorData[14] + sensorData[15] * 256);
            sensorCamera_SK  = (ushort)(sensorData[16] + sensorData[17] * 256);

            sensorLeft_Shoulder_Pot  = (ushort)(sensorData[18] + sensorData[19] * 256);
            sensorRight_Shoulder_Pot = (ushort)(sensorData[20] + sensorData[21] * 256);

            sensorLeft_Mic  = (ushort)(sensorData[22] + sensorData[23] * 256);
            sensorRight_Mic = (ushort)(sensorData[24] + sensorData[25] * 256);

            sensorLeft_Head_IR   = (ushort)(sensorData[26] + sensorData[27] * 256);
            sensorCenter_Head_IR = (ushort)(sensorData[28] + sensorData[29] * 256);
            sensorRight_Head_IR  = (ushort)(sensorData[30] + sensorData[31] * 256);

            // the mic and bumper sensor triggers
            sensorLeft_Mic_Triggered         = sensorData[32];
            sensorRight_Mic_Triggered        = sensorData[33];
            sensorLeft_Foot_Rear_Triggered   = sensorData[34];
            sensorLeft_Foot_Front_Triggered  = sensorData[35];
            sensorRight_Foot_Rear_Triggered  = sensorData[36];
            sensorRight_Foot_Front_Triggered = sensorData[37];
            sensorLeft_Hand_Triggered        = sensorData[38];
            sensorRight_Hand_Triggered       = sensorData[39];

            flagSensorDataAcquired = true;
        }
Exemple #22
0
        private void Client_EnableRecordRequestSuccessEvent(object obj, CommandMsg msg)
        {
            if (msg.status == USRSTRUCTS.STATUS_NAT_SUCCESS)
            {
                client.RecordStartRequestOnNat(curCall.Cust_Tel);
                // recorder = new RTPRecorderCouple(msg.port, CONNECTED_MODE.NAT);
            }
            else
            {
                // recorder = new RTPRecorderCouple(msg.port, CONNECTED_MODE.PUBLIC);
                recorder = new RTPRecorderCouple(CONNECTED_MODE.PUBLIC);
            }

            // recorder = new RTPRecorderCouple(msg.port, connectedmode);

            // client.RecordStartRequestOnNat(curCall.Cust_Tel);

            IsRecording = true;
            this.SetMessage(Application.Current.FindResource("ISRECORDING").ToString());
        }
Exemple #23
0
        public void acquireCMUCAMAbstractionData(CommandMsg msg)
        {
            int parmslength = msg.ParamsLength;

            byte[] parms = msg.CmdParams;
            int    i, j;
            int    startindex = AbstractionBytes;

            for (i = 0; i < parmslength; i++)
            {
                RawAbstraction[startindex + i] = parms[i];
                AbstractionBytes++;
            }
            flagAbstractionDataReady = true;

            if (AbstractionBytes == ABSTRACTION_FRAME_HEIGHT * ABSTRACTION_FRAME_WIDTH * 3)
            {
                FrameAbstraction              = new CMUCAMFrame();
                FrameAbstraction.RedChannel   = new byte[ABSTRACTION_FRAME_HEIGHT][];
                FrameAbstraction.GreenChannel = new byte[ABSTRACTION_FRAME_HEIGHT][];
                FrameAbstraction.BlueChannel  = new byte[ABSTRACTION_FRAME_HEIGHT][];

                for (i = 0; i < ABSTRACTION_FRAME_HEIGHT; i++)
                {
                    FrameAbstraction.RedChannel[i]   = new byte[ABSTRACTION_FRAME_WIDTH];
                    FrameAbstraction.GreenChannel[i] = new byte[ABSTRACTION_FRAME_WIDTH];
                    FrameAbstraction.BlueChannel[i]  = new byte[ABSTRACTION_FRAME_WIDTH];

                    for (j = 0; j < ABSTRACTION_FRAME_WIDTH; j++)
                    {
                        FrameAbstraction.RedChannel[i][j]   = RawAbstraction[(i * ABSTRACTION_FRAME_WIDTH + j) * 3];
                        FrameAbstraction.GreenChannel[i][j] = RawAbstraction[(i * ABSTRACTION_FRAME_WIDTH + j) * 3 + 1];
                        FrameAbstraction.BlueChannel[i][j]  = RawAbstraction[(i * ABSTRACTION_FRAME_WIDTH + j) * 3 + 2];
                    }
                }
                flagAbstractionReady     = true;
                flagAbstractionDataReady = false; // rpeventing a new chuynk request
            }
        }
Exemple #24
0
 private void Handle(CommandMsg commandMsg)
 {
     try
     {
         if (!commands.ContainsKey(commandMsg.cmd))
         {
             throw new UnKownCommandException();
         }
         var command = commands[commandMsg.cmd];
         if (commandMsg.args.Length < command.Item2.ArgsNumber)
         {
             throw new ArgumentErrorException();
         }
         if (command.Item2.NeedLogin && !LoginInfo.islogin)
         {
             throw new NeedLoginException();
         }
         command.Item1.Process(commandMsg.args);
     }
     catch (FtpException ex)
     {
         Send(ex.Message);
         if (transSocket != null)
         {
             transSocket.Close();
         }
         if (ex is CloseConnectException)
         {
             Close();
         }
     }
     catch (Exception ex)
     {
         FtpServer.Logger.Error("全局异常:" + ex.Message);
         Send(ResultCode.CloseConnect.ConvertString());
         Close();
     }
 }
Exemple #25
0
        // sends a command message to the avatar
        public void sendCommandMessage(CommandMsg cmdmsg)
        {
            int paramLength  = cmdmsg.ParamsLength;
            int rawmsgLength = paramLength + 4;

            byte[] rawcmdmsg = new byte[rawmsgLength];

            rawcmdmsg[0] = (byte)cmdmsg.robot;
            rawcmdmsg[1] = (byte)cmdmsg.Cmd;
            rawcmdmsg[2] = (byte)(paramLength & 0x0FF);
            rawcmdmsg[3] = (byte)((paramLength >> 8) & 0x0FF);
            int i;

            for (i = 0; i < paramLength; i++)
            {
                rawcmdmsg[4 + i] = cmdmsg.CmdParams[i];
            }
            // creating the packet now
            EZPacket pack = createEZPacket(rawcmdmsg, rawmsgLength);

            // sending
            NetDevice.pushOutboundPacket(pack);
        }
Exemple #26
0
        public static void WriteStructVal(CommandMsg msg)
        {
            string userdatapath = string.Format(@"{0}\{1}", Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "MiniCRM");

            if (!Directory.Exists(userdatapath))
            {
                Directory.CreateDirectory(userdatapath);
            }

            string logpath = string.Format(@"{0}\{1}", userdatapath, "log");

            if (!Directory.Exists(logpath))
            {
                Directory.CreateDirectory(logpath);
            }

            string       logfilepath = string.Format(@"{0}\{1}{2:00}{3:00}_struct.log", logpath, DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day);
            StreamWriter w           = File.AppendText(logfilepath);

            w.WriteLine("{0} {1}", DateTime.Now.ToLongDateString(), DateTime.Now.ToLongTimeString());
            w.WriteLine("cmd: {0}, status: {1}, direct: {2}, userid: {3}, from_ext: {4}, to_ext: {5}", msg.cmd, msg.status, msg.direct, msg.userid, msg.from_ext, msg.to_ext);
            w.WriteLine("---------------------------------------------------");
            w.Flush();
            w.Close();

            foreach (var logfile in System.IO.Directory.EnumerateFiles(logpath))
            {
                if (File.GetCreationTime(logfile) < DateTime.Now.AddMonths(-2))
                {
                    if (File.Exists(logfile))
                    {
                        File.Delete(logfile);
                    }
                }
            }
        }
Exemple #27
0
        private void Couplemodeclient_CallRingInEvent(object obj, CommandMsg msg)
        {
            if (curCall != null)
            {
                return;
            }

            curCall = new CallList()
            {
                Direction = 1,
                Cust_Tel  = msg.from_ext,
                Startdate = DateTime.Now,
                ext       = msg.from_ext,
                to_ext    = msg.to_ext
            };

            Customer cust = pb.GetCustomerByTel(msg.from_ext);

            string strmsg = string.Empty;

            if (cust.Idx < 1)
            {
                pb.CUSTOMERSTATE = CUSTOMER_STATE.ADD;
                cust.Group_Idx   = 0;
                cust.Cellular    = msg.from_ext;
                strmsg           = Application.Current.FindResource("MSG_CALL_IN").ToString();
            }
            else
            {
                pb.CUSTOMERSTATE = CUSTOMER_STATE.MODIFY;
                curCall.Cust_Idx = cust.Idx;
                curCall.Name     = cust.Name;
                strmsg           = string.Format(Application.Current.FindResource("MSG_CALL_IN2").ToString(), cust.Name);
            }

            SetMessage(strmsg);
            SetNumber(msg.from_ext);

            // CallLists calllists = new CallLists();
            // calllists.add(curCall);

            Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate
            {
                if (startpopup)
                {
                    if (pb == null)
                    {
                        pb       = new PhoneBook();
                        pb.Owner = this;
                    }

                    // pb.Show();
                }

                SearchCondition1 con = new SearchCondition1();
                con.StartDate        = pb.sdate.Value;
                con.EndDate          = pb.edate.Value;
                con.Number           = string.IsNullOrEmpty(pb.txtNumber.Text.Trim()) == false ? string.Format("%{0}%", pb.txtNumber.Text.Trim()) : string.Empty;

                if (pb.calls == null)
                {
                    pb.calls = new CallLists(con);
                    pb.dgCallList.ItemsSource = pb.calls;
                }

                pb.calls.add(curCall);

                if (pb.Visibility == Visibility.Collapsed || pb.Visibility == Visibility.Hidden)
                {
                    pb.tabs.SelectedIndex            = 1;
                    pb.dgridCustCallList.ItemsSource = pb.GetCallListByCustIdx(cust.Idx, curCall.Cust_Tel);
                    pb.btnCustMemo.Visibility        = Visibility.Visible;
                    pb.FlyCustomer        = cust;
                    pb.flyCustomer.Header = Application.Current.FindResource("PB_FLYOUT_TITLE_CUST_INFO").ToString();
                    pb.flyCustomer.IsOpen = true;

                    if (startpopup)
                    {
                        pb.Visibility = Visibility.Visible;
                    }
                }
                else
                {
                    pb.tabs.SelectedIndex            = 1;
                    pb.dgridCustCallList.ItemsSource = pb.GetCallListByCustIdx(cust.Idx, curCall.Cust_Tel);
                    pb.btnCustMemo.Visibility        = Visibility.Visible;
                    pb.FlyCustomer        = cust;
                    pb.flyCustomer.Header = Application.Current.FindResource("PB_FLYOUT_TITLE_CUST_INFO").ToString();

                    if (startpopup)
                    {
                        pb.flyCustomer.IsOpen = true;
                    }
                }
            }));

            this.UIChanging(msg.status);
        }
        // sends a command message to the avatar
        public void sendCommandMessage(CommandMsg cmdmsg)
        {
            int paramLength = cmdmsg.ParamsLength;
            int rawmsgLength = paramLength + 4;
            byte[] rawcmdmsg = new byte[rawmsgLength];

            rawcmdmsg[0] = (byte)cmdmsg.robot;
            rawcmdmsg[1] = (byte)cmdmsg.Cmd;
            rawcmdmsg[2] = (byte)(paramLength & 0x0FF);
            rawcmdmsg[3] = (byte)((paramLength >> 8) & 0x0FF);
            int i;
            for (i = 0; i < paramLength; i++)
                rawcmdmsg[4 + i] = cmdmsg.CmdParams[i];
            // creating the packet now
            EZPacket pack = createEZPacket(rawcmdmsg, rawmsgLength);
            // sending
            NetDevice.pushOutboundPacket(pack);
        }
    // convert bytes to a command message structure
    public static CommandMsg convertBytes2CommandMsg(byte[] rawmsg)
    {
        CommandMsg msg = new CommandMsg();
            msg.robot = (t_Robot)rawmsg[0];
            msg.Cmd = (RobotCmd)rawmsg[1];
            msg.ParamsLength = (ushort)(rawmsg[2] + rawmsg[3] * 256);

            int i;
            msg.CmdParams = new byte[msg.ParamsLength];
            for (i = 0; i < msg.ParamsLength; i++)
                msg.CmdParams[i] = rawmsg[4 + i];

            return msg;
    }
 // this method requests sensory data from the robosapien V2 avatar
 public void requestSensorData()
 {
     CommandMsg msg = new CommandMsg();
     msg.robot = t_Robot.t_Station;
     msg.Cmd = RobotCmd.rc_SendSensors;
     msg.ParamsLength = 1;
     msg.CmdParams = new byte[msg.ParamsLength];
     msg.CmdParams[0] = 0;
     flagSensorDataAcquired = false;
     this.sendCommandMessage(msg);
 }
        public void acquireCMUCAMAbstractionData(CommandMsg msg)
        {
            int parmslength = msg.ParamsLength;
            byte[] parms = msg.CmdParams;
            int i, j;
            int startindex = AbstractionBytes;
            for (i = 0; i < parmslength; i++)
            {
                RawAbstraction[startindex + i] = parms[i];
                AbstractionBytes++;
            }
            flagAbstractionDataReady = true;

            if (AbstractionBytes == ABSTRACTION_FRAME_HEIGHT * ABSTRACTION_FRAME_WIDTH * 3)
            {
                FrameAbstraction = new CMUCAMFrame();
                FrameAbstraction.RedChannel = new byte[ABSTRACTION_FRAME_HEIGHT][];
                FrameAbstraction.GreenChannel = new byte[ABSTRACTION_FRAME_HEIGHT][];
                FrameAbstraction.BlueChannel = new byte[ABSTRACTION_FRAME_HEIGHT][];

                for (i = 0; i < ABSTRACTION_FRAME_HEIGHT; i++)
                {
                    FrameAbstraction.RedChannel[i] = new byte[ABSTRACTION_FRAME_WIDTH];
                    FrameAbstraction.GreenChannel[i] = new byte[ABSTRACTION_FRAME_WIDTH];
                    FrameAbstraction.BlueChannel[i] = new byte[ABSTRACTION_FRAME_WIDTH];

                    for (j = 0; j < ABSTRACTION_FRAME_WIDTH; j++)
                    {
                        FrameAbstraction.RedChannel[i][j] = RawAbstraction[(i * ABSTRACTION_FRAME_WIDTH + j) * 3];
                        FrameAbstraction.GreenChannel[i][j] = RawAbstraction[(i * ABSTRACTION_FRAME_WIDTH + j) * 3 + 1];
                        FrameAbstraction.BlueChannel[i][j] = RawAbstraction[(i * ABSTRACTION_FRAME_WIDTH + j) * 3 + 2];
                    }
                }
                flagAbstractionReady = true;
                flagAbstractionDataReady = false; // preventing a new chunk request

            }
        }
        // this method requests a CMUCAM Frame
        public void requestCMUCAMAbstractionData()
        {
            CommandMsg msg = new CommandMsg();
            msg.robot = t_Robot.t_Station;
            msg.Cmd = RobotCmd.rc_SendCMUCAMAbstractionData;
            msg.ParamsLength = 1;
            msg.CmdParams = new byte[msg.ParamsLength];
            msg.CmdParams[0] = 0;
            flagAbstractionDataReady = false;

            this.sendCommandMessage(msg);
        }
        // the following method commands the mobile robot to fire the sonar array
        public void fireSonarArray()
        {
            CommandMsg msg = new CommandMsg();
            msg.robot = t_Robot.t_Station;
            msg.Cmd = RobotCmd.rc_FireSonarArray;
            msg.ParamsLength = 1; // one byte - just zero
            msg.CmdParams = new byte[msg.ParamsLength];
            msg.CmdParams[0] = 0;
            // raising flags
            flagSonarArrayFiring = true;
            flagSonarArrayFiringDone = false;

            this.sendCommandMessage(msg);
        }
Exemple #34
0
 private void Couplemodeclient_CallFobidenEvent(object obj, CommandMsg msg)
 {
 }
Exemple #35
0
 private void Couplemodeclient_CallInvitingEvent(object obj, CommandMsg msg)
 {
 }
 // this method copies sensor data from the frame into the entity's sensor member variables
 public void acquireSensorData(CommandMsg msg)
 {
     byte[] sensorData = msg.CmdParams;
     // movingcurrent sensor readings to previous sensor readings array
     // assigning sensor readings
     int i;
     for (i = 0; i < 8; i++)
     {
         PrevSonarArray[i] = SonarArray[i];
         SonarArray[i] = (ushort)(sensorData[2 * i] + sensorData[2 * i + 1] * 256);
     }
 }
Exemple #37
0
 private void Couplemodeclient_CallProceedingEvent(object obj, CommandMsg msg)
 {
 }
        // this method downloads a command to the avatar
        // based on the available abilities
        public void useAbility(t_CartAbility ability)
        {
            CommandMsg msg = new CommandMsg();
            msg.robot = t_Robot.t_Station;
            msg.Cmd = RobotCmd.rc_ManualCommand;
            msg.ParamsLength = 1; // one byte - ability index
            msg.CmdParams = new byte[msg.ParamsLength];
            msg.CmdParams[0] = (byte)ability;

            flagAbilityExecuting = true;
            flagAbilityDone = false;

            this.sendCommandMessage(msg);
        }