private void change_power_mode(power_mode pm) { if (pm != power_mode.P8V && pm != power_mode.P20V && pm != power_mode.P35V && pm != power_mode.P60V) { Console.WriteLine("Attempting to change to bad power mode! mode={0}", power_mode_to_raw_text(pm)); return; } connection_status t = pause_polling_thread(); thread_safe_update_status_bar("Changing power mode."); // send the change power mode to x command string s = ""; // note that there are no asterisks regardless of what the manual would have you believe s = quick_clear_write_read("VOLT:RANG " + power_mode_to_raw_text(pm) + "\n"); current_mode = pm; resume_polling_thread(t); }
// for displaying text to the user private string power_mode_to_ui_text(power_mode pm) { switch (pm) { case power_mode.P8V: return "8V/3A"; case power_mode.P20V: return "20V/1.5A"; case power_mode.P35V: return "35V"; case power_mode.P60V: return "60V"; case power_mode.undefined: default: return "undefined"; } }
// reads the current power mode and returns: // 1 on 8V/3A // 2 on 20V/1.5A // 3 on 35V // 4 on 60V // -10 on bad parsing of response or bad response // -20 on some other error // -1 on "nothing happened" private int quick_power_mode_read() { int ret_val = -1; try { string s = quick_clear_write_read("VOLT:RANG?\n"); if (s.Contains(power_mode_to_raw_text(power_mode.P8V))) { current_mode = power_mode.P8V; ret_val = 1; } else if (s.Contains(power_mode_to_raw_text(power_mode.P20V))) { current_mode = power_mode.P20V; ret_val = 2; } else if (s.Contains(power_mode_to_raw_text(power_mode.P35V))) { current_mode = power_mode.P35V; ret_val = 4; } else if (s.Contains(power_mode_to_raw_text(power_mode.P60V))) { current_mode = power_mode.P60V; ret_val = 5; } else { current_mode = power_mode.undefined; ret_val = -10; } cbModes.Text = power_mode_to_ui_text(current_mode); return ret_val; } catch { MessageBox.Show("Something went wrong reading the current power mode"); ret_val = -20; } return ret_val; }
// for parsing a response from the power supply private string power_mode_to_raw_text(power_mode pm) { switch(pm) { case power_mode.P8V: return "P8V"; case power_mode.P20V: return "P20V"; case power_mode.P35V: return "P35V"; case power_mode.P60V: return "P60V"; case power_mode.undefined: default: return "undefined"; } }