float[] ustavki = new float[3]; //изначальные рассогласования фактического местоположения робота и камер public override void ReceiveOdomData(string OdometryData) { RobotOdomData = new float[3]; if (OdometryData != "") { // string someString = RobPos; string[] words = OdometryData.Split(new char[] { ';' });//парсим строку в массив words for (int i = 0; i < 3; i++) { RobotOdomData[i] = float.Parse(words[i], System.Globalization.CultureInfo.CreateSpecificCulture("en-US")); } float alpha = RobotOdomData[0]; RobotOdomData[0] = RobotOdomData[1]; RobotOdomData[1] = alpha; var s = RobotOdomData[0].ToString() + " " + RobotOdomData[1].ToString() + " " + RobotOdomData[2].ToString(); Form1.f.Invoke(new Action(() => Form1.f.richTextBox2.Text = s)); ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //здесь осуществить взятие текущих координат из сети if (y == 0) { y = 1; if (tc != null) // здесь происходит отправка задающих команд на куку { string control_str; //отправляем нулевые уставки на куку control_str = string.Format(CultureInfo.InvariantCulture, "LUA_Base({0}, {1}, {2})", 0, 0, 0); if (control_str != null) { tc.Send(control_str); //отправляем команду на сервер куки } //Form1.f.timer1.Enabled = false; //System.Threading.Thread.Sleep(5000); // Form1.f.timer1.Enabled = true; } float[] camodom = OFC.getCamOdom(); //float ledx = 0.1f * (float)Math.Cos(RobotOdomData[2]);//так как метка лежит не поцентру робота а чуть ближе к корме то пересчитываем полученные координаты //float ledy = 0.1f * (float)Math.Sin(RobotOdomData[2]); //camodom[0] = camodom[0] + ledx; //camodom[1] = camodom[1] + ledy; camodom[1] = camodom[1] * -1; if (k == 0) { ustavki[0] = camodom[0]; ustavki[1] = camodom[1]; ustavki[2] = camodom[2]; k = 1; } float XG; // Х координата float YG; // Y координата float AG = camodom[2]; XG = ustavki[0] - camodom[0]; // XG = XG; YG = ustavki[1] - camodom[1]; //YG = YG * -1; var sb = XG.ToString() + " " + YG.ToString() + " " + camodom[2].ToString(); Form1.f.Invoke(new Action(() => Form1.f.rtb_tcp2.Text = sb)); // XG = XG * (-1);// умножаем на минс 1 чтобы инвертировать ось Y и она совпадала с глобальной осью координат Y //для проверки сделаем навигациб только по камерам float usrednenieX = Math.Abs(RobotOdomData[0]) - Math.Abs(XG);//высчитываем разницу между одометрий и камерами float usrednenieY = Math.Abs(RobotOdomData[1]) - Math.Abs(YG); RobotOdomData[0] = RobotOdomData[0] - usrednenieX / 10; RobotOdomData[1] = RobotOdomData[1] - usrednenieY / 10; float usrednenieA = Math.Abs(RobotOdomData[2]) - Math.Abs(camodom[2]); RobotOdomData[2] = RobotOdomData[2] + usrednenieA / 100;// RobotOdomData[2] + usrednenieA / 50; float[] newOdom = new float[3]; newOdom[0] = RobotOdomData[0]; newOdom[1] = RobotOdomData[1]; newOdom[2] = RobotOdomData[2]; // key2 = 1; SendOdom(newOdom); } y++;//чтобы каждые 100 циклов программы y обнулялся и заходил в зону взятия данных с камер if (y == 100) { y = 0; } } }
public static void FinishFile(XG.Model.Domain.File aFile) { lock (aFile) { if (aFile.MissingSize > 0) { return; } #region DISABLE ALL MATCHING PACKETS // TODO remove all CD* packets if a multi packet was downloaded string fileName = XG.Model.Domain.Helper.ShrinkFileName(aFile.Name, 0); List<Packet> matchedPackets = (from server in Servers.All from channel in server.Channels from bot in channel.Bots from packet in bot.Packets where packet.Enabled && (XG.Model.Domain.Helper.ShrinkFileName(packet.RealName, 0).EndsWith(fileName) || XG.Model.Domain.Helper.ShrinkFileName(packet.Name, 0).EndsWith(fileName)) select packet).ToList(); foreach (Packet tPack in matchedPackets) { Log.Info("FinishFile(" + aFile + ") disabling " + tPack + " from " + tPack.Parent); tPack.Enabled = false; tPack.Commit(); } #endregion string tmpPath = Settings.Default.TempPath + aFile.TmpName; string readyPath = Settings.Default.ReadyPath + aFile.Name; try { if (FileSystem.MoveFile(tmpPath, readyPath)) { Files.Remove(aFile); // great, all went right, so lets check what we can do with the file var thread = new Thread(() => HandleFile(readyPath)); thread.Name = "HandleFile|" + aFile.Name; thread.Start(); } else { Log.Fatal("FinishFile(" + aFile + ") cant move file"); } } catch (Exception ex) { Log.Fatal("FinishFile(" + aFile + ") cant finish file", ex); FireNotificationAdded(Notification.Types.FileFinishFailed, aFile); } } }
protected void Parse(XG.Plugin.Irc.Parser.AParser aParser, string aMessage) { aMessage = XG.Plugin.Irc.Parser.Helper.RemoveSpecialIrcChars(aMessage); var message = new Message { Channel = Channel, Nick = Bot.Name, Text = aMessage }; aParser.Parse(message); }
protected void Parse(XG.Plugin.Irc.Parser.AParser aParser, XG.Plugin.Irc.IrcConnection aConnection, IrcEventArgs aEvent) { string tMessage = XG.Plugin.Irc.Parser.Helper.RemoveSpecialIrcChars(aEvent.Data.Message); aParser.Parse(aConnection, tMessage, aEvent); }
Model.Domain.Result LoadBySearch(XG.Model.Domain.Search aSearch, bool aShowOfflineBots, int aCount, int aPage, string aSortBy, string aSort) { var results = Webserver.Search.Packets.GetResults(aSearch, aShowOfflineBots, (aPage - 1) * aCount, aCount, aSortBy, aSort == "desc"); List<Model.Domain.Packet> all = new List<XG.Plugin.Webserver.SignalR.Hub.Model.Domain.Packet>(); foreach (var term in results.Packets.Keys) { var objects = Helper.XgObjectsToHubObjects(results.Packets[term]).Cast<Model.Domain.Packet>(); objects.ToList().ForEach(p => p.GroupBy = term); all.AddRange(objects); } UpdateLoadedClientObjects(Context.ConnectionId, new HashSet<Guid>(all.Select(o => o.Guid)), aCount); return new Model.Domain.Result { Total = results.Total, Results = all }; }
public void Part(XG.Model.Domain.Channel aChan) { try { _client.RfcPart(aChan.Name); } catch (NotConnectedException) {} }
public void Join(XG.Model.Domain.Channel aChannel) { Join(aChannel.Name); }