How to detect a lost TCPIP SOCKET using LabVIEW and NI VISA

I am using VISA functions in LabVIEW to remotely communicate with instruments over TCPIP SOCKET visa resources.   In general this all works well by simply creating a resource name, passing it to VISA Open and then setting a couple of session attributes.   Occasionally an instrument will be reset or power cycled and what I have noticed is that I need to call a VISA Close and then reopen the resource in order to get it to communicate again or close LabVIEW and run again.   If you just use VISA Open without calling a VISA Close first you cannot communicate with the target.   The problem is that I have no way of detecting this condition.   I have tried always calling a VISA Close before VISA Open and this seems to work for this condition but it seems odd to always close a session before opening it.   Why does VISA OPEN not work under this condition and is there any way to detect this situation?
Solved!
Go to Solution.

It works that way because that is how TCP works. A TCP connection is a dedicated connection between two endpoints. Unfortunately other than getting an error from a read or write operation there is no way to determine if the othe rside of teh connection is still there. You need to close the connection because otherwise VISA will continue to use th eold connection which is no longer valid. Closing it allows the system to cleanup the dead connection.
If you are communicating fairly infrequently you could simply open the connection, do you stuff and close it. The overhead for establishing the new connection is not that much. If you are using steady streams of data then you will need to watch for the errors and then reestablish the connection by closing the old one and opening a new connection as you have observed.
Mark Yedinak
"Does anyone know where the love of God goes when the waves turn the minutes to hours?"
Wreck of the Edmund Fitzgerald - Gordon Lightfoot

