For loop won't output
Howdy everyone! First time NI forum user, not a very long time Labview user. Been thrown into this program via the teacher with no schooling whatsoever. I have a .vi attached, where for some reason my for loop is not outputting any data. I am sure that I will have further questions when this gets solved, but this does not make sense. I am sure I have all kinds of rookie mistakes. Thanks in advance!
Attachments:
Northwood.vi 352 KB
Can I post more than one question on here? I need to put a sensor in this system after ther State Space Eqns, with ±0.1m limits and 12 bit precision. I can use the mask and limit .vi to keep the ±0.1m, but what do I do about the 12 bit resolution?
Similar Messages
-
Help with if statement in cursor and for loop to get output
I have the following cursor and and want to use if else statement to get the output. The cursor is working fine. What i need help with is how to use and if else statement to only get the folderrsn that have not been updated in the last 30 days. If you look at the talbe below my select statement is showing folderrs 291631 was updated only 4 days ago and folderrsn 322160 was also updated 4 days ago.
I do not want these two to appear in my result set. So i need to use if else so that my result only shows all folderrsn that havenot been updated in the last 30 days.
Here is my cursor:
/*Cursor for Email procedure. It is working Shows userid and the string
You need to update these folders*/
DECLARE
a_user varchar2(200) := null;
v_assigneduser varchar2(20);
v_folderrsn varchar2(200);
v_emailaddress varchar2(60);
v_subject varchar2(200);
Cursor c IS
SELECT assigneduser, vu.emailaddress, f.folderrsn, trunc(f.indate) AS "IN DATE",
MAX (trunc(fpa.attemptdate)) AS "LAST UPDATE",
trunc(sysdate) - MAX (trunc(fpa.attemptdate)) AS "DAYS PAST"
--MAX (TRUNC (fpa.attemptdate)) - TRUNC (f.indate) AS "NUMBER OF DAYS"
FROM folder f, folderprocess fp, validuser vu, folderprocessattempt fpa
WHERE f.foldertype = 'HJ'
AND f.statuscode NOT IN (20, 40)
AND f.folderrsn = fp.folderrsn
AND fp.processrsn = fpa.processrsn
AND vu.userid = fp.assigneduser
AND vu.statuscode = 1
GROUP BY assigneduser, vu.emailaddress, f.folderrsn, f.indate
ORDER BY fp.assigneduser;
BEGIN
FOR c1 IN c LOOP
IF (c1.assigneduser = v_assigneduser) THEN
dbms_output.put_line(' ' || c1.folderrsn);
else
dbms_output.put(c1.assigneduser ||': ' || 'Overdue Folders:You need to update these folders: Folderrsn: '||c1.folderrsn);
END IF;
a_user := c1.assigneduser;
v_assigneduser := c1.assigneduser;
v_folderrsn := c1.folderrsn;
v_emailaddress := c1.emailaddress;
v_subject := 'Subject: Project for';
END LOOP;
END;
The reason I have included the folowing table is that I want you to see the output from the select statement. that way you can help me do the if statement in the above cursor so that the result will look like this:
emailaddress
Subject: 'Project for ' || V_email || 'not updated in the last 30 days'
v_folderrsn
v_folderrsn
etc
[email protected]......
Subject: 'Project for: ' Jim...'not updated in the last 30 days'
284087
292709
[email protected].....
Subject: 'Project for: ' Kim...'not updated in the last 30 days'
185083
190121
190132
190133
190159
190237
284109
286647
294631
322922
[email protected]....
Subject: 'Project for: Joe...'not updated in the last 30 days'
183332
183336
[email protected]......
Subject: 'Project for: Sam...'not updated in the last 30 days'
183876
183877
183879
183880
183881
183882
183883
183884
183886
183887
183888
This table is to shwo you the select statement output. I want to eliminnate the two days that that are less than 30 days since the last update in the last column.
Assigneduser....Email.........Folderrsn...........indate.............maxattemptdate...days past since last update
JIM......... jim@ aol.com.... 284087............. 9/28/2006.......10/5/2006...........690
JIM......... jim@ aol.com.... 292709............. 3/20/2007.......3/28/2007............516
KIM......... kim@ aol.com.... 185083............. 8/31/2004.......2/9/2006............. 928
KIM...........kim@ aol.com.... 190121............. 2/9/2006.........2/9/2006.............928
KIM...........kim@ aol.com.... 190132............. 2/9/2006.........2/9/2006.............928
KIM...........kim@ aol.com.... 190133............. 2/9/2006.........2/9/2006.............928
KIM...........kim@ aol.com.... 190159............. 2/13/2006.......2/14/2006............923
KIM...........kim@ aol.com.... 190237............. 2/23/2006.......2/23/2006............914
KIM...........kim@ aol.com.... 284109............. 9/28/2006.......9/28/2006............697
KIM...........kim@ aol.com.... 286647............. 11/7/2006.......12/5/2006............629
KIM...........kim@ aol.com.... 294631............. 4/2/2007.........3/4/2008.............174
KIM...........kim@ aol.com.... 322922............. 7/29/2008.......7/29/2008............27
JOE...........joe@ aol.com.... 183332............. 1/28/2004.......4/23/2004............1585
JOE...........joe@ aol.com.... 183336............. 1/28/2004.......3/9/2004.............1630
SAM...........sam@ aol.com....183876.............3/5/2004.........3/8/2004.............1631
SAM...........sam@ aol.com....183877.............3/5/2004.........3/8/2004.............1631
SAM...........sam@ aol.com....183879.............3/5/2004.........3/8/2004.............1631
SAM...........sam@ aol.com....183880.............3/5/2004.........3/8/2004.............1631
SAM...........sam@ aol.com....183881.............3/5/2004.........3/8/2004.............1631
SAM...........sam@ aol.com....183882.............3/5/2004.........3/8/2004.............1631
SAM...........sam@ aol.com....183883.............3/5/2004.........3/8/2004.............1631
SAM...........sam@ aol.com....183884.............3/5/2004.........3/8/2004............ 1631
SAM...........sam@ aol.com....183886.............3/5/2004.........3/8/2004............ 1631
SAM...........sam@ aol.com....183887.............3/5/2004.........3/8/2004............ 1631
SAM...........sam@ aol.com....183888.............3/5/2004.........3/8/2004............ 1631
PAT...........pat@ aol.com.....291630.............2/23/2007.......7/8/2008............ 48
PAT...........pat@ aol.com.....313990.............2/27/2008.......7/28/2008............28
NED...........ned@ aol.com.....190681.............4/4/2006........8/10/2006............746
NED...........ned@ aol.com......95467.............6/14/2006.......11/6/2006............658
NED...........ned@ aol.com......286688.............11/8/2006.......10/3/2007............327
NED...........ned@ aol.com.....291631.............2/23/2007.......8/21/2008............4
NED...........ned@ aol.com.....292111.............3/7/2007.........2/26/2008............181
NED...........ned@ aol.com.....292410.............3/15/2007.......7/22/2008............34
NED...........ned@ aol.com.....299410.............6/27/2007.......2/27/2008............180
NED...........ned@ aol.com.....303790.............9/19/2007.......9/19/2007............341
NED...........ned@ aol.com.....304268.............9/24/2007.......3/3/2008............ 175
NED...........ned@ aol.com.....308228.............12/6/2007.......12/6/2007............263
NED...........ned@ aol.com.....316689.............3/19/2008.......3/19/2008............159
NED...........ned@ aol.com.....316789.............3/20/2008.......3/20/2008............158
NED...........ned@ aol.com.....317528.............3/25/2008.......3/25/2008............153
NED...........ned@ aol.com.....321476.............6/4/2008.........6/17/2008............69
NED...........ned@ aol.com.....322160.............7/3/2008.........8/21/2008............4
MOE...........moe@ aol.com.....184169.............4/5/2004.......12/5/2006............629
[email protected]/27/2004.......3/8/2004............1631
How do I incorporate a if else statement in the above cursor so the two days less than 30 days since last update are not returned. I do not want to send email if the project have been updated within the last 30 days.
Edited by: user4653174 on Aug 25, 2008 2:40 PManalytical functions: http://download-west.oracle.com/docs/cd/B10501_01/server.920/a96540/functions2a.htm#81409
CASE
http://download.oracle.com/docs/cd/B10501_01/appdev.920/a96624/02_funds.htm#36899
http://download.oracle.com/docs/cd/B10501_01/appdev.920/a96624/04_struc.htm#5997
Incorporating either of these into your query should assist you in returning the desired results. -
Why won't for loop execute?
Can anyone tell me why this for loop won't execute in "Security System". Basically I was practicing for the CLD exam by writing the "Security System" practice exam. I wanted to try the Event-Driven State Machine with a queue. My problem is that in the "Check Alarm", "Check Bypass", and "Check Tamper" states, I have a for loop which is indexed with 4 - 6 element arrays. The for loop will not execute 6 times. It won't even execute once. It just skips over the for loop and outputs all boolean falses and zeros for the numeric values. Is this a Labview glitch of some sort?
Thanks for any replies.
Matt Koebel
Attachments:
Security System.zip 108 KBtst wrote:
Without looking at the code, my guess would be that one of the indexing inputs into the loop is 0.
More precisely ".. is an array of size zero.
(1) Go to yout three boolean arrays and click on the 6th element to make the arrays size=6 with all FALSE. now make current values default and save the VI.
(2) You also need to wire the boolean arrays across all event cases to ensure the current values are kept in the shift register. RIght now a change in one array resets the others to an empty array again.
(3) now initialize a boolean array containing six FALSE and initialize the shift registers with it.
Message Edited by altenbach on 10-22-2008 11:55 AM
LabVIEW Champion . Do more with less code and in less time . -
Hello, one of our customers just encountered an execution error in a vi running under LabVIEW 6.1, which doesn't exist under LabVIEW 5.1 or 6.01. I have a simple vi that has two encapsulated For Loops. Two string arrays go in, one goes out of the outer loop. Inside the outer loop the first array is indexed. The string which results from this indexing is compared with all other strings from the second string array in the inner loop. If it matches one of the strings of the second array, it is not outputted, otherwise this string goes through the inner For Loop to the output of the inner loop and from there to the output of the outer loop. The count
terminal of the outer/inner loop is connected to the Array Size of the first/second string array. If the second array is empty, that means that the element in test from the first arry cannot match anything from the second array, so the element in test is send to the output of the inner loop and from there to the output of the outer loop. This works fine in LabVIEW 5.1 and 6.01, but NOT in LabVIEW 6.1. In LabVIEW 6.1 the inner loop is never executed if the count value is zero (which is correct), but the data line running through the loop is not executed either, which is different to what LabVIEW 5.1 and 6.01 do. There, the input string is sent to the output of the inner loop correctly even if the loop counter is zero. The solution is easy - I just have to connect the output of the outer loop to the data line BEFORE it enters the inner loop. But: I don't know if this is a LabVIEW 6.1 bug or if it is supposed to be a feature, but it brings some incompatibility in programming between the
different LabVIEW versions.
Best regards,
GabsiHi,
When a for-loop runs zero times, all outputs are 'undefined' (and should
be).
Besides, how would LV know what the output of a not executed routine should
be?
It might be handled differently in LV5 and LV6, which is unfortunate. In
both cases, the result is undefined.
It's not a bug. It's just something that should be avoided in any LV
version.
> The solution is easy - I just have to connect the
> output of the outer loop to the data line BEFORE it enters the inner
> loop. But: I don't know if this is a LabVIEW 6.1 bug or if it is
In some cases this does the trick. But if the data is changed in the inner
loop, this will effect the results if the N is not zero.
Technically, I think the output in this construction is also 'undefined'.
But LV handles this as expected / desired.
Another solution is to use a shift register. If N is zero, the input is
directly passed through to the output.
Regards,
Wiebe.
"Gabs" wrote in message
news:[email protected]...
> LabVIEW 6.1 If For Loop count terminal is zero then value going
> through the loop is not passed on to the output of the loop
>
> Hello, one of our customers just encountered an execution error in a
> vi running under LabVIEW 6.1, which doesn't exist under LabVIEW 5.1 or
> 6.01. I have a simple vi that has two encapsulated For Loops. Two
> string arrays go in, one goes out of the outer loop. Inside the outer
> loop the first array is indexed. The string which results from this
> indexing is compared with all other strings from the second string
> array in the inner loop. If it matches one of the strings of the
> second array, it is not outputted, otherwise this string goes through
> the inner For Loop to the output of the inner loop and from there to
> the output of the outer loop. The count terminal of the outer/inner
> loop is connected to the Array Size of the first/second string array.
> If the second array is empty, that means that the element in test from
> the first arry cannot match anything from the second array, so the
> element in test is send to the output of the inner loop and from there
> to the output of the outer loop. This works fine in LabVIEW 5.1 and
> 6.01, but NOT in LabVIEW 6.1. In LabVIEW 6.1 the inner loop is never
> executed if the count value is zero (which is correct), but the data
> line running through the loop is not executed either, which is
> different to what LabVIEW 5.1 and 6.01 do. There, the input string is
> sent to the output of the inner loop correctly even if the loop
> counter is zero. The solution is easy - I just have to connect the
> output of the outer loop to the data line BEFORE it enters the inner
> loop. But: I don't know if this is a LabVIEW 6.1 bug or if it is
> supposed to be a feature, but it brings some incompatibility in
> programming between the different LabVIEW versions.
> Best regards,
> Gabsi -
How to output data outtside a for loop every 10 iterations​?
Hi friends,
does any body help me to sort out this problem?
please check the attchement for my vi.
all i want is output data from inside for loop to outside for loop every 10 iterations. please do not use local variable.
Many thanks
dan
Attachments:
output.vi 16 KBHi Dan,
I am not sure what you want to do every 10 iterations with the value outside, but If you want to update your graph every 10 iterations use the following way:
If you want to handle the specific value every x iterations outside the loop you could either use queues or notifieres.
BR,
ThSa
Message Edited by ThSa on 08-23-2006 09:05 PM
http://www.newgistics.com
Attachments:
1.png 6 KB -
Stopping output tasks properly before exiting a For-loop
Hi,
I've been having some trouble exiting a For-loop conditionally. The problem is that when the loop is stopped conditionally (a button is pressed) the DAQ (NI USB 6353) outputs get stuck to whatever value they were in. I tried stopping the DAQ Assistant output task (1 sample on demand) before exiting the loop but that didn't solve the problem. Should this perhaps be done one iteration before exiting the loop or can it be done in the same iteration round?
What would be the "right" way to exit a for loop with output tasks so that the output signals would be 0V after exiting? I know that I could "force" feed the DAQ Assistant with 0V control before exiting but in this case that would be quite difficult...
Any ideas? Help is appriciated.Yes, I get it... However at this point I don't think that's an option.
Would this kind of solution work? ( I am not able to test all possible solutions in the real system which is why I would like to get a confirmation first)
The idea is to connect the output of the "Or" port to the "Stop" -ports of the DAQ Assistants in the loop.
Edit. Will the output automatically go to 0V if I just stop the task? I am not really sure about this.
Thank you.
Attachments:
exit-loop.jpg 8 KB -
How to output last 4 arrays from a For Loop?
Hi People,
I am almost at the end of my tether. I really hope someone could please help me.
Any input would be welcome. VI attached.
VI explanation:
I initialize an array.
The random number generator simulates my camera input.
Depending on which iteration it is, the data is added into one of four output arrays.
'x-y*floor(x/y)' gives a remainder value of 0, 1, 2 or 3.
'Case Selector' just adds 1 to 'x-y*floor(x/y)' to get case 1, 2, 3 or 4.
Shots 1, 5, 9 etc are added to Array 1 (Case 1).
Shots 2, 6, 10 etc are added to Array 2 (Case 2).
Shots 3, 7, 11 etc are added to Array 3 (Case 3).
Shots 4, 8, 12 etc are added to Array 4 (Case 4).
Averaged Output displays the averaged value i.e. the total value divided by the number of shots saved in that array ('Set (IQ+1)').
My problems are:
1) I would like to output only the last 4 sets of data from the Averaged Output 1, 2, 3 and 4 to 4 different files (i.e. save as .csv what is displayed onscreen in indicators 'Averaged Output 1', 2, 3 and 4 at the end of all iterations.
Where should I place my file save diagram disable so that it does this?
Putting it outside the main For Loop with auto-indexing on gives me one file with all previous data. (This is not feasible as my number of shots should number in the thousands)
Putting it outside the main For Loop with auto-indexing off gives me only the last set of data. (I need the output for 4 Arrays, not just the last run)
Putting it inside the main For Loop (as shown) gives me the same number of files as number of iterations. (Again not feasible due to large number of files that will be generated and slow camera capture)
For the sake of fast camera capture, I would like these 4 files to only output once all the image captures are complete.
2) Would preferably like to name the file once and for the programme to append '(1)', '(2)', '(3)' and '(4)' to filename of the appropriate 'Averaged Output' Arrays but file path controls are another big headache for me.
3) P.s. is initializing one array enough to avoid using Memory Manager? Or should I initialize 4 arrays?
I am using Labview 2010.
Thanks so much,
Jaslyn
Solved!
Go to Solution.
Attachments:
Help Understanding Arrays and file paths (10).vi 26 KBThanks so much Lennard!!
Hi JKSH,
I've been busy trying to complete the dang code, but for completeness so that other users can learn too, I shall answer your queries. Thanks for looking in.
First, what do you mean by "add"? Your code in your case strcuture sums your input values, so your array size doesn't change. However, you also said "Putting it outside the main For Loop with auto-indexing on gives me one file with all previous data. (This is not feasible as my number of shots should number in the thousands)" -- it sounds like you are expecting an array with thousands of elements. So, what should "Output Array N" look like?
Ans: Output Array N should be a 4x4 array of the summation of all the numbers generated during every 4th iteration.
i.e. if random number 1=1, random number 2=2, etc, And 'No of iterations' is 12,
Output Array 1 should be 1+5+9:
15 15 15 15
15 15 15 15
15 15 15 15
15 15 15 15
(Note: Most of your arrays are 4x4, but in Case #2 you created 128x128. I prersume this is a typo?)
Ans: Kind of, I'm using a 4x4 array of randomly generated numbers as an example but my actual data will be the 128x128 pixel output of a camera. And during actual experimentation, 'No of Iterations' will number in the thousands.
Second, why do you add your "simulated camera input" to the "Initialized Array"? You can add it direcly to the previous output inside your case structure.
Ans: See answer to question 3
Third, have a look at shift registers: http://www.ni.com/gettingstarted/labviewbasics/shiftregisters.htm. Use them instead of Feedback Nodes to make your code tidier.
Ans: I did try.. But I can't seem to add shift registers to the case structure, only the for loops outside. Are you sure it can be done..?
jaslyn wrote:
1) I would like to output only the last 4 sets of data from the Averaged Output 1, 2, 3 and 4 to 4 different files (i.e. save as .csv what is displayed onscreen in indicators 'Averaged Output 1', 2, 3 and 4 at the end of all iterations.
Where should I place my file save diagram disable so that it does this?
For the sake of fast camera capture, I would like these 4 files to only output once all the image captures are complete.
You will need to call "Write to Text File.vi" 4 times to write 4 files. So, you should finish your loop, then call this VI 4 times.
Ans: How do I get it to extract the data from each of the 4 cases in my case structure?
jaslyn wrote:
2) Would preferably like to name the file once and for the programme to append '(1)', '(2)', '(3)' and '(4)' to filename of the appropriate 'Averaged Output' Arrays but file path controls are another big headache for me.
You can create strings first, then convert them into paths: http://zone.ni.com/reference/en-XX/help/371361G-01/glang/string_to_path/
Thanks
jaslyn wrote:
3) P.s. is initializing one array enough to avoid using Memory Manager? Or should I initialize 4 arrays?
I'm not sure what you're asking; can you please clarify what you mean by "avoid using Memory Manager"? But anyway, you've actually initialized FIVE arrays: 1 outside the loop, and 1 inside each case.
I've read that to avoid fluctuations in memory usage, it is a good idea to initialize arrays to their expected size before the start of data collection. That was just what I was trying to do. -
I am using this to create a data set that will be passed as an anolog output therefore it needs to have the correct array dimensions to go into the analog write vi.
I'm updating my request... I've figured out how to do this by copying an example that uses a simple FOR loop (as seen in the attached current version of my VI). My question now becomes this: Is there a way to save the Y values corresponding to those X values into two more arrays? That is, just for argument's sake, let's say I took the first 100 elements from the X array, and found them to be positive. Then I would like to take the first 100 elements of the Y array and put them into a 'Y Values for X > 0' array. ...And likewise with the negative X values, they should have a separate array of corresponding 'Y values for X < 0' array.
I can see that I should somehow save the indices of the positive X values from the large arrray wh
en I sort them out, and use those indices to pick out the elements from the main Y array with the same indices.
I just can't seem to set up the code necessary to do this. ...Can anyone help, please?
Attachments:
Poling_Data_Reader_5i.vi 79 KB
30BLEND.txt 3 KB -
Executing each step of a for loop only on a VISA read output
Hi,
I would like to give multiple steps to a motor/controller to exectue, but I keep getting a "command overflow" error. Therefore, I am trying to tell the for loop only to execute when the VISA Read receives an output. I have included the .vi I have written so far. For example, the code /1P1000p66R tells the controller to move motor "1" forward 1000 steps and then to output the number "66" when the motor has moved 1000 steps. My input to the "table control" is, e.g., 3 commands:
/1P1000p66R
/1D1000p66R
/1D5000p66R
How do I get the code to send each of those commands only when the number "66" is sent back to the program so that I don't get the command overflow error? Also, if anyone has a better way to control the motor to do multiple steps, let me know. I'm pretty new to all of this.
Thanks.
Attachments:
Motor Controller (Sub VI 2).vi 26 KBRather than using a table control, I would just use a string array.
Set your serial port parameters before the loop. Close the serial port after the loop.
Your controls don't have any real data in them saved as default, so I'm confused a bit as to what your are trying to do. Why do you have a numeric control with the number 0 establishing the loop iterations?
Instead of a For Loop, use a while loop. Set the 1-D array of strings to be autoindexing at the input tunnel. Write the command (why you have everything wrapped in a case statement with a true constant makes no sense. Do a VISA read. If the response has the 66 (you'll have to figure out how to parse it out), all is good. If it does not have the 66, or the number of loop iterations equals the number of commands in the array -1 , then end the loop.
Message Edited by Ravens Fan on 05-20-2009 09:31 PM
Attachments:
MotorController(SubVI).vi 18 KB
Motor%20Controller%20(Sub%20VI%202)[1]_BD.png 8 KB -
How to use for loops with Multiple Initializers and Incrementers
I found that my for loop is printing out wrong, because I am using two for loops. I have searched but all I can find out is you can't use multiple inializers and increments, does anyone know how to get around this? How would I use an array for this?
Thanks very much for your help.
import java.util.Random;
import java.util.Arrays;
/** Generate numnodes value for random integers in the range 0..499. */
public final class RandomInteger {
public static final void main(String... aArgs){
log("Generating 6 random integers in range 0..499.");
int numnodes = 6;
//Randomly generate a number between 0 and 499 for the x and y coordinates for the nodes
Random randomGenerator = new Random();
for (int x = 0; x < numnodes; ++x) {
int randomInt = randomGenerator.nextInt(500);
Random randomGenerator2 = new Random();
for (int y = 0;y < numnodes; ++y) {
int randomInt2 = randomGenerator2.nextInt(500);
log("Generated : " + randomInt + " " + randomInt2);
log("Done.");
}Sorry that code works, but I want to use both my x and y coordinates to get a random number from 0 to 499 in both of them, then I want to do some comparisons of the values, then return it to another function. As it stands now, I get the wrong results when I run it, as you can see at the bottom.
Thanks very much for your help. I have been stumped all mornign on this and have looked everywhere trying to find an example. I don't won't to use math random. I am on a tight deadline to finish and at the rate I am going, I will not complete it.
/** Generate numnodes value for random integers in
the range 0..499. */
public final class RandomInteger {
public static final void main(String... aArgs){
log("Generating 6 random integers in range
0..499.");
int numnodes = 6;
//Randomly generate a number between 0 and 499 for
the x and y coordinates for the nodes
Random randomGenerator = new Random();
for (int x = 0; x < numnodes; ++x) {
int randomInt = randomGenerator.nextInt(500);
Random randomGenerator2 = new Random();
for (int y = 0;y < numnodes; ++y) {
int randomInt2 = randomGenerator2.nextInt(500);
log("Generated : " + randomInt + " " + randomInt2);
log("Done.");
private static void log(String aMessage){
System.out.println(aMessage);
Output:
--------------------Configuration:
<Default>--------------------
Generating 6 random integers in range 0..499.
Generated : 98 254
Generated : 98 347
Generated : 98 359
Generated : 98 25
Generated : 98 277
Generated : 98 148
Generated : 416 401
Generated : 416 165
Generated : 416 354
Generated : 416 169
Generated : 416 144
Generated : 416 354
Generated : 295 158
Generated : 295 138
Generated : 295 349
Generated : 295 324
Generated : 295 18
Generated : 295 193
Generated : 197 451
Generated : 197 416
Generated : 197 480
Generated : 197 33
Generated : 197 490
Generated : 197 494
Generated : 324 412
Generated : 324 490
Generated : 324 213
Generated : 324 386
Generated : 324 467
Generated : 324 163
Generated : 379 180
Generated : 379 446
Generated : 379 314
Generated : 379 52
Generated : 379 113
Generated : 379 271
Done.
Process completed. -
How to create for loop USING a while loop
Hi, I would like make a for loop inside of a while loop because I want to control the i count of the loop, and overall, more control over the loop. From what I understand, labVIEW's for loop doesn't let me change where the i count starts. It always start at i=0, and what I want to do is be able to jump to specific loop iterations and then continue from there.
Thank you.That is not the same as the earlier examples.
If you want 10 counts and start at 0, then the stop terminal will stop after 10 times. Just like you get when you wire 10 into the N terminal and don't have a conditional loop.
If your start value is larger, let's say 9, then your loop will only run 1 time because i=0 on first iteration + 1+ 9 (start value). 0 + 1 +9 = 10.
If your start value is larger than 10, then it will run 10 times again because on the intial iteration the result of your comparison is already greater than 10 and won't stop, and will never be equal on later iterations.
So your example does not even give consistent results depending on the value you use as the start value.
(Just to note, my earlier examples may not all be identical results as I didn't try to verify all the stop conditions nor the array that is output by the ramp function. I could be off by one iteration here or there. But they should be good enough to point out distinctive ways to accomplish what the OP asked for.) -
Help with Mathscipt and for loop
I have a code in Mathscript/matlab and I need to output the array out. One option is my first code,the other option is using a for loop, but I am only getting the last ouput out. I need to get the whole output out.
Any help.
Thanks
Solved!
Go to Solution.
Attachments:
Help with Mathscript_for loop.vi 115 KB
Help with Mathscript_for loop2.vi 84 KBHere's how it should look like.
Message Edited by altenbach on 10-30-2008 05:12 PM
LabVIEW Champion . Do more with less code and in less time .
Attachments:
MathscriptInFOR.png 15 KB -
Visa open and close with "for loops"
Hello everyone
In my program I used two "for loops" which include visa write and read for a RS32 port. it is not possible to close a devise with visa close as the out put is changed to 2D array!!! would you please help me with this error
Attachments:
ACU_232.png 108 KBsam009 wrote:
Thanks for reply,
It works for "for loop" but what about "event structure loop" still is error for that.
Right-click on the output tunnel and uncheck "Use Default if Unwired". You will now be forced to wire the VISA Resource through each case.
There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines -
Display value in MATLAB For loop on LabView
Hi guys,
I have a MATLAB script in my VI. The MATLAB script runs a For Loop. For each iteration of the For Loop, a variable say, count is incremented by 1.
From what I am experiencing, the MATLAB script only outputs the final value of count when the script is done running.
Is it possible to capture the value of count as each iteration is performed?
PS : Using a LabView For loop is not possible for my case. Running the MATLAB code is mandatory.
Thank you in advance!When the Matlab script gets called, it's actually passing control over to the Matlab ActiveX server. Thus, LabVIEW has to wait until that's done before it can proceed. What you're asking for is interprocess communication. That doesn't come provided "out of the box". You have to create it yourself. Some ideas were suggested here: http://forums.ni.com/t5/LabVIEW/Labview-Matlab-Exchange-Data/td-p/1408054
-
Dbms_output.put_line not printing in inner for loop using a parameter
I cannot get the inner loop to print output. I can run both loops independent (hardcoding a value for the inner loop) Any help is apprecicated... Listed is the code
set serveroutput on
DECLARE
cursor ACCNO_CUR is
select accession_number from didb_studies where insert_time > to_date('02-JUN-12');
cursor PATH_CUR (p1_accno VARCHAR2) is
select distinct l.FILE_SYSTEM || '/' ||
substr(LPAD(s.PATIENT_DB_UID, 12, '0'),1,3) || '/' ||
substr(LPAD(s.PATIENT_DB_UID, 12, '0'),4,3) || '/' ||
substr(LPAD(s.PATIENT_DB_UID, 12, '0'),7,3) || '/' ||
substr(LPAD(s.PATIENT_DB_UID, 12, '0'),10,3) || '/' ||
s.STUDY_DB_UID || '/' || i.SERIES_DB_UID || '/'||
i.RAW_IMAGE_DB_UID || '.img' as FULLY_QUALIFIED_IMAGE_NAME
, l.image_size
, i.image_need_backup
, i.sop_class_uid
from medistore.didb_studies s
, medistore.didb_raw_images_table i
, medistore.didb_image_locations l
where s.accession_number = 'p1_accno'
and s.study_db_uid = i.study_db_uid
and i.raw_image_db_uid = l.raw_image_db_uid
and l.file_system is not null and INSTR(l.file_system, '.img') = 0
UNION
select distinct(l.FILE_SYSTEM) as FULLY_QUALIFIED_IMAGE_NAME
, l.image_size
, i.image_need_backup
, i.sop_class_uid
from medistore.didb_studies s, medistore.didb_raw_images_table i,
medistore.didb_image_locations l
where s.accession_number = 'p1_accno'
and s.study_db_uid = i.study_db_uid
and i.raw_image_db_uid = l.raw_image_db_uid
and l.file_system is not null and INSTR(l.file_system, '.img') > 0
order by 1;
BEGIN
FOR accno_rec in accno_cur LOOP
DBMS_OUTPUT.put_line('ACCESSION_NUMBER is: '|| accno_rec.accession_number);
FOR path_rec in path_cur(accno_rec.accession_number) LOOP
DBMS_OUTPUT.put_line('Inner loop accession_number is :'||accno_rec.accession_number);
DBMS_OUTPUT.put_line('Full path is : ' || path_rec.FULLY_QUALIFIED_IMAGE_NAME);
END LOOP;
END LOOP;
END;Maybe
DECLARE
cursor ACCNO_CUR is
select accession_number
from didb_studies
where insert_time > to_date('02-JUN-12');
cursor PATH_CUR (p1_accno VARCHAR2) is
select distinct
l.FILE_SYSTEM || '/' ||
substr(LPAD(s.PATIENT_DB_UID, 12, '0'),1,3) || '/' ||
substr(LPAD(s.PATIENT_DB_UID, 12, '0'),4,3) || '/' ||
substr(LPAD(s.PATIENT_DB_UID, 12, '0'),7,3) || '/' ||
substr(LPAD(s.PATIENT_DB_UID, 12, '0'),10,3) || '/' ||
s.STUDY_DB_UID || '/' || i.SERIES_DB_UID || '/'||
i.RAW_IMAGE_DB_UID || '.img' as FULLY_QUALIFIED_IMAGE_NAME,
l.image_size,
i.image_need_backup,
i.sop_class_uid
from medistore.didb_studies s,
medistore.didb_raw_images_table i,
medistore.didb_image_locations l
where s.accession_number = to_number(p1_accno) /* to_char(s.accession_number) = p1_accno */
and s.study_db_uid = i.study_db_uid
and i.raw_image_db_uid = l.raw_image_db_uid
and l.file_system is not null
and INSTR(l.file_system, '.img') = 0
UNION
select distinct
l.FILE_SYSTEM as FULLY_QUALIFIED_IMAGE_NAME,
l.image_size,
i.image_need_backup,
i.sop_class_uid
from medistore.didb_studies s,
medistore.didb_raw_images_table i,
medistore.didb_image_locations l
where s.accession_number = to_number(p1_accno) /* to_char(s.accession_number) = p1_accno */
and s.study_db_uid = i.study_db_uid
and i.raw_image_db_uid = l.raw_image_db_uid
and l.file_system is not null and INSTR(l.file_system, '.img') > 0
order by 1;
BEGIN
FOR accno_rec in accno_cur
LOOP
DBMS_OUTPUT.put_line('ACCESSION_NUMBER is: '|| accno_rec.accession_number);
FOR path_rec in path_cur(accno_rec.accession_number)
LOOP
DBMS_OUTPUT.put_line('Inner loop accession_number is :'||accno_rec.accession_number);
DBMS_OUTPUT.put_line('Full path is : ' || path_rec.FULLY_QUALIFIED_IMAGE_NAME);
END LOOP;
END LOOP;
END;Regards
Etbin
Maybe you are looking for
-
Unable to connect to home wi-fi network after iPhone restores an old backup
For some reason when I recently connected my iPhone to iTunes, it restored an old backup from a few days earlier. Since then, I can no longer connect to wi-fi networks I previously connected to regularly, like my home and office networks. I have trie
-
PreparedStatement.setTimestamp does not allo use of DATE index..
(...although they' re not suposed be related) Hi; I use Oracle 10g with Java JDBC driver ojdbc14.jar and I have a PreparedStatement on which among other "bind" JDBC parameters I have a java.util.Date. The ORM that we use (Hibernate 2.0.3) passes this
-
Crystal reports on SAP-BW 3.5 query - problem w. properties of key figures
Dear experts, Creating a crystal report on a SAP-BW 3.5 query we have the following problem: In SAP-BW query we defined a restricted key figure with property 'Calculate single value as Ranked list (olympic)'. Within SAP-BW it works correctly; in Crys
-
Filter Business Partner Extraction from CRM to BW based on Number Range
Hi, Is there any way to extract the Business Partners from CRM system into BI for a specific number range or filter by number range. please provide me with the steps and some related links. Thanks Akila.R
-
BOO HOO NO BT VISION CO3 ERROR
After a year away from BT vision due to being cut off for 4 days - phone, broadband & vision (BT's fault) and then a manager being very rude on the phone then being charged £250!!! after a btopenreach enginer disconnected our services by accident. we