void OnTriggerEnter(Collider co) { Destroy(co.gameObject); serial.Write("ITEM"); Debug.LogError("item_get"); }
void Loop() { while (true) { try { if (DateTime.Now < _nextSendTime) { Thread.Sleep((int)(_nextSendTime - DateTime.Now).TotalMilliseconds); } int sleep = int.MaxValue; lock (this) { if (_reset) { _report.Reset(); _reset = false; } var values = _keystrokes.Values.ToArray(); foreach (var ks in values) { if (ks.Time > DateTime.Now) { var n = (int)(ks.Time - DateTime.Now).TotalMilliseconds; if (n > 0 && n < sleep) { sleep = n; } } else if (ks.Up) { ks.Key.Up(_report); _keystrokes.Remove(ks); } else { ks.Key.Down(_report); if (ks.Duration > 0) { _keystrokes[ks] = new KeyStroke(ks.Key, true, 0, DateTime.Now + TimeSpan.FromMilliseconds(ks.Duration)); if (ks.Duration < sleep) { sleep = ks.Duration; } } else { _keystrokes.Remove(ks); } } } string log; log = $"[Send {DateTime.Now.ToString("ss.fff")}] { _report.GetKeyStr()}"; //Debug.WriteLine(log); Logger.WriteLine(log); _arduino.Write(_report.GetBytes()); _nextSendTime = DateTime.Now + TimeSpan.FromMilliseconds(MINIMAL_INTERVAL); _ewh.Reset(); } if (_keystrokes.Count == 0) { _ewh.WaitOne(); } else { _ewh.WaitOne(sleep); } } catch (ThreadInterruptedException) { } } }