How can I write a local subroutine in LabVIEW
I have a large software package with a considerable number of subroutines only useable by a single upper level program. I would like to embed these subroutines into the program. I cannot enlarge the program drawing because of coding standards. Is there some way to place the subroutine on the existing diagram, but as a subroutine that is callable anywhere in the program.
Any good program uses a modular design. In text-based languages, the source code typically contains multiple subroutines or functions in a single source file. In LabView, the hierarchy is built with sub-VIs, as Dennis and Steve have said. You cannot include multiple VIs in a single diagram. Each VI has its own diagram.
If I understand your question, there is no good way to create "local subroutines" as you see them: one section of the diagram that may get called from multiple places on the same diagram. The dataflow model of LabView doesn't support this. For some applications, it may be possible to build a state-machine that does this in a very limited way, but then you're eliminating some of the benefits of modular code, including the flexibility to use a subrou
tine (subVI) anywhere.
If you simply copy the diagram from the subVI onto the diagram of the calling VI and wire it in, you're creating single-use code (code that gets called only from one place). You'll be sorry if you do this for anything but the simplest application. Modular code is so much easier to develop, debug and maintain.
Click here for some addition discussion on modular code in LabView.
Similar Messages
-
How can i write this C-Code in G-Code
hallo
how can I write this C-Code in LabVIew ,
for a=0; a=<10; a++
for b=0; b=5 ; b+2
X= 3+b;
Y=1+a;
please see the attachment and tell me where is the problem
Attachments:
Unbenannt 11.vi 43 KBWell, at least you tried and got some of it right.
I think this should do what you want, but my C is rusty. Is the increment performed before or after the loop executes? If it's after, then I believe the loop should iterate 11 times, not 10.
In any case, you should note that for a literal translation, you would need to add a sequence structure to guarantee that Y was written to only after the inner loop finished because of the way data-flow works.. Also, note that controls and indicators in LabVIEW are not equivalent to variables. They can be used as such, but they usually should not be.
Another point about this is that you probably want to use the correct data type - the orange terminals are floating point indicators (of double precision, in this case) and you want integers.
To learn more about LabVIEW, I suggest you try looking at some of these tutorials.
Try to take over the world!
Attachments:
C.png 4 KB -
How can i write properties file for Hindi font
Hi All,
i'm using jdev 11.1.1.5.0
in my use case i have worked on internationalization where i want to use hindi font
like this link -
Majid Hussain: Internationalization of ADF 11.1.1.3 Applications
as in above post majid used german language and write properties file for german language(which is using english character).
but my problem is that i want to use hindi language
so how can i write propery file which support hindi font.
ManishHi Manish,
We also had same requirement where we need to show indian local language(Hindi ,Bengali and many more ).
We had implemented following approach and perhaps it will helpful for you.
1-First we changed the encoding value in jdeveloper.
go to jdeveloper --> tools --->preference-->encoding , select to UTF8
2-We used to get the properties and it's translated value from business and then we were manually put these pair into related resource bundle.
And using this we were able to implemented multilanguage support.
Thanks
Prateek -
How can I write a tree report?
How can I write a tree report? If you have any document/ link can you please send that.
Regards,
SubhasishREPORT zdemo_alv_tree.
Demo program prepared for ****************
CLASS cl_gui_column_tree DEFINITION LOAD.
CLASS cl_gui_cfw DEFINITION LOAD.
DATA tree1 TYPE REF TO cl_gui_alv_tree_simple.
INCLUDE <icon>.
INCLUDE bcalv_simple_event_receiver.
DATA: gt_sflight TYPE sflight OCCURS 0, " Output-Table
gt_fieldcatalog TYPE lvc_t_fcat, " Field Catalog
gt_sort TYPE lvc_t_sort, " Sorting Table
ok_code LIKE sy-ucomm. " OK-Code
END-OF-SELECTION.
CALL SCREEN 100.
*& Form BUILD_FIELDCATALOG
This subroutine is used to build the field catalog for the ALV list
FORM build_fieldcatalog.
get fieldcatalog
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'SFLIGHT'
CHANGING
ct_fieldcat = gt_fieldcatalog.
change fieldcatalog
DATA: ls_fieldcatalog TYPE lvc_s_fcat.
LOOP AT gt_fieldcatalog INTO ls_fieldcatalog.
CASE ls_fieldcatalog-fieldname.
WHEN 'CARRID' OR 'CONNID' OR 'FLDATE'.
ls_fieldcatalog-no_out = 'X'.
ls_fieldcatalog-key = ''.
WHEN 'PRICE' OR 'SEATSOCC' OR 'SEATSMAX' OR 'PAYMENTSUM'.
ls_fieldcatalog-do_sum = 'X'.
ENDCASE.
MODIFY gt_fieldcatalog FROM ls_fieldcatalog.
ENDLOOP.
ENDFORM. " BUILD_FIELDCATALOG
*& Form BUILD_OUTTAB
Retrieving the data from the table and filling it in the output table
of the ALV list
FORM build_outtab.
SELECT * FROM sflight INTO TABLE gt_sflight.
ENDFORM. " BUILD_OUTTAB
*& Form BUILD_SORT_TABLE
This subroutine is used to build the sort table or the sort criteria
FORM build_sort_table.
DATA ls_sort_wa TYPE lvc_s_sort.
create sort-table
ls_sort_wa-spos = 1.
ls_sort_wa-fieldname = 'CARRID'.
ls_sort_wa-up = 'X'.
ls_sort_wa-subtot = 'X'.
APPEND ls_sort_wa TO gt_sort.
ls_sort_wa-spos = 2.
ls_sort_wa-fieldname = 'CONNID'.
ls_sort_wa-up = 'X'.
ls_sort_wa-subtot = 'X'.
APPEND ls_sort_wa TO gt_sort.
ls_sort_wa-spos = 3.
ls_sort_wa-fieldname = 'FLDATE'.
ls_sort_wa-up = 'X'.
APPEND ls_sort_wa TO gt_sort.
ENDFORM. " BUILD_SORT_TABLE
*& Module PBO OUTPUT
This subroutine is used to build the ALV Tree
MODULE pbo OUTPUT.
IF tree1 IS INITIAL.
PERFORM init_tree.
ENDIF.
SET PF-STATUS 'ZSTATUS'.
ENDMODULE. " PBO OUTPUT
*& Module PAI INPUT
This subroutine is used to handle the navigation on the screen
MODULE pai INPUT.
CASE ok_code.
WHEN 'EXIT' OR 'BACK' OR 'CANC'.
PERFORM exit_program.
WHEN OTHERS.
CALL METHOD cl_gui_cfw=>dispatch.
ENDCASE.
CLEAR ok_code.
ENDMODULE. " PAI INPUT
*& Form exit_program
free object and leave program
FORM exit_program.
CALL METHOD tree1->free.
LEAVE PROGRAM.
ENDFORM. " exit_program
*& Form register_events
Handling the events in the ALV Tree control in backend
FORM register_events.
define the events which will be passed to the backend
DATA: lt_events TYPE cntl_simple_events,
l_event TYPE cntl_simple_event.
define the events which will be passed to the backend
l_event-eventid = cl_gui_column_tree=>eventid_node_context_menu_req.
APPEND l_event TO lt_events.
l_event-eventid = cl_gui_column_tree=>eventid_item_context_menu_req.
APPEND l_event TO lt_events.
l_event-eventid = cl_gui_column_tree=>eventid_header_context_men_req.
APPEND l_event TO lt_events.
l_event-eventid = cl_gui_column_tree=>eventid_expand_no_children.
APPEND l_event TO lt_events.
l_event-eventid = cl_gui_column_tree=>eventid_header_click.
APPEND l_event TO lt_events.
l_event-eventid = cl_gui_column_tree=>eventid_item_keypress.
APPEND l_event TO lt_events.
CALL METHOD tree1->set_registered_events
EXPORTING
events = lt_events
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
illegal_event_combination = 3.
set Handler
DATA: l_event_receiver TYPE REF TO lcl_tree_event_receiver.
CREATE OBJECT l_event_receiver.
SET HANDLER l_event_receiver->on_add_hierarchy_node
FOR tree1.
ENDFORM. " register_events
*& Form build_header
build table for header
FORM build_comment USING
pt_list_commentary TYPE slis_t_listheader
p_logo TYPE sdydo_value.
DATA: ls_line TYPE slis_listheader.
LIST HEADING LINE: TYPE H
CLEAR ls_line.
ls_line-typ = 'H'.
LS_LINE-KEY: NOT USED FOR THIS TYPE
ls_line-info = 'ALV TREE DEMO for ****************'.
APPEND ls_line TO pt_list_commentary.
p_logo = 'ENJOYSAP_LOGO'.
ENDFORM. "build_comment
*& Form init_tree
Building the ALV-Tree for the first time display
FORM init_tree.
PERFORM build_fieldcatalog.
PERFORM build_outtab.
PERFORM build_sort_table.
create container for alv-tree
DATA: l_tree_container_name(30) TYPE c,
l_custom_container TYPE REF TO cl_gui_custom_container.
l_tree_container_name = 'TREE1'.
CREATE OBJECT l_custom_container
EXPORTING
container_name = l_tree_container_name
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
create tree control
CREATE OBJECT tree1
EXPORTING
i_parent = l_custom_container
i_node_selection_mode =
cl_gui_column_tree=>node_sel_mode_multiple
i_item_selection = 'X'
i_no_html_header = ''
i_no_toolbar = ''
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
illegal_node_selection_mode = 5
failed = 6
illegal_column_name = 7.
create info-table for html-header
DATA: lt_list_commentary TYPE slis_t_listheader,
l_logo TYPE sdydo_value.
PERFORM build_comment USING
lt_list_commentary
l_logo.
repid for saving variants
DATA: ls_variant TYPE disvariant.
ls_variant-report = sy-repid.
register events
PERFORM register_events.
create hierarchy
CALL METHOD tree1->set_table_for_first_display
EXPORTING
it_list_commentary = lt_list_commentary
i_logo = l_logo
i_background_id = 'ALV_BACKGROUND'
i_save = 'A'
is_variant = ls_variant
CHANGING
it_sort = gt_sort
it_outtab = gt_sflight
it_fieldcatalog = gt_fieldcatalog.
expand first level
CALL METHOD tree1->expand_tree
EXPORTING
i_level = 1.
optimize column-width
CALL METHOD tree1->column_optimize
EXPORTING
i_start_column = tree1->c_hierarchy_column_name
i_end_column = tree1->c_hierarchy_column_name.
ENDFORM. " init_tree -
How can i get more local storage space on my iphone 4
I want to put more song on my iphone 4 but it keeps saying i dont have enough local staorage space. How can i get more local storage space on my iphone 4?
You don't. Delete 'stuff' you don't need or buy a phone with more storage. you can not increase or upgrade the internal storage in the iPhone.
-
How can I write a program that compiles without warnings?
I tried the following with the 1.5 beta-compiler (build 28; I think):
class Y {
public static final class Pair<X,Y> {
private X fst;
private Y snd;
public Pair(X fst, Y snd) {this.fst=fst; this.snd=snd;}
public X getFirst() { return fst; }
public Y getSecond() { return snd; }
public String toString() { return "("+fst+","+snd+")"; }
public static void main(String... args) {
Pair[] pairArr = new Pair[10]; // supposed to be an array of Pair<Integer,Integer>
for (int i=0; i<pairArr.length; i++)
pairArr[i] = new Pair<Integer,Integer>(i,i);
for (int i=0; i<pairArr.length; i++) {
Pair<Integer,Integer> p = pairArr; // unchecked warning
System.out.println(p);
Integer first = p.getFirst();
Integer second = p.getSecond();
// ... more stuff ...
It turns out that I get an unchecked warning when I extract an element from the array of pairs. Okay, that's fine. How can I avoid the warning? I had expected that an explicit cast would help.
Pair<Integer,Integer> p = (Pair<Integer,Integer> )pairArr;
With a cast I'm telling the compiler: "I _know_ what I'm doing; please trust me." But the compiler still issues a warning.
How can I write a warning-free program in this case? The only thing I can think of, is not using the parameterized type Pair in its parameterized form. But it's not the idea of Java Generics that I refrain from using parameterized types. What am I missing?It turns out that I get an unchecked warning when I
extract an element from the array of pairs. Okay,
that's fine. How can I avoid the warning? I had
expected that an explicit cast would help.
Pair<Integer,Integer> p = (Pair<Integer,Integer>
)pairArr;
With a cast I'm telling the compiler: "I _know_ what
I'm doing; please trust me." But the compiler still
issues a warning. Yes, but at least you were able to change the warning from "unchecked assignment" to "unchecked cast" which is a little shorter ;-)
Seriously , since arrays of generic types are disallowed, there is probably no way to get rid of these warnings - which makes a strong point for eliminating "unchecked" warnings altogether (see the other thread "selectively suppressing compiler warnings")
Cheerio,
Gernot -
How can I Write a sine wave in an Access-fil​e?
I measure a sine wave in LabView 6i. How can I write the datas automatically to an Acces-file, at the same time?
In my program, I managed it with Execute SQL.vi, I change a number in a SQL statement(String) -> after this I push start and then it writes the statement in the Access-file.
The problem is, it writes only one data per measurement in the file. How can I write all datas in the Access-file and measure the wave at the same time?
Thanks for help!
Attachments:
getwave.vi 49 KBOn the waveform palette, you will find a "to components" vi that you can break out the array of the waveform. You can then, using a for loop write all of the values from the waveform.
Better yet, there are examples in the database toolkit manual on pages 3-13 to 3-15 that deal with reading arrays (and even has a waveform example).
Good luck! -
How can i write the below code using "For all entries"
Hi
How can we write the below code using "for all entries" and need to avoid joins...
Please help
SELECT aaufnr aobjnr aauart atxjcd a~pspel
agstrp awerks carbpl cwerks
INTO TABLE t_caufv
FROM caufv AS a
INNER JOIN afih AS b
ON aaufnr = baufnr
INNER JOIN crhd AS c
ON bgewrk = cobjid
AND c~objty = 'D'
WHERE ( a~pspel = space
OR a~txjcd = space
OR NOT a~objnr IN
( select OBJNR from COBRB AS e
WHERE objnr = a~objnr ) )
AND a~werks IN s_plant
AND a~auart IN s_wtype
AND NOT a~objnr IN
( select OBJNR from JEST AS d
WHERE objnr = a~objnr
AND ( dstat = 'A0081'OR dstat = 'A0018' )
AND d~inact 'X' ).
Reward points for all helpfull answers
Thanks
Ammi.Hi,
SELECT objnr objid aufnr
from afih
into table t_afih.
SELECT objnr
from JEST
into table t_JEST
where stat = 'A0045'
OR stat = 'A0046'
AND inact 'X'.
SELECT objnr
from COBRB
into table t_cobrb.
SELECT arbpl werks objid objty
from crhd
INTO table it_crhd
FOR ALL ENTRIES IN it_afih
WHERE objty eq 'D'
AND gewrk = it_afih-objid.
SELECT aufnr objnr auart txjcd pspel gstrp werks aufnr
FROM caufv
INTO table t_caufv
FOR ALL ENTRIES IN it_afih
WHERE aufnr = it_afih-aufnr
And pspel = ' '
AND txjcd = ' '
ANd objnr ne it_crhd-objnr
AND auart in s_wtype
AND werks in s_plant.
AND objnr ne it_jest-objnr.
dont use NE in the select statements, it may effect performance also. Instead use if statements inside
loops.
loop at t_caufv.
read table it_chrd............
if t_caufv-objnr ne it_chrd-objnr.
read table it_jest..........
if if t_caufv-objnr ne it_jest-objnr.
(proceed further).
endif.
endif.
endloop.
hope this helps.
Reward if useful.
Regards,
Anu -
How can I write into a table cell (row, column are given) in a databae?
How can I write into a table cell (row, column are given) in a database using LabVIEW Database Toolkit? I am using Ms Access. Suppose I have three columns in a table, I write 1st row of 1st column, then 1st row of 3rd column. The problem I am having is after writing the 1st row 1st column, the reference goes to second row and if I write into 3rd column, it goes to 2nd row 3rd column. Any suggestion?
Solved!
Go to Solution.When you do a SQL INSERT command, you create a new row. If you want to change an existing row, you have to use the UPDATE command (i.e. UPDATE tablename SET column = value WHERE some_column=some_value). The some_column could be the unique ID of each row, a date/time, etc.
I have no idea what function to use in the toolkit to execute a SQL command since I don't use the toolkit. I also don't understand why you just don't do a single INSERT. It would be much faster. -
Hello!
I want to write 1 digital port from PXI-6536 with streaming to TDMS file.
I'm writing by 'DAQmx Configure Logging.vi' and become TDMS file with 8 boolean channels.
How can I write to 1integer channel?
Attachments:
1.JPG 27 KBHey Atrina,
The actual data stored on disk is just the raw data (that is, a byte per sample in your case). It's really just a matter of how that data is being represented in LabVIEW whenever you read back the TDMS file.
I'm not sure if there is a better way to do this, but here is a way to accomplish what you're wanting:
Read back the TDMS file as a digital waveform. Then there's a conversion function in LabVIEW called DWDT Digital to Binary. This function will convert that set of digital channels into the "port format" that you're wanting. I've attached an example of what I mean.
Note: When looking at this VI, there are a few things that the downgrade process did to the VI that I would not recommend for these TDMS files. It added a 1.0 constant on the TDMS Open function, and it set "disable buffering" on the TDMS Open function to false; you can get rid of both of those constants.
Message Edited by AndrewMc on 01-27-2010 11:21 AM
Thanks,
Andy McRorie
NI R&D
Attachments:
digitalconvert.vi 13 KB -
I am connecting an external USB HDD and I can see it on my Apple Macbook Air. BUT this drive is READ only. How can I write to it?
Drive Partition and Format
1.Open Disk Utility in your Utilities folder.
2. After DU loads select your hard drive (this is the entry with the mfgr.'s ID and size) from the left side list. Click on the Partition tab in the DU main window.
3. Under the Volume Scheme heading set the number of partitions from the drop down menu to one. Click on the Options button, set the partition scheme to GUID then click on the OK button. Set the format type to Mac OS Extended (Journaled.) Click on the Partition button and wait until the process has completed.
4. Select the volume you just created (this is the sub-entry under the drive entry) from the left side list. Click on the Erase tab in the DU main window.
5. Set the format type to Mac OS Extended (Journaled.) Click on the Security button, check the button for Zero Data and click on OK to return to the Erase window.
6. Click on the Erase button. The format process can take up to several hours depending upon the drive size.
Steps 4-6 are optional but should be used on a drive that has never been formatted before, if the format type is not Mac OS Extended, if the partition scheme has been changed, or if a different operating system (not OS X) has been installed on the drive. -
How can I write to an OPC Server?
Hello!
I was busy a few days with LabVIEW 8 to finish a special task, but now I've got problems to solve the following problem:
I have an OPC connection between a frequency converter and LabVIEW 8. With the example vi's I get the data out of the OPC Server (revolutions per minute).
So I can read data out of the OPC Server, but how can I write? I want to write several voltage values to the OPC Server that the frequency converter gets the required revolutions per minute.
Have you got any ideas? Are there existing example vi's to write data to an OPC Server?
Best regards and Thanks in advance!So here it is - a little bit modified, but you should get the idea out of it.
If you have questions, I'll try to answer them .
Thomas
Using LV8.0
Don't be afraid to rate a good answer...
Attachments:
IOControl.llb 168 KB -
How can I write to an SD card with my iPad 3?
How can I write to an SD card/thumb drive with my iPad 3?
Sorry to post this question before realizing others already did. HOWEVER! Why would Apple make such a cool device like the iPad without the abiity to write to an SD card?
-
How can i write to ntfs device
how can i write to ntfs device from mac
By default, OS X (and near all operating systems different than Windows) can't write in NTFS drives because of a Microsoft limitation.
To be able to write in NTFS drives, you have to use a third-party application. There are a lot, but the most recommended is Paragon NTFS, although it's a paid application. If you want a free app, try this > http://osxfuse.github.com -
How can i write a blog in the XI forum.....
i want to write a blog....
i have created a scenario which i feel ...may be helpful for many...
how can i write that in the XI forum.....
and do my blog need to examined by some authorityHi,
Check this
https://www.sdn.sap.com/irj/sdn/wiki?path=/display/community/gettingStartedWith+Blogs&
Regards,
Chandra
Maybe you are looking for
-
I am trying to move my sons library to his new mac using his 8 gb i pod as a hard drive..... itunes 9.0.1 says his music files is only 6gb. But when I go to transfer his itunes folder it says his music folder is 23gb. I know I can home share tra
-
For all the newbies who wants to learn Java
I was a newbie like 4 months ago. i have some skills of OOP in C++ like 2 years back but since then i did'nt took any of programming language courses. I have experience in MSaccess and MYsql. i did my internship Last summer with Tennessee Education L
-
How applet write file in local system by URL instead of FileOutputStream()
hi, how can applet write a file in local system through URL instead of FileOupStream() plz.....plz.....plz...... URL url = new URL(" file://c:/temp.txt"); in this url how applet can write plz....
-
SOAP AUthentication not working
Hi Experts, I have a scenario in which the data is picked from a file location and then the SOAP receiver CC posts the data to a sharepoint portal. The issue I am facing is that when the portal guys allow anonymous login, my data reaches the portal b
-
How and where to define a cep application in a plug in
Hi, I want to create a cep plug in and deploy it to the oem. I looked in the example supplied with the edk ( sample host ) , in the plugin of this example. I want to do the same ,only with a real app -in my case a cep ( complex event processor ) . Do