void OnTriggerEnter(Collider co)
 {
     Destroy(co.gameObject);
     serial.Write("ITEM");
     Debug.LogError("item_get");
 }
示例#2
0
 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)
         { }
     }
 }