コード例 #1
0
 void Update()
 {
     HandleInteractions();
     onUpdate?.Invoke(this);
     _currentScreen?.GetComponent <TerminalBehavior>()?.OnScreenUpdate(this);
     if (_booted)
     {
         _effectIntensity = Mathf.Clamp(_effectIntensity - effectRate, -3.0F, 1.0F);
         ApplyEffects(_effectIntensity);
     }
 }
コード例 #2
0
 public void Boot()
 {
     if (!_booted)
     {
         onBoot?.Invoke(this);
         if (!(bootScreen is null))
         {
             _currentScreen = Instantiate(bootScreen, canvas.transform);
             _currentScreen.GetComponent <TerminalBehavior>()?.OnScreenLoad(this);
         }
         ResetMonitor();
         ApplyEffects(_effectIntensity);
         _booted = true;
     }
 }
コード例 #3
0
        public async Task <bool> SendCustom(string cmd)
        {
            bool timeout = await Task.Run(() => { return(Wait(ref _Completed, CompletionTimeout)); });

            if (timeout)
            {
                Log(new TimeoutException(), Default.msgControllerTimeout);
                return(false);
            }
            CommandExecutionCompleted = false;
            try
            {
                Port.WriteLine(cmd);
            }
            catch (Exception e)
            {
                Log(e, string.Format("{0} Info: {1}", Default.msgPortWriteError, cmd));
                return(false);
            }
            TerminalQueue.Enqueue(() => { TerminalEvent?.Invoke(this, new TerminalEventArgs(cmd)); });
            return(await Task.Run(() => { return !Wait(ref _Completed, CompletionTimeout); }));
        }
コード例 #4
0
 private void ParseLine(string line)
 {
     Trace("Parser invoked");
     TerminalQueue.Enqueue(() => { TerminalEvent?.Invoke(this, new TerminalEventArgs(line)); });
     if (line.EndsWith(ErrorDesignator))
     {
         new Thread(DeviceErrorThreadStart).Start(new TerminalEventArgs(line));
         return;
     }
     if (IsConnected)
     {
         if (line.Length == ConnectionSignature.Length)
         {
             if (line.SequenceEqual(ConnectionSignature))
             {
                 OnUnexpectedDisconnect();
                 return;
             }
         }
         if (!CommandExecutionCompleted)
         {
             if (line.Length == CompletionSignature.Length)
             {
                 if (line.SequenceEqual(CompletionSignature))
                 {
                     CommandExecutionCompleted = true;
                     return;
                 }
             }
         }
         if (AcquisitionInProgress)
         {
             if (line.Length == EndOfAcquisitionSignature.Length)
             {
                 if (line.SequenceEqual(EndOfAcquisitionSignature))
                 {
                     AcquisitionInProgress = false;
                     return;
                 }
             }
             try
             {
                 string[] parsed = line.Split(Splitter);
                 byte     c      = byte.Parse(parsed[0], NumberStyles.HexNumber, CultureInfo.InvariantCulture);
                 float    v      = float.Parse(parsed[1].Trim(ToTrim), CultureInfo.InvariantCulture);
                 DataQueue.Enqueue(() =>
                 {
                     AcquisitionDataReceived?.Invoke(this, new AcquisitionEventArgs(c, v));
                 });
             }
             catch (Exception exc)
             {
                 new Thread(DataErrorEventThreadStart).Start(new DataErrorEventArgs(exc, line));
             }
         }
         else
         {
             if (line.Length == AcquisitionSignature.Length)
             {
                 if (line.SequenceEqual(AcquisitionSignature))
                 {
                     AcquisitionInProgress = true;
                     return;
                 }
             }
         }
     }
     else
     {
         if (line.Length == ConnectionSignature.Length)
         {
             if (line.SequenceEqual(ConnectionSignature))
             {
                 IsConnected = true;
                 return;
             }
         }
     }
 }
コード例 #5
0
 void Start()
 {
     onStart?.Invoke(this);
 }
コード例 #6
0
 public void Exit()
 {
     onExit?.Invoke(this);
     _currentScreen?.GetComponent <TerminalBehavior>()?.OnScreenExit(this);
     ApplyEffects(0.0F);
 }
コード例 #7
0
ファイル: DataManagerInput.cs プロジェクト: zik-888/OpenTUR
 public void TerminalMethod(string value)
 {
     terminalEvent.Invoke(value);
 }