Similar Messages

  • How do you track a moving object using Labview and Vision Assistant

    I am using Vision and Labview to create a program that tracks and follow a moving object using a high end camera. Basically what it does is it detects a foreign object and locks on to it and follows it where ever it goes in a control sized room.
    I have no idea how to do this. Please help. Or is there an available example.
    Thanks.

    Hello,
    It sounds like you want to look into a Vision technique called Pattern Matching.  Using our Vision tools, you can look for a image, called a template, within another image.  Vision will scan over the entire image of interest trying to see if there are any matches with the template.  It will return the number of matches and their coordinates within the image of interest.  You would take a picture of the object and use it as the template to search for.  Then, take a picture of the entire room and use pattern matching to determine at what coordinates that template is found in the picture.  Doing this multiple times, you can track the movement of the object as it moves throughout the room.  If you have a motion system that will have to move the camera for you, it will complicate matters very much, but would still be possible to do.  You would have to have a feedback loop that, depending on where the object is located, adjusts the angle of the camera appropriately.
    There are a number of different examples a that perform pattern matching.  There are three available in the example finder.  In LabVIEW, navigate to "Help » Find Examples".  On the "Browse" tab, browse according to "Directory Structure".  Navigate to "Vision » 2. Functions".  There are examples for "Pattern Matching", "Color Pattern Matching", and "Geometric Matching".  There are also dozens of pattern matching documents and example programs on our website.  From the homepage at www.ni.com, you can search in the top-right corner the entire site for the keywords, "pattern matching". 
    If you have Vision Assistant, you can use this to set up the pattern matching sequence.  When it is complete and customized to your liking, you can convert that into LabVIEW code by navigating to "Tools » Create LabVIEW VI..."  This is probably the easiest way to customize any type of vision application in general.
    I hope this helps you get started.  Take care and good luck!
    Regards,Aaron B.
    Applications Engineering
    National Instruments

  • Custom Component : How to detect what charset the request used?

    I want to write a file upload component, this component must use the same charset as the request used to decode file name from data post from web browser, How to detect what charset the request used?

    Hi Eddie,
    As Arjit suggested, there are a bunch of functions available in WEBI like GetDominantPreferredViewingLocale(), GetLocale() and GetPreferredViewingLocale(), etc. that you could use.
    There are no such specific functions provided within Dashboards tool.
    So, you can create a WEBI report, and have one of these formulas specified in a variable in the webi report. Then, have the block published as a BIWS and use this BIWS in your dashboard.

  • How do I recover lost entourage folders using time machine?

    How do I recover lost Entourage folders using TimeMachine?

    Open Entourage, activate Time Machine, scroll back in time until the folders (and contents) appear, press restore.

  • How do I close a JInternalFrame when using subclasses and a separate cla...

    The heading should be: How do I close a JInternalFrame when using subclasses and a separate class for the actionListener?
    I have just created a JInternalFrame appclication and now I want to structure up my code. I have a Superclass that contains the usual settings for the two JInternalFrame:s, and the two subclasses with frame specific information. Both the JInternalFrames use the same OK button. I want to have the actionListener outside the classes to avoid repetition of code. But the dispose()-function does not work properly, it does not close the opened JInternalFrame. What�s wrong?
    class Superclass extends JFrame
         JButton b= new JButton("ok");    
         Superclass()
    class Subclass1 extends Superclass
         Subclass1 ()
              add(ok);
           ok.addActionListener(new Listener());
    class Subclass2 extends Superclass
         Subclass2 ()
              add(ok);
           ok.addActionListener(new Listener());
    class Listener extends Superclass implements ActionListener
         public void actionPerformed(ActionEvent e)
                   dispose();
    }How do I controll in the Listener class that the button in Subclass1 is beeing pressed?

    First of all I think I misunderstood your question. You said you had two internal frames, so I thought you wanted to close the internal frame.
    It now looks to me like you want to close the entire JFrame, which makes the code even a little easier. Something like:
    JComponent component = (JComponent)event.getSource();
    JFrame frame = (JFrame)SwingUtilities.windowForComponent( component );
    frame.dispose();
    Ok, I will make a try:
    public static Container getAncestorOfClass(Class c, Component comp)
    w.getAncestorOfClass(w, this); Fiirst you need to learn the basics of reading the API.
    "getAncestorOfClass()" is a static method. That means you don't use a variable to invoke the method. You use the class itself.
    "w" is a variable, which is a JFrame, but that is not what the first parameter should be. The first parameter is a "Class".
    "this" will refer to your Listener class, but you need the Component that generated the ActionEvent.
    When I thought you wanted to close an internal frame then the code would have been something like:
    JComponent component = (JComponent)event.getSource();
    Container container = SwingUtilities.getAncesterOfClass( JInternalFrame.class, component );
    JInternalFrame internalFrame = (JInternalFrame)container;
    internalFrame.invokeSomeMethodHere();If you need further help then you need to create a "Short, Self Contained, Compilable and Executable, Example Program (SSCCE)", that demonstrates the incorrect behaviour.
    http://homepage1.nifty.com/algafield/sscce.html

  • I need to know how I will create a dynamic website using php and mysql

    I need to know how will I create a dynamic website using php and mysql that people could have the abilities of registering in the website, and modify their profile where they can add their pictures and everything. apart from that, they should have the ability to search about other member. hope to here more from you.

    If you are a right-brained creative, and have no previous experience or propensity to be able to understand coding and database "stuff", and/or if your time can be better spent on other skills, I recommend you save your sanity and hire a developer... or at least the first time around. I have been attempting to grasp this for years... and have a library of marked up books to prove my efforts, all while trying to keep up with an ongoing client base that is always cramped. It's a wonder I still have my sanity... then again, I might not be the best person to determine that. Others might question it.
    That said, I still plan to master php... one of these days.

  • How to write the data into EEPROM using Labview?

    How to write the data into EEPROM using Labview?

    You would need some sort of EEPROM programmer. Typically might
    communicate with it via serial. I don't know how you would do this in
    LV. You would need to have the command protocol for the programming
    device to start with.
    Doug De Clue
    gpibssx wrote in message news:<[email protected]>...
    > How to write the data into EEPROM using Labview?

  • Does anyone know how to comunicate with a USB port using labview 6?

    Does anyone know how to comunicate with a USB port using labview 6?

    Unfortunately, there is no way to communicate directly with a USB port before LabVIEW 7.0 and VISA 3.0. With the new releases, there are functions called "VISA USB Control In" and "VISA USB Control Out" that give you direct access to a USB port.
    You can definitely communicate with DAQ, Serial, or GPIB devices that are connected through a USB port, though. This is done seamlessly through the NI-DAQ, NI-Serial, and NI-488.2 drivers.
    Luke S.

  • How to recognize certain word or voice (like cry) using labview and kinect?

    By using labview and kinect, how to recognize some sample world like 'ok', 'help', and voice like crying and screaming?

    This is not really a LabVIEW question, but a signal processing question. Do you have a set of crying sounds in order to be able to calibrate whatever algorthm you are trying to implement?
    LabVIEW Champion . Do more with less code and in less time .

  • How do I correctly time while loops using SCPI and VISA/Ethernet communication to send DC current Values to a Power supply?

    I'm rather new to using labview and I having an
    issue with a test Data Aquisition lab I'm trying to setup using a
    Keithley 6221 AC/DC current source and a basic PCI M-series NI-DAQmx. 
    First of all, I'm looking to update the  current value on a power
    supply at a rate of atleast 10Hz and I'm using SCPI commands and VISA
    communication through ethernet to do so.  Attached below is the VI I
    have written. 
    The issue I'm having is this:
        My VI will
    loop through the values fine in software, or so it seems.  I am unable
    to get the Power supply to update sequentially if I don't set my loop
    delay to anything greater than 130ms.  If I try to run the loop faster
    it starts skipping values instead of counting 1,2,3,4,5,1,2,...etc.  it
    goes 1,2,4,5,2,4,1,2 on the display of the power supply and my DAQ unit
    also skips these values so I know that the number just isn't getting
    read to the Power supply in time.  I was wondering if this was due to
    my sloppy programming or if it is a hardware issue, my computer or the
    method of communication to the power supply?  Is this due to the fact
    that I'm using ethernet and VISA communication?  Is there a faster way
    to communicate or is GPIB faster?  Any input at all would be extremely
    helpful.
    On a side note:  Right now I'm using an pre-determined
    array of values that I can update on the fly but in the future this
    with be put into a  closed-loop control system.  The value for the
    power supply output will be determined by the loop and sent that way.
    Attachments:
    basic DC loop 6221 Keithley.vi ‏145 KB

    Also, one of the string constants is NOT set to '\' Codes Display. Here is an alternative method of calculating the index. I removed the DAQ and VISA stuff since I could not run it.
    Lynn
    Attachments:
    basic DC loop 6221 Keithley.2.vi ‏16 KB

  • I am trying to use Labview and RP1210 compliant hardware to connect to a truck J1939 bus and receive messages.

    I am trying to use Labview and RP1210 compliant hardware to connect to a truck J1939 bus and receive messages. 
    Specifically I am attempting  to read data frames using the RP1210_READMESSAGE .   am able to configure the hardware and send a message to the J1939 bus. .    I think I have not configured something correctly.  I can use the RP1210_SENDMESSAGE and see the message I have sent on the bus using CANalyzer   When I use the RP1210_READMESSAGE   I get the timestamp from a message and the return from the function sends back the correct number of bytes (the number matches the number of bytes I sent out plus four bytes from the timestamp).  What I am having trouble with is actually receiving the data. I have had the same type of behavior from two different hardware (Vector CANcase XL and Nexiq USB Link), so I don't think the issue is vendor specific.
    Has anyone been able to make the RP1210_RECIEVEMESSAGE function work correctly?
    Thanks for any help

    Thanks
    I have already tried that.  The links are the NI RP1210 wraper. The problem I am having is using labview to interface with the RP1210 layer.  The RecieveMessage char*fpchAPIMessage this is the output which is a pointer to a cahracter array.  In this variable I can receive the timestamp of the message but not the message.  The retun showns the correct amount of bytes are aviaable (18 for a 8 byte message) but I can only get the 4 byte timestamp  I think I have to dereference this pointer to view the data.  I am not sure how to fix this. 

  • Please help me with my electrical engineering homework : temperature control and watering system for greenhouse using labview and arduino

    temperature control and watering system for greenhouse using labview and arduino
    spesification :
    1. max temp : 28 celcius (when temperature is more than 28 celcius, fan ON)
    2. min temp : 20 celcius (when temperature is under 20 celcius, heater ON)
    3. watering system : aquaponic (grow plant and fish in separate tank but connect each other). Plant roots help filter water for fish. Fish poop for plants fertilizer. So I need a pump to distribute water.
    Please help me create VI file simulation.. I'm sorry I'm not fluent in English. May God bless you all
    Attachments:
    YOOOSHH.vi ‏88 KB

    Duplicate thread.   Please keep the discussion in that thread where you already have a response. It is also the more appropriate thread for your question.
    Lynn

  • How to detect if the user is using SSL

    I use weblogic 5.1 sp6and NES 4.1. Netscape plug-in connects them together.
    I also install the verisign certificate on the NES 4.1.
    I want my JSP code to detect if the user is using http or https to visit my
    site. However, isSecure() will return false and getSchema will return https
    and getServerPort will return 80, even when the user is using https:// . I
    guess the reason is when the NES forwards the request to the weblogic, it is
    not using https.
    Then how can I detect the protocol the user is using? I use getHeaderNames()
    method to print out all the infomration in the HEADER. However, I find that
    it only includes client header information. Is it true that NES plug-in only
    fowards part of the HEADER information to the weblogic server?
    Thanks

    Comments inline....
    "Lan Jiang" <[email protected]> wrote in message
    news:3a74d511$[email protected]..
    I use weblogic 5.1 sp6and NES 4.1. Netscape plug-in connects themtogether.
    I also install the verisign certificate on the NES 4.1.
    I want my JSP code to detect if the user is using http or https to visitmy
    site. However, isSecure() will return false and getSchema will returnhttps
    and getServerPort will return 80, even when the user is using https:// . I
    guess the reason is when the NES forwards the request to the weblogic, itis
    not using https.getServerPort should return 443. It's a bug. Fixed already in the later
    service packs.
    Workaround: run the server in a port other than 443.
    >
    Then how can I detect the protocol the user is using? I usegetHeaderNames()
    method to print out all the infomration in the HEADER. However, I findthat
    it only includes client header information. Is it true that NES plug-inonly
    fowards part of the HEADER information to the weblogic server?No, it forwards all except the Connection header because it doesn't support
    http 1.1
    Vinod.

  • How to detect baby crying using labview and webcam?

    Hi, I am new to labVIEW. I have a project that it requires me to develope a application to detect various types of  baby crying using labVIEW.The hardware we use will be webcam or kinect xbox 360. The system for my computer is windows 7. I used to try to create a threshold frequency to detect baby crying,but it not work well. So  I want to ask what else method should I use to develop this application that can differentiate baby crying with other kind of sound( like normal talk, music...) correctly? As I just start learning labVIEW, hope the method to be easy to understand. Thanks.

    This is not really a LabVIEW question, but a signal processing question. Do you have a set of crying sounds in order to be able to calibrate whatever algorthm you are trying to implement?
    LabVIEW Champion . Do more with less code and in less time .

  • How to detect a lost hp?

    ho do i detect my lost iphone... coz s/n register under my name..
    i had send an email months ago but not a single staff reply or get back to me...

    Not sure what an "hp" is. Hewlett-Packard?
    The serial number won't help, and Apple can't help you either, by email or any other method. The one option they give you is Find My iPhone, so hopefully you set it up. If so, go to http://icloud.com and see if you can locate it that way.
    Matt

Maybe you are looking for

  • Is it possible to easily view the actual (not displayed) value of a cell?

    Is it possible to easily view the actual value of a cell calculated by a formula, not the displayed value after it has been rounded off? For instance, if you enter the number 1.23456789 and display it rounded to 3 decimal places, you can still see th

  • [Theme] Black75 for N9

    NOTE: While this does not void a warranty, if you are not familiar or comfortable with using terminal or flashing (just in case), you may be best to just looky-loo here. Anything released here is tested and does not "break" the device. Remember, anyt

  • How can I open a .wps attachment in Entourage?

    How can I open a .wps attachment in Entourage?

  • 10.8.3 Fix for Logic's Unresponsive GUI issue?

    Well, 10.8.3 is out with a  fix for the Logic GUI Lag / Non responsive plugins.... issue -The ability to redeem iTunes gift cards in the Mac App Store using Mac's built-in camera -Boot Camp support for installing Windows 8 -Boot Camp support for Macs

  • Database crashed on AIX

    I am scratching my head on this one, a certain query crashed the database, the server is started top swap, and nothing could be done on the database, this is on an AIX server, any ideas?