• RE: No remote readout when avering DMM7510

    I ported the commands into a small Python program and timed how long the 100 point repeating average at 10 NPLC requires to return the one value.  Using 60Hz power, it is requiring about 53 seconds.

    Even the small Python sample needs the VISA timeout set to long duration to account for the 53 seconds to respond.

    The web interface for Send Commands is evidently not waiting long enough for the response to the :READ?
    You could try sending command to read the defbuffer1 contents after you know the reading is available if important to read it in the web interface.
    Command:  :TRAC:DATA? 1, 1, "defbuffer1", READ


     
  • RE: How to measure Varistor Alpha with 2470?

    check out the display.text commands
    There are two lines available to you.

    elapsedTime = some computed value
    display.changescreen(display.SCREEN_USER_SWIPE)
    display.settext(display.TEXT1, "Test pass")
    display.settext(display.TEXT2, string.format("Time elapsed: %.0f sec" , elapsedTime))
  • RE: Is there a way to call .tsp script function from C#?

    If using the IVI driver, it has the driver.System.DirectIO.WriteString() for sending commands directly to the instrument.

    Using the loadscript/endscript constructs, you can load your functions into runtime memory of instrument.
    Of course you can read the tsp file line by line and write the line to the instrument to load functions defined in TSP file that you write/validate in Test Script Builder.
     
                  // load a very simple script that defines a funtion that has two parameters
                    myInstr.WriteString("loadscript mysciptname");
                    myInstr.WriteString("function myfunction(freq, duration)");
                    myInstr.WriteString("beeper.beep(duration, freq)");
                    myInstr.WriteString("end");
                    myInstr.WriteString("endscript");
    
                    myInstr.WriteString("mysciptname.run()");   // run the script
    
                    // now call the loaded function to cause 1 second 1200Hz tone from 26xx
                    myInstr.WriteString("myfunction(1200, 1)");
    
                    //myInstr.WriteString("myfunction(800, 5)");
    
  • RE: High scan rate resistance measurement using Keithley 2010 multimeter ( I do have a 7002 too)

    How long of duration do you need the monitoring?  Think of it in terms of how many samples at your 10Hz reading rate.

    Any meter will have a finite reading buffer and so time to xfer data needs accounted for unless your data set can fit in the memory.  In 2010 data sheet and speed, those speeds are for finite number of readings into the buffer.  Then stop measuring and xfer the data to PC.

    The 7002 switch frame is obsolete as are the 7xxx cards used in it.  Unless you already have a suitable switch card, used market is only choice.

    Rather than interface the 2010 to a new switch, take a look at DAQ6510 with a 7710 switch card.  That card has fast switching and can support your desired scan rates of 5 channels.  The KickStart data logger app does good job on this if also needing some data logging software.
  • RE: Simultaneous measurement on 3 nanovoltmeters using trigger link

    The model 2361 trigger controller has been obsolete for long time already.

    On the trigger link connector on 2182A, it has only trigger in and trigger out lines.

    Assuming the three meters are on GPIB bus, try to set up for BUS triggering instead of External, and then issue the GET (group execute trigger) from the GPIB card.
  • RE: Control of blackplane relays with 3706A-S

    Is this front panel manual operation or sending commands?

    Manual operation would need you to define a channel pattern that includes the backplane relay and the channel relay.  Then open or close the pattern.

    If sending commands, the channel.close() and open will accept the relay number of your backplane relay as part of the channel list.

    In the wiring to the 37xx card, take note of the +ILK and -ILK pins (on each bank if using MUX card).  Those need shorted to permit backplane relay closure.

    When the 3706A model has the internal DMM, the backplanes are typically managed for you.  For example a channel configured for 4-wire ohms vs VDC measure function will close all necessary relays when dmm.close() on that configured channel.

    If you have 3706A-S, then it is just a switch controller.
  • RE: MeasureMultiple creates an array of undefined characters in 64-bit processor.

    Hello,
    Thank you for clarifying that.
    The 2602B has only the TSP command set, so no need to worry about that setting on the instrument.
    It is very odd that the instrument reports a TSP syntax error.

    In my C# environment, I set build to x64 platform target.  It is running fine for me.
    ​​​​​​​try
                {
                    //Instantiate driver class directly
                    driver = new Ke26XXA();
    
                    VISAResource = availableResourcesListBox.SelectedItem.ToString();
    
                    string options = "QueryInstrStatus=True";
                    driver.Initialize(VISAResource, true, true, options);
    
                    label1.Text = "Successful Driver Session";
    
    
                    //driver.System.DirectIO.WriteString("reset()", true);
    
    
    
                    driver.Sweep.set_SourceChangesEnabled("A", true);
                    driver.Sweep.set_MeasurementsEnabled("A", true);
    
                    string bufferName = "MyBuf";
                    int bufSize = 11;
    
                    driver.Measurement.Buffer.Create("A", bufferName, bufSize);
    
                    driver.Sweep.Source.ConfigureVoltageLinearSweep("A", 0, 1, 11);
                    driver.Sweep.Measure.ConfigureCurrentMeasurement("A", bufferName);
    
                    // Set the sweep count
                    driver.Trigger.set_Count("A", bufSize);
                    // Set the reading count (1 pt for each sweep value)
                    driver.Measurement.set_Count("A", 1);
                    // set other measurement related paramters
                    driver.Measurement.set_NPLC("A", 1.0);
                    driver.Measurement.set_Delay("A", 0.001);
    
                    driver.Source.set_OutputEnabled("A", true);
    
                    driver.Sweep.Initiate("A");
                    driver.System.WaitForOperationComplete(10000);
    
                    double[] readings = driver.Measurement.Buffer.MeasureData.GetAllReadings(bufferName);
    
                    foreach (double reading in readings)
                    {
                        resultsListBox.Items.Add(reading.ToString("E"));
                    }
    
                    driver.Source.set_OutputEnabled("A", false);
    
                    // close the driver
                    driver.Close();
    
    
                }
                catch
                {
                    label1.Text = "Could not open driver session!!";
                }

     
  • RE: [KXIC] Get error message from KXCI

    Is true.  At present the KXCI API has no means to read back the error detail.
    I have created an enhancement request about it.
  • RE: MeasureMultiple creates an array of undefined characters in 64-bit processor.

    Can you clarify what model number is the instrument?

    From your attached image, you are using IVI driver.  I believe the IVI driver wants the touch screen SMU models such as 2450 to be in SCPI command set.
    Your reported error about TSP Syntax tells me the instrument is in in TSP command set.  If this is touch screen model of SMU, that would be a problem.

    Do I have it correct?
  • RE: [KXIC] Get error message from KXCI

    Sounds like you are making very robust error handling in your application.

    Looks like, right now, the only way for you to know the error detail is to look at tail of the KXCILogifile.txt in the C:\S4200\sys\kxci
    In KXCI window, be sure to enable logging.
    Can your application somehow map that drive location and do some file IO?

    From the KXCI command set, you can interrogate the state of a bit in the status byte to know if an error has occurred.
    But not aware of any way to query the error detail on this API.

    Python sample for interrogating status byte:
    ​​​​​​​import time
    import pyvisa
    import socket
    
    
    def main():
        rm = pyvisa.ResourceManager()
        dev_address = "TCPIP0::192.168.1.43::1225::SOCKET"
        my_4200A = rm.open_resource(dev_address)
        my_4200A.read_termination = "\0"
        my_4200A.write_termination = "\0"
        my_4200A.timeout = 1000
    
        # No Error in *IDN?
        print("Response to *IDN?: ", my_4200A.query("*IDN?"))
        status = my_4200A.query("SP")
    
        # Check bit B1 of status byte for previous command error
        if (int(status) & 0x02) != 0:  # Check bit B1 of SP response
            print("Error Detected. Bit B1 value: ", (int(status) & 0x02))
        else:
            print("No Error Detected. Bit B1 value: ", (int(status) & 0x02))
    
        # Error in *IDN?
        print("Response to *ID?: ", my_4200A.query("*ID?"))
        status = my_4200A.query("SP")
    
        # Check bit B1 of status byte for previous command error.
        if (int(status) & 0x02) != 0:  # Check bit B1 of SP response
            print("Error Detected. Bit B1 value: ", (int(status) & 0x02))
        else:
            print("No Error Detected. Bit B1 value: ", (int(status) & 0x02))
    
        my_4200A.close()
    
    
    if __name__ == "__main__":
        main()