예제 #1
0
        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);
        }
예제 #2
0
 // 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";
     }
 }
예제 #3
0
        // 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;
        }
예제 #4
0
 // 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";
     }
 }