/// <summary> /// Read all pins /// </summary> internal void Read() { Busy = true; var config = new LocoIOConfig(); Enabled = false; lb.BeginRequest( x => programmer.Read(x, config), x => { Enabled = true; Busy = false; if (x.HasError) { MessageBox.Show(x.Error.Message); } else { for (int i = 0; i < 16; i++) { pinControls[i].LoadFrom(config.Pins[i]); } } }); }
/// <summary> /// Execute the given request. /// </summary> private void Execute(Request request) { lb.BeginRequest(request, e => { if (!e.HasError) { MessageBox.Show(e.Error.Message, Application.ProductName, MessageBoxButtons.OK, MessageBoxIcon.Error); } }); }
/// <summary> /// Send change address now. /// </summary> private void cmdChange_Click(object sender, System.EventArgs e) { Busy = true; var newAddress = (byte)upAddress.Value; var newSubAddress = (byte)upSubAddress.Value; lbStatus.Text = "Changing address..."; upAddress.Enabled = false; upSubAddress.Enabled = false; cmdChange.Enabled = false; lb.BeginRequest( x => programmer.ChangeAddress(x, newAddress, newSubAddress), x => { upAddress.Enabled = false; upSubAddress.Enabled = false; cmdChange.Enabled = true; Busy = false; if (x.HasError) { lbStatus.Text = "Changing address failed."; MessageBox.Show(x.Error.Message); } else { lbStatus.Text = "Changing address succeeded. Reset the LocoIO."; } }); }
/// <summary> /// Set all bits to 0. /// </summary> private void cmdReset_Click(object sender, EventArgs e) { lb.BeginRequest( x => programmer.BitsToZero(x), x => { if (Continue != null) { Continue(this, EventArgs.Empty); } }); }
/// <summary> /// Go into programming mode. /// </summary> private void cmdEnterProgramMode_Click(object sender, EventArgs e) { lb.BeginRequest( x => programmer.EnterProgrammingMode(x), x => { if (Continue != null) { Continue(this, EventArgs.Empty); } }); }
private void Write(LocoIOConnectorConfigurationControl connector, Button cmdWrite) { Busy = true; var settings = connector.CreateConfig(); connector.Enabled = false; cmdWrite.Enabled = false; lb.BeginRequest( x => programmer.Write(x, settings), x => { connector.Enabled = true; cmdWrite.Enabled = true; Busy = false; if (x.HasError) { MessageBox.Show(x.Error.Message); } else { WriteSucceeded.Fire(this); } }); }
/// <summary> /// Set left position /// </summary> private void cmdSetLeft_Click(object sender, EventArgs e) { lb.BeginRequest( x => programmer.SetLeftDegrees(x, (int)udLeft.Value), CompletedHandler); }