//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"); } }
private void Client_EnableRecordRequestOnNatSuccessEvent(object obj, CommandMsg msg) { recorder = new RTPRecorderCouple(21011, CONNECTED_MODE.NAT); IsRecording = true; this.SetMessage(Application.Current.FindResource("ISRECORDING").ToString()); }
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(); } }
// 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); } }
private void Client_DropCallSuccessEvent(object obj, CommandMsg msg) { Dispatcher.Invoke(DispatcherPriority.Normal, new Action(delegate { btnCall.Content = "☎"; btnCall.ToolTip = "Call"; })); }
private void Couplemodeclient_RegSuccessEvent(object obj, CommandMsg msg) { if (!client.IsRegistered) { ConnectSuccess(msg); client.IsRegistered = true; } connectedmode = CONNECTED_MODE.PUBLIC; }
// 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); }
private void Couplemodeclient_RegSuccessNatEvent(object obj, CommandMsg msg) { if (!client.IsRegistered) { client.RegTimerInit(); ConnectSuccess(msg); client.IsRegistered = true; } connectedmode = CONNECTED_MODE.NAT; }
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()); }
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(); } }
// 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); } }
// 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); }
// 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); }
// 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); }
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); }
// 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); }
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"); } })); }
// 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; }
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()); }
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 } }
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(); } }
// 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); }
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); } } } }
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 } }
private void Couplemodeclient_CallFobidenEvent(object obj, CommandMsg msg) { }
private void Couplemodeclient_CallInvitingEvent(object obj, CommandMsg msg) { }
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); }