Exemplo n.º 1
0
        private void ReceiveProgramHandler(byte[] data)
        {
            try
            {
                SelectedProgramFile = null;
                suppressRefresh     = true;
                currentProgram      = data;
                var parsed = Mp2Sysex.ParseProgram(data);
                State.SetProgram(parsed.Item2);
                ProgramName = parsed.Item1.Trim();
                newProgram  = Mp2Sysex.CreateProgram(currentProgram, midiChannel, programName, State);

                NotifyPropertyChanged(nameof(Values));
                NotifyPropertyChanged(nameof(Readouts));
                NotifyPropertyChanged(nameof(CurrentProgramHex));
                NotifyPropertyChanged(nameof(NewProgramHex));
                isRetry = false;
            }
            catch (Exception ex)
            {
                if (ex.Message.Contains("Computed checksum does match program value"))
                {
                    if (!isRetry)
                    {
                        isRetry = true;
                        RequestProgram(null);
                        return;
                    }
                    else
                    {
                        isRetry = false;
                        throw;
                    }
                }

                if (ex is FieldAccessException)
                {
                    MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Warning);
                }
                else
                {
                    MainWindow.OnUnhandledException(ex);
                }
            }
            finally
            {
                suppressRefresh = false;
            }
        }
Exemplo n.º 2
0
        public void Refresh()
        {
            if (suppressRefresh)
            {
                return;
            }

            State.RefreshAll();
            NotifyPropertyChanged(() => Readouts);

            if (currentProgram != null && programName != null && State != null)
            {
                newProgram = Mp2Sysex.CreateProgram(currentProgram, midiChannel, programName, State);
                NotifyPropertyChanged(nameof(NewProgramHex));

                if (AutoUpdate)
                {
                    lock (sendLock)
                    {
                        programToSend = newProgram;
                    }
                }
            }
        }
Exemplo n.º 3
0
 private void RequestProgram(object obj)
 {
     midiConnection.SendSysex(Mp2Sysex.RequestDumpSysex(midiChannel));
 }