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
-
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. " finalbligwHi ,
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,
VenuHi 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, ChristianHi 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,
UjjalAs 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
ThanksTab 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 KBIt'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. -
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 KBAre 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 -
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
-
Three days ago my iPod stopped syncing my email. I have IOS 8.1.2 so my software is up to date. I've changed no settings that I'm aware of. I now must check my gmail using the gmail APP. It says it's "checking for mail", but nothing shows up. Ho
-
FRM-41042 -No such property for set_item_property
Hello all! Im getting the above error when issuing the statement below in a post-query trigger in a form. set_item_property('emp_mst.sub_div_cd',ENABLED,PROPERTY_TRUE); I find this strange coz i've been using it b4. Thnx
-
Can you have pages and word on the same computer
can you have pages and word on the same computer
-
Help! Lightroom freezes after installing.
I get this message after trying to create or open a catalog: "An error occured when attemting to change modules." Then Lightroom freezes. I work on a Mac and have formatted and reinstalled my systemdisk with a qlean install. I had Lightroom installed
-
I have created a couple of folders for my apps and have placed them in the right side of the doc. I have customised each folder with an icon, however as soon as I drop a few apps into the folder the icon disappears and the folder becomes a jumbled me