Handle Event for Characters At Serial Port in an eventstructure

I want to write an event driven application for serial communcation without polling for characters at serial port, instead I want to have an event case in the event structure for this event. Is this possible and how can i do it?

You should be able to execute the example that I posted with an event structure in parallel. I modified the last example so that on thread is waiting for the serial event and then another thread is executing an event structure that just increments a counter. You should be able to increment the counter any time you want and the serial event will complete as soon as a message is read independent of one another.
Unfortunately, I don't know how to (and I am not sure you can) setup an event structure to work with VISA or DAQ events. If you put your VISA Wait on Event inside of your event structure it will hold and prohibit any other events from executing until it is done. However, if any event fires it will block the other
events until it completes. If you uncheck the box under the your event properties you can prevent the front panel from locking. This will at least queue up the events.
I hope this helps out. Attached are some examples.
-Josh
Attachments:
visaRead.vi ‏42 KB
visaRead2.vi ‏49 KB
visaRead3.vi ‏49 KB

Similar Messages

  • Handling events for

    I have a JApplet (menuhandle.java) that adds a menubar. While handling events for the "Open" menu item under File menu(to make it show the OpenFileDialog box) a NullPointerException was thrown. How should this be overcome?
    public void actionPerformed(ActionEvent e)
    if (e.getActionCommand() =="Open")
    chooser = new JFileChooser();
    int returnVal = chooser.showOpenDialog(new menuhandle());
    chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
    ExampleFileFilter filter = new ExampleFileFilter();
    filter.addExtension("dcm");
    filter.setDescription("Dicom files");
    chooser.setFileFilter(filter);
    if(returnVal == JFileChooser.APPROVE_OPTION)
    File file=chooser.getSelectedFile();
    if(filter.accept(file))
    str=file.getName();
    I need to display the Open File dialog box and also retrieve the file the user actually selected, in order to do certain manipulations with it. Can somebody tell me how to go about this?

    Just a guess, but could the problem be related tothe
    fact that for security purposes many file
    manipulation functionality is disabled in applets?Indeed. The SecurityManager for unsigned applets does
    not allow the use of JFileChooser
    Thanx a lot. But if i make menuhandle .java as a simple class (without extending JApplet) and then try to use this class from inside another applet........will this work? Or will the SecurityManager still not allow the use?

  • Callback functions to handle events for a specific system build block

    I have two questions about customized event handling in Systembuild:
    1- The SystemBuild Utility "sysbldEvent" can bo used to specify additional actions for the "openblock" and "navigate" events. However, it will be applied to all systembuild blocks.
    Is there a way to limit its scope to a specific block or block type?
    This has been done for the Altia block (which is a customized UCB block) - a double-click will open a special dialog box. Is this feature implemented using publicly available systembuild features or there are other special features used?
    2- Is there any way to assign callbacks to other type of block events: copy, paste, etc ...
    Thanks.

    Farshid,
    There are a couple of options for creating custom dialogs/blocks.
    SysbldEvent can be used. As you noted it will generate and event for all the blocks. You can not generate an event only for a specific block. However the Xmath function has two values sent to it. One is the type of event (blockopen or navigate) and the blockId. You can use blockId together with SBA commands to find out which block generated the event. If it is a block that you are not interested in then return 0 and SystemBuild opens the normal dialog. If it is the right block then you can open your own dialog or perform what ever action is needed. Finally return a 0 if you want SystemBuild to still open the normal dialog, or you can return 1 and no dialog is opened.
    The Altia
    block is a custom block. It is a standard UserCode block that has been customized to have differnt default parameters and different icon. In the SystemBuild editor (not catalog browser) select a block and the go to Edit>New Custom Block. The custom block can a have a MathScript function associated with it that gets called when the block is created. For more information on custom blocks see chapter 18 of the SystemBuild Users Guide (Help>Search MATRIXx Bookshelf from Xmath).
    The final method is creating a component. For a component percent vars can remain internal or they can be available to the user. You can also provide a different set of parameters that are available to the user, and then provide equations for how they map to the internal percent vars. Information on Components is in Chapter 17 of the SystemBuild User's Guide.
    Carl L
    National Instruments

  • Function for reading from serial port

    Hi experts,
    We are trying to read data from the serial port with the following function we got from internet.
    The problem is when creating the object with the sentence CREATE OBJECT o_obj '"MSCOMMLib.MSComm.1"'.
    This returns a sy-subrc = 2 and shows the exception NO_CREATE_OBJECT.
    We already copied the file MSCOMM32.OCX in c:\windows\system32 and we successfuly registered it, with regsvr32.exe.
    We tried it with Windows XP and Vista.
    Anybody has any idea?
    Thanks in advance
    FUNCTION ZSERIALCOM.
    ""Interfase local
    *"  IMPORTING
    *"     REFERENCE(MODE) TYPE  I DEFAULT 0
    *"     REFERENCE(COMMPORT) TYPE  I DEFAULT 1
    *"     REFERENCE(SETTINGS) TYPE  C DEFAULT '2400,N,8,1'
    *"     REFERENCE(OUTPUT) TYPE  C OPTIONAL
    *"  EXPORTING
    *"     REFERENCE(INPUT) TYPE  C
    *"  EXCEPTIONS
    *"      NO_CREATE_OBJECT
      TYPE-POOLS: sabc.
      INCLUDE ole2incl.
      PERFORM init.
      PERFORM open_port USING commport settings.
      IF mode = 0.
        PERFORM read_port
        CHANGING input.
      ENDIF.
      IF mode = 1.
        PERFORM write_port
        USING output
        CHANGING input.
      ENDIF.
      PERFORM final.
    ENDFUNCTION.
    DATA: o_obj TYPE ole2_object.
    *& Form Init
    text
    --> p1 text
    <-- p2 text
    FORM init.
    DATA:
    wa_repid LIKE sy-repid.
    wa_repid = sy-repid.
    CALL FUNCTION 'AUTHORITY_CHECK_OLE'
    EXPORTING
    program = wa_repid
    activity = sabc_act_call
    application = 'MSCOMMLib.MSComm.1'
    EXCEPTIONS
    no_authority = 1
    activity_unknown = 2
    OTHERS = 3.
    IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
    CREATE OBJECT o_obj '"MSCOMMLib.MSComm.1"'.
    IF sy-subrc <> 0.
    RAISE no_create_object.
    ENDIF.
    ENDFORM. " Init
    FORM open_port *
    --> COMMPORT *
    --> SETTINGS *
    FORM open_port USING commport settings.
    SET PROPERTY OF o_obj 'CommPort' = commport.
    SET PROPERTY OF o_obj 'Settings' = settings.
    SET PROPERTY OF o_obj 'InputLen' = 0.
    SET PROPERTY OF o_obj 'PortOpen' = 1.
    ENDFORM. "open_port
    FORM read_port *
    --> INPUT *
    FORM read_port
    CHANGING input.
    DATA:
    wa_buffer TYPE i.
    DO 10 TIMES.
    GET PROPERTY OF o_obj 'InBufferCount' = wa_buffer.
    IF wa_buffer > 0.
    GET PROPERTY OF o_obj 'Input' = input.
    EXIT.
    ENDIF.
    ENDDO.
    ENDFORM. " read_port
    FORM write_port *
    --> OUTPUT *
    FORM write_port
    USING output
    CHANGING input.
    DATA:
    wa_buffer TYPE i.
    SET PROPERTY OF o_obj 'Output' = output.
    DO 10 TIMES.
    GET PROPERTY OF o_obj 'InBufferCount' = wa_buffer.
    IF wa_buffer > 0.
    GET PROPERTY OF o_obj 'Input' = input.
    EXIT.
    ENDIF.
    ENDDO.
    ENDFORM.
    *& Form final
    text
    --> p1 text
    <-- p2 text
    FORM final.
    SET PROPERTY OF o_obj 'PortOpen' = 0.
    FREE OBJECT o_obj.
    ENDFORM. " finalbligw

    Hi ,
    I want to read value form weigh bridge through COMM port. I have developed the FM and done the setting as mentioned in the below link
    Read COMM port using ABAP w/o third party software 
    but while executing the FM independently I am able to get the value from the COMM port,but when I call the FM from a program I am not able to get the output value from the FM.I am calling the FM from the report program.please find the code below.
    report test.
    data : lv_input TYPE c.
    CALL FUNCTION 'ZFM_WEIGHINTERFACE'
      EXPORTING
        MODE                         = 0
        COMMPORT               = 1
        SETTINGS                  = '1200,N,8,1'
        OUTPUT                     = ''
      IMPORTING
        INPUT                        = lv_input
      EXCEPTIONS
        NO_CREATE_OBJECT       = 1
        OTHERS                 = 2
    IF SY-SUBRC <> 0.
    * Implement suitable error handling here
    ENDIF.
    if I execute the FM independently the output is getting perfectly.but while calling from a program i am facing the issue..
    any suggestion is appreciated.
    Thanks
    Vivek

  • Handling event for Tree Control Collapse

    Hi,
    Can any one suggest how to handle an event for 'Tree Node Collapse' . I have checked with all the exised tree events.
    thanks,
    Venu

    Hi Venugopal,
        If you are doing tree control programmin then i can suggest you a approach for tree node collapse and expand.
    for doing this follow these steps.
    1. create a toolbar (use class cl_gui_toolbar), add a button and assign a FCODE to it.
    2. here you register the following the event for the toolbar.
    gs_event-eventid = cl_gui_toolbar=>m_id_function_selected.
    3. here you set the handler for the toolbar events
      SET HANDLER  gref_application->handle_function_selected
                FOR  gref_toolbar.
    4. now in your class for gref_application you write a definition and implementation.
    definition
    handle_function_selected FOR EVENT handle_function_selected OF cl_gui_toolbar IMPORTING fcode.
    implementation
    CASE fcode.
       when 'collapse'.
          CALL METHOD xref_tree->collapse_all_nodes.
    this method might change depending upon the class you use for creating the tree.
    i hope this will help you.
    in case of clarification do get back to me.
    regards,
    Kinshuk Saxena
    PS mark helpful answers

  • Want to handle event for component defined inside skin for host component

    Hi,
    Following is how my skinned button looks -
    As can be seen, there is a checkbox - which is a part part button skin.
    When mouse is over chckbox area and does clicked, I wanted to capture that event for checkbox as target. Objective is to mark checkbox as checked or unchecked when clicked on. I don't want checkbox to change its state when mouse is clicked over other area in button.
    Don't know whether it is possible or not. If yes, what is the best way to do it.
    Thanks in advance,
    Prithveesingh Zankat.

    Hello!
    I face the same problem with Failed to create delegate for component:
    com.sap.tc.webdynpro.services.exceptions.WDRuntimeException: Failed to create delegate for component
    XXX.YYY.ZZZ..ume.Ume. (Hint: Is the corresponding DC deployed correctly? Does the DC contain the component?)
    Caused by: java.lang.reflect.InvocationTargetException
    Caused by: java.lang.NoClassDefFoundError: com.sap.tc.webdynpro.model.webservice.gci.WSTypedModelClass
    I think this started after upgrading from 7.01 SP3 to SP5, but I'm not sure.
    What was it that solved your issue?
    *I found the error. My ProjectProperties.wdProperties did not contain the references it needed.*
    Edited by: Richard Linnander on Nov 23, 2009 2:33 PM

  • Unwanted data strings in settings, for connectivity to serial port.

    When my program connects to the unit, threw the serial port its recording an unwanted string value in my setting files. Causing "19,Read Key (Boolean).vie" Error to be recorded. Unable to locate where and why this is happening in my VI. Im very new to labview and still learning the basic. I have came up with the conclusion that this error started to happen ever since the last LABVIEW update. (Version 13.0f2).
    Thank you, 

    This is my original copy of my labview code, i thought maybe updating it was causing the error 19. 
    The first Settings.ini is before my code is ran, second is the error after the code is ran. 
    I inherited a program and im trying to follow all the code to key in where the code is causing the error. Im not sure what exactly code I should post. 
    Attachments:
    Settings.ini ‏1 KB
    Settings.ini ‏1 KB

  • ALV: how to handle event for multi (lead) row selection ?

    Hi,
    I use editable ALV and configure it for multi (lead) selection. Works fine.
    But I could not find any event handler for reading the selected lines.
    There is only the Event handler ON_LEAD_SELECT: this works only for 1 line
    (the lead line). But I could not read multi lines. Who can help?
    Thanks in advance, Christian

    Hi Christian,
    did you try a custom button?
    Try a call
    node->GET_SELECTED_ELEMENTS
    I cant remember if ALV sends event when multi-selection is on for each row selection.
    ie as each row is selected, do you get control ?
    If so, then you should still be able to call node->GET_SELECTED_ELEMENTS .
    regards
    Phil.

  • How to Handle Events for JOptionPane buttons?

    Hi All,
    I need a help...
    I am trying to develop a simple SWING application that consists of multiple elements (mainly text fields) and a Submit button. On pressing Submit button, it should validate all the fields and then do something else. But if some fields are left blank, then it should give a pop-up message and on clicking the OK button on the pop-up message, the focus should go to that text field which is left null.
    The problem is I am not able to understand how to Capture this OK button click-event of the pop-up message. I mean how to do something when the OK/Cancle button of the pop-up window is clicked.
    Please Help me.
    Thanks in Advance,
    Ujjal

    As already pointed out, JOptionPane has some static methods which show a dialog, and return an int, or a string. The whole point of this class is to remove the need for any event handling by the developer, that is, you simply call the showDialog method or whatever, and it returns a value telling you, for example, which button was pressed - no need for action listeners at all. The result of the showDialog method (or whichever you use) tells you which button was pressed. Check the javadocs for JOptionPane for details of several constants that indicate which button was pressed
    The class exists to make simple dialogs trivial to generate - you're overcomplicating things!

  • How to handle events for Tab Control

    Hi,
    I have a Tab control with 4 tabs and I would like when I go to a specific tab all the contents of that tab being updated. Could you please help me with this?
    How should I set the event structure
    Thanks

    Tab Control->Value Change is the event you want.  You can then use a case structure to do whatever you need it to based on the "New Value".
    There are only two ways to tell somebody thanks: Kudos and Marked Solutions
    Unofficial Forum Rules and Guidelines

  • Timeout units for VISA Configure Serial Port

    Hi there,
    Can anybody answer a simple question:
    What units are used to setup a timeout: seconds or milliseconds?
    LabView Help is very confusing.
    Thanks,
    Greg
    Attachments:
    VisaTimeout.JPG ‏75 KB

    It's milliseconds. You can see this for yourself by just opening the front panel of the function. You'll see the label of 'timeout (10sec)' and a value of 10000 in the control.
    Message Edited by Dennis Knutson on 05-02-2007 09:29 AM
    Attachments:
    VISA Timeout.PNG ‏23 KB

  • Can air for html/ajax accessing serial port or usb?

    I just have made use of Adobe AIR .I want to use printer with
    air . Do air have some poperties to accessing serial port or usb?
    I look up that on the Adobe AIR documents.I only found
    'Adobe® AIR™ provides the eans to check for changes to
    the network connectivity of the computer on which an AIR
    application is installed'.
    Do you have some demo with Adobe AIR accessing serial port or
    usb ?
    Or has another poperties to do that!
    thank you!!

    There is no API for accessing the serial port. USB devices
    can only be accessed through the file system (and only if they are
    storage devices).

  • Serial port definitions/handling questions

    Xserve (brand spanking new), 10.6.2
    1- Setting speed for the tty.serial port
    I edited, as documnented, the /etc/ttys file to use "serial.9600" instead of "serial.57600" which unfortunatly is now default for the one serial port of the Xserve. Then I "kill -HUP 1" to get launchd to refresh its definition. No difference.
    In the end, out of desperation after many trials without success, I edit /etc/getttytab and change sp#57600 to sp#9600 in the serial.57600 definition and this finally worked.
    This sort of indicates to me that launchd no longer uses /etc/ttys but some other hidden file where the serial.57600 is assigned to getty and tty.serial.
    Anyone know where the serial ports are now defined ?
    Also, once the system is up, is there a way to release the port from the login process so that I could make an outbound connection using cu/screen ?

    Thanks for the responses.
    I suspected it was in a PLIST, but I am not yet used to the Snow Leopard finder to get to "unix" directory and hadn't gotted a list of files in that directory and figured it was empty and that the launchd plists were elsewhere. Argh ! That is what lack of sleep does
    I take it that in that plist, the "SessionCreate" refers to the "on" or "off" that one uses in ttys ?
    Also, if I am to get an 8 port USB gizmo, would I be adding them to the comp.apple.xserve.serial-ports plist ? In which case, I take it that the launchctl control is an all or nothing, unable to control individual ports ? Should I then create individual plists for each port so I can control them individually ?
    BTW, while launchctl unload did remove the getty process assigned to tty.serial, the port is still marked as "Line in use" and "cu" unable to use it.

  • Serial Port Overrun

    Hello All,
    I am developing Teststand sequences which run Labview code. I use 1 labview vi to configure and drive the serial port, the first call configures the serial port. The second call writes a message and reads the response, the last call releases the resource. When running the call write&read I intermittently receive the error shown in the attached jpg, this causes my whole sequence to lockup till I return to restart the test. I need to run this repeatedly overnight so its a problem. I have a feeling this isnt so much a serial port overrun problem as a hardware clash ( i also configure and run a camera ).
    I have spotted a number of posts a on this same topic but I havent yet found a soultion only advice, which I have already tried.
    Help greatly appreciated
    Regards Chris
    Attachments:
    Serial Port Error.jpg ‏63 KB

    Are you familiar with handshaking?  There were several posts on this subject recently.  The end device is sending data faster than your computer and Labview program can handle.  You need to implement handshaking.  There are two types of handshaking, software and hardware:
    Software, also called XON/XOFF.  With this setup, when the computer serial port incoming buffer gets nearly full, it automatically sends an XOFF command (don't worry about what it is since it is automatic).  The XOFF command tells the endpoint device to stop sending data.  When the buffer gets near empty, the computer sends an XON command.  The endpoint device then starts sending data again.  For this protocol, the endpoint device must be able to support this, and must be configured to use this type of handshaking.  You would have to read the manual to find out how to set it up.  For the computer end, you can set it up with an option for the configure serial port function on the input labeled "Flow Control".  Right click on this terminal and select Create - Constant.  A text ring will be created.  Select XON/XOFF in the text ring.
    Hardware, also called RTS/CTS.  Same principle in that the computer signals the endpoint when to stop sending data and when to start again.  However, instead of sending a command, the computer drops the CTS line (Clear To Send).  Actually, the endpoint device raises the RTS (Request To Send) when it wants to send data, and the computer responds with raising CTS if it is ready to receive data.  When the buffers get full, the computer drops CTS which tells the endpoint to stop sending data.  When the computer is ready to start receiving again, it raises CTS.  Again, both sides must be configured for this.  The text ring has an RTS/CTS selection.
    You will have to read the manual on your endpoint device to see what it supports and how to configure it.  Warning:  If sending binary data, DO NOT use XON/XOFF.  The binary data may just happen to form a pattern that looks like XOFF, and everything will lock up because XON will never be sent.  So if binary data is being transferred, use RTS/CTS.  If normal ASCII characters are being sent, you can use either protocol.
    - tbob
    Inventor of the WORM Global

  • Writing to serial port

    I currently send ASCII characters to a serial port. I have not errors reported back. Everything appears to be error free, except that the device that I am trying to control does nothing. The device being controlled does not send anything back to the pc. The connection is strictly a one way connection. Do you have to send a carriage return or something to get the ASCII characters to "push" out of the buffer? - Sorry I don't have access to my code at the moment.

    A portion of my code is below. What does the 'flush'
    do? I thought it just emptied out the buffer.
    while (portList.hasMoreElements()) {
    portId = (CommPortIdentifier)
    tIdentifier) portList.nextElement();
    if (portId.getPortType() ==
    ortType() == CommPortIdentifier.PORT_SERIAL) {
    if (portId.getName().equals("COM1"))
    .equals("COM1")) {
    try {
    serialPort = (SerialPort)
    portId.open("SimpleWriteApp",
    d.open("SimpleWriteApp", 2000);
    } catch (PortInUseException e)
    ortInUseException e) {}People get life for this crime!
    try {
    outputStream =
    outputStream =
    tStream = serialPort.getOutputStream();
    } catch (IOException e) {}So you now have two life sentences to serve.
    try {
    serialPort.setSerialPortParams(9600,
    SerialPort.DATABITS_8,
    SerialPort.STOPBITS_1,
    SerialPort.PARITY_NONE);
    } catch
    } catch
    } catch (UnsupportedCommOperationException e) {}Sorry, three life sentences to serve.
    try {
    outputStream.write(rightString.getBytes());
    } catch (IOException e) {}You get the prize! Four life sentences from a short bit of code.
    }P.S. You should really use the COMM api for writing to serial ports.

Maybe you are looking for