Bug within Write to Measurement Express vi

I think I have found a Bug within the Write to Measurement express VI.   I have attached an example VI to help reproduce the error.
Here is a bit of history.. I have a data monitoring system which runs continuously.  I have the write to measurement setup to create a new file every 12 hours.  What I noticed is that even though a new file has been created,  I still cannot access the old files until I stop the VI that has the Write to Measurement VI in it.  I am trying to access the files via Diadem.  
For this application, it is not practical to stop the Data Monitoring Main VI every time I need to look at the data.  The alternative that I found was to not use the Write to measurement express VI and use open/write/close TDMS vi's.   This is not an acceptable solution as the features programmed into the Write to measurement Express VI are need for my application.  
Can someone please fix this or help me fix it?
Thank you
Mike
Attachments:
example code.vi ‏77 KB

Hello Mic,
Please understand that I can suggest a workaround, and I've tested it in your scenario and it seems to work OK, but I cannot guarantee this workaround for all possible use cases of this Express VI.  It is for this reason that we generally don't like to recommend one-off modifications to VIs that ship with LabVIEW - they do not get tested with as wide a set of use cases as we do on VIs when we ship them.  As such, I'm not going to just hand you a VI to replace in vi.lib, but I will show you a few edits you can make to work around this issue.
Open this VI:  "[LabVIEW Install Dir]\vi.lib\express\express shared\ex_TDMS\ex_createorOpenTDMS.vi"
Open its diagram.  Near the left there's a section that looks like this:
The current known bug is with the "Not A Number/Path/Refnum?" function on TDMS files, so you'll see the following changes in the below diagram, which hopefully you can make and try out in your use case.  I would highly recommend making a backup copy of this VI before saving any changes!
Delete the "Not A Number/Path/Refnum?" function.
Connect the "new file?" input to a "Not" function, and wire the output of the "Not" to the case structure selector where "Not A Number/Path/Refnum?" was previously being used.
Delete the wire connecting the error out of the first inner case structure to the second inner case structure, and re-route the error wire around the first case structure.
Hopefully with these three instructions and comparing the shipping and workaround images you can successfully get up and running.
Message Edited by Jeff B on 03-01-2007 08:12 AM
Attachments:
shipping.gif ‏5 KB
workaround.gif ‏6 KB

Similar Messages

  • Write to measurement file Express VI - TDMS file has separate "channels" for each data point

    Im trying to write a VI to measure and record thermocouple data from an Advantech T/C DAQ. Using the "DAQNavi" express VI provided by them, connected to the Write to Measurement File express VI, I have managed to read in the data and create a TDMS file. However, when I open the TDMS file, each time step of temperature data is entered as a separate channel, instead of all of the channel data going into one tab. Obviously this is a huge problem as it creates hundreds of tabs after just a few seconds. Any thoughts as to what causes this?

    Hi glibby,
    How did you configure the Write to Measurement Express VI? Please select "one header only".
    If you have your own timestamps to write, please merge your timestamp channel and measurement channels with "Merge Signals" before passing them to the Write to Measurement.
    Best Regards,
    Mavis

  • Help with saving time stamps to "write to measurement file" excel format.

    I am having problems saving the timestamps from my data to the write to measurement express vi for excel.  My incoming data is converted from dynamic data to a 1d array for processing, which I understand you lose the time stamp data. I added a new array for time stamps but this array then cannot be converted back to the dynamic data that is requested to go into the write to measurement file express vi.  I would prefer to leave the data in an array to be saved rather than converting it to a waveform so is there any way to add the time stamps from my 1d array back into the write to measurement file? 

    I set it up to build a waveform now but I am still having issues with it saving the correct timestamp.  The time just incriments for every second (as it did before converting the dynamic data to the waveform). I attached a screenshot.  
    Attachments:
    waveform.png ‏36 KB

  • Write To Measurement File Only One Line Of Data

    Hello,
    I have an express VI setup to acquire a single channel of strain running in a simple while loop.  The output is wired directly to a Write To Measurement Express VI.  However, the resulting measurement file contains only one line of data.  
    I have tried changing the settings of the VI to no avail.  I feel that I must be missing something basic.  My while loop is setup to take one measurement on demand for each loop.  I am assuming the VI knows to write each loop as a new line of data?  
    Thanks for any help,

    Did you choose "append to file" in the Express VI configuration settings?
    You need to upload your VI for further help.  It's impossible to help someone debug a problem without the code to look at.

  • Samples number is not properly set with VI Express Write To Measurement File

    Hello,
    I have a strange problem with the VI Express Write To Measurement File.
    When I generate the .lvm file the samples number for each channel is equal to 1
    instead of 34 !
    So when I use the VI Express / Input / Generate an arbitrary signal and I want to import
    the generated signal... only one point (the first one) is imported...
    I can manualy fix it by changing samples number in the lvm file using a text editor but that's a (very) dirty hack !
    Here is an example of the generated LVM file
    LabVIEW Measurement   
    Writer_Version    0.92
    Reader_Version    1
    Separator    Tab
    Multi_Headings    No
    X_Columns    One
    Time_Pref    Absolute
    Operator    scls
    Date    2008/04/12
    Time    10:35:58,322057
    ***End_of_Header***   
    Channels    2       
    Samples    1    1   
    Date    2008/04/12    2008/04/12   
    Time    10:35:58,323057    10:35:58,323057   
    X_Dimension    Time    Time   
    X0    0.0000000000000000E+0    0.0000000000000000E+0   
    Delta_X    1.000000    1.000000   
    ***End_of_Header***           
    X_Value    Untitled    Untitled 1    Comment
    0.000000    0.000000    20.000000
    0.082000    10.000000    20.000000
    0.182000    10.000000    25.000000
    0.282000    20.000000    25.000000
    0.382000    20.000000    30.000000
    0.482000    30.000000    30.000000
    0.582000    30.000000    35.000000
    0.682000    40.000000    35.000000
    0.782000    40.000000    40.000000
    0.882000    50.000000    40.000000
    0.982000    50.000000    45.000000
    1.082000    60.000000    45.000000
    1.182000    60.000000    50.000000
    1.282000    70.000000    50.000000
    1.382000    70.000000    55.000000
    1.482000    80.000000    55.000000
    1.582000    80.000000    60.000000
    1.682000    90.000000    60.000000
    1.782000    90.000000    65.000000
    1.882000    100.000000    65.000000
    1.982000    100.000000    70.000000
    2.082000    110.000000    70.000000
    2.182000    110.000000    75.000000
    2.282000    120.000000    75.000000
    2.382000    120.000000    80.000000
    2.482000    130.000000    80.000000
    2.582000    130.000000    85.000000
    2.682000    140.000000    85.000000
    2.782000    140.000000    90.000000
    2.882000    150.000000    90.000000
    2.982000    150.000000    95.000000
    3.082000    160.000000    95.000000
    3.182000    160.000000    100.000000
    3.282000    170.000000    100.000000
    PS : I also post my problem at
    http://forums.lavag.org/Strange-behaviour-of-VI-Express-Write-LVM-t10570.html&gopid=44101#entry44101
    Attachments:
    generate_step_lvm.vi ‏119 KB

    If I use the "one header per segment" option I get the following LVM file (see below)
    But the problem is same !
    I can't import this file in VI Express / Input / Generate Abitrary Signal (I only get one row... the first one)
    I see three solutions :
    - VI Express Write LVM has a bug ?
    - I don't know how to use this VI Express correctly !
    - VI Express / Input / Generate Abitrary Signal has a bug ?
    LabVIEW Measurement    
    Writer_Version    0.92
    Reader_Version    1
    Separator    Tab
    Multi_Headings    Yes
    X_Columns    One
    Time_Pref    Absolute
    Operator    scls
    Date    2008/04/12
    Time    16:38:37,578
    ***End_of_Header***    
    Channels    2        
    Samples    1    1    
    Date    2008/04/12    2008/04/12    
    Time    16:38:37,592999    16:38:37,592999    
    X_Dimension    Time    Time    
    X0    0.0000000000000000E+0    0.0000000000000000E+0    
    Delta_X    1.000000    1.000000    
    ***End_of_Header***            
    X_Value    Untitled    Untitled 1    Comment
    0.000000    0.000000    20.000000
    Channels    2        
    Samples    1    1    
    Date    2008/04/12    2008/04/12    
    Time    16:38:37,717    16:38:37,717    
    X_Dimension    Time    Time    
    X0    1.3899993896484375E-1    1.3899993896484375E-1    
    Delta_X    1.000000    1.000000    
    ***End_of_Header***            
    X_Value    Untitled    Untitled 1    Comment
    0.139000    10.000000    20.000000
    Channels    2        
    Samples    1    1    
    Date    2008/04/12    2008/04/12    
    Time    16:38:37,739999    16:38:37,739999    
    X_Dimension    Time    Time    
    X0    1.6199970245361328E-1    1.6199970245361328E-1    
    Delta_X    1.000000    1.000000    
    ***End_of_Header***            
    X_Value    Untitled    Untitled 1    Comment
    0.162000    10.000000    25.000000
    and so one ...

  • Problem with Write To Measurement File Express VI not writing to file if file was deleted after the first call (7.1)

    I'm using the Express Write to LabVIEW Measurement File in LV7.1.
    I have it set to "Save to one file"  and have tried both "Overwrite file" and "Using next available file name" for the "If a file already exists" conditions.
    The path/filename is passed into the function.
    It works fine the first time around.  If the file is deleted before the function is called again, an error occurs since LV is unable to find the file.
    I have had to stop and re-run my program in order to write to use the function again.
    Since I am able to delete the file I assume it was closed but it seems like LV expects it to be there, even though the function was supposed to create/open/close the file...  Is there any way to reset this without stopping/restarting the program?
    Since my application creates several files (only one using the Express VI) I am checking for the filenames and requiring that they be deleted (or a new filename be used) before acquiring data.  Everything has worked great, except for the Express VI.
    Thank you,
    David

    Ok, I've edited the VI you posted to reproduce my error (this time with 8.0). 
    I added a "master stop" and "start log" button.  To demonstrate my problem:
    1.  Run the VI
    2.  Click "START LOGGING" - c:\test.txt is created
    3.  Click "STOP" - c:\test.txt is closed
    4.  Delete the file c:\test.txt with Windows shell or explorer
    5.  Click "START LGGING" - a new c:\test.txt file should be created but instead an error is raised in the Write LabVIEW Measurement File function.
    Any ideas?
    Thanks,
    Dave
    Attachments:
    Write LV Meas File 2.vi ‏96 KB

  • How to populate column titles for y values when using Write to Measurement File Express VI with a tab delimited text-based .lvm file?

    The .lvm file generated by the Write to Measurement File Express VI includes column heading titles for the y values, but they are a default value of "untitled".  See attached example of a sample file when opened in Excel, the values in question are highlighted.  Is there a way to specify the column titles when the file is written?
    This is a similar question to this posting, which received a work around response to use the Write to Spreadsheet File.vi, rather than a solution when using this VI.
    Message Edited by Hightop Raven on 05-02-2007 03:37 PM
    Attachments:
    column_titles.gif ‏13 KB

    Sorry for the late reply.  I was out of the office Friday.
    You can do it, but the code can get rather ugly.  Under the hood, the dynamic data type (the dark blue wire) is an array of waveforms.  In your case, the scalar values you convert to a dynamic data type are being converted to an array of waveforms, each waveform having one element.  You have two options.
    Explicitly convert your scalars to one-element waveforms (t0=0, dt=1) and add the title before conversion to a dynamic data type.
    Convert your dynamic data type to an array of waveforms and loop through them to add the column labels.  The conversion blocks are in the Signal Manipulation Express palette.
    I would recommend 2, since it is the easiest to add.  It is also the easiest to run only on the first iteration.  Just put a case selector around the loop, wire the selection to the While loop iterator, and set the case containing the label code to 0.  The default case simply passes through the dynamic data.
    My apologies for not including a screen shot.  I am in the process of upgrading my machine and can't run LabVIEW.  If you need one, let me know and I can post one tomorrow.
    This account is no longer active. Contact ShadesOfGray for current posts and information.

  • "Write to measurement file" express VI (TDMS foormat) keeps file opened

    Hello!
    I am trying to use "Write to measurement file" express VI to write TDMS data obtained from DAQmx in LV2011. Each run of the same write function creates new file.
    It seems that last written file remains to be opened until program stops or next file written. It has 0 size and it is not possible to access it from other programs.
    Is it possible to save file immediately and close it?
    Solved!
    Go to Solution.

    It seems, that wiring "DAQmx task" (for AI task) to "Write to measurement file" express VI does not works in my case (only in exe).
    The error is the same as file not found (error code 7), but file is created. Something gets wrong inside express VI. I am unable to debug exe, so I have just disconnected DAQmx task from express VI (really don't specially need it anyway).
    For sure, the same LabVIEW version and drivers are installed on target and VI is working in it as well as at dev machine.
    Debug error which I had encounter is already published in the forums elsewhere. It seems that the problem is in VI without block diagram inside hierarchy. Maybe with Express VI.
    PS test app writing tdms files the same way is working like a charm (without DAQmx task wired).
    So, thank you for yor advices, the problem seems to be solved. Maybe I will have a look in more details about the reason of such error, but can't do it now.

  • Write to Measurement File Express VI: file name prompt

    I am using the Write to Measurement File express VI to write some data.
    Even though I have not selected "ask user to choose file" and have set a default filename, the vi still prompts me to choose a file. I tried restarting my pc and it used the default filename the first time and then went back to prompting me. I have set the default to overwrite my existing file each time, so I don't understand why I keep being prompted. If you look in the express VI the "ask only once" radio button is selected and greyed out, but I don't know why; I didn't select it.
    (I have the express VI in a while loop and want it to write a line of data to the file each time the loop executes, so it's not convenient to be prompted for the filename each time)
    I'm sure this is my own silly fault but would appreciate some advice
    Thanks, klara
    Attachments:
    2PDCal_USB1v3.01.vi ‏441 KB

    I'd suggest changing the mechanical action of your stop button from "Switch When Pressed" to "Latch When Released".  This might be the only problem.  If you didn't manually change your stop button back to false before running again, your loop would run once and stop, and you'd immediately see the file dialog from the Format Into File function.  Changing the mechanical action would prevent you from needing to manually change it back to false before the next run.
    Message Edited by Jeff B on 02-07-2008 08:48 AM

  • Time format in 'Write To Measurement File' express vi

    Hi,
    I'm using the 'Write To Measurement File' express vi to save data acquired using a PCI-6221 board and the DAQmx vi s. The acquisition is continuous.
    When I set the 'number of samples per channel' property of the DAQmx Read.vi to -1 (ie, read all available samples), the time is saved in relative format. When I set any other value (ie a certain quantity of samples), the time is saved in absolute format.
    Do you know why the vi does this, and if there's any way of controlling the time format ?
    Thanks,
    ps : I use Labview 8.0 

    Hi Scalpas,
    I look into what I believe you are doing , but I didn't see the same results. Can you explain what datatype you are transferring to the Write to Measurement file VI? Or provide a sample of code that demonstrates the issue.
    I think it might have to do with the DataType conversions when writing that file.
    Sappster

  • Write to Measurement file wil not write data daily

    I have been using the Write To Measurement File express VI to record daily values. The express VI is no longer saving daily files or is checking for file size. WTF. Does anyone have a more bullet proof way of saving data daily with a single header for the day?
    Thanks,
    Matt

    MS UCD wrote:
    Ravens Fan,
    So to clarify, I meant local variable instead of shared variable.  Shared variables will come into play when I construct the real-time embedded program on the cfp-2120 controller. Thanks for the clarification. So are you on the clock for all this?
    Sometimes yes, sometimes no.  Since today is a holiday, I'm off the clock.
    Anyways, so if I need to have the user see the values on the front panel and also record the values later, how do you suggest one does such a thing other than writing an indicator and then making a local variable that is then recorded?
    The local variable has nothing to do with recording the values later.  It is just a way of accessing a control or indicator in more than one part of the program.  If you used shared variables (and I think you would need to have the DSC module to have this functionality), you could write to the shared variable and have it set up to log its values to the Citadel database.  It is a built-in method of logging that just requires configuration of the shared variable, no additional programming would be needed.  Otherwise you will need to add the code to write to a log file like you are doing now.
    The new/old mechanism for checking the date has brought the adequate functionality I was looking for- mainly new files for each day.
    With respect to the race condition you mentioned, could a sequence structure be used to write the local variable to the output array? In essence, I would calculate the scaled values and then write them to the data array. Another solution could be a control in the last case that then is used to initiate a case structure in which the shared variables for the data acquisition iteration are then recorded in the output array.
    A sequence structure (and a flat sequence is preferable to a stacked sequence for code readability and maintainability) would guaranteed that one section of code completes before another begins.  However, it is still preferable to use wires.  Wherever you are wiring to a local variable, just send the wire to the border of the while loop.  Feed the wire from that tunnel to the build array function and eliminate the local variable that you are reading there.  Your case structure in a while loop is really just functioning like a stacked sequence structure.  Every iteration of the while loop executes the next case in the case structure.  If you are sequencing through the data values in the same order that you are building them into an array outside of the loop, you could actually build the array element by element inside each case structure and use a shift register on that array to carry the data from one iteration of the while loop to the next.  Then once you while loop is done, the array has already been built.  If by chance you are acquiring the data in a different order then you want to build it into and array, then the array functions could get much more complicated inside the case structures.  But you could initialize the whole array before the case structure, and use replace array subset to replace each specific element as you acquire it.
    I am interested in the producer/consumer arrangement you speak of. Do you have an example you could send me that shows this operating?
    Go to File then New....   Look under frameworks, design patterns, and Producer/Consumer Design pattern (Data).  Also search the forum for producer/consumer and I'm sure you'll see plenty of examples.
    As for the Time Signal controls being located in the Labview abyss, what can I say? Every learning experience has a few bugs. ; - ) If the Time Signals are constants what effects on the time in the chart will this have?
    Since the time controls are way off, I assume that the program user will never actually go out into the space of the front panel to find them and change them during the execution of the code.  (I am also assuming that those controls never get changed programmatically by writing to a local variable or property node or they are not part of the connectory pane where this VI is called as a subVI in another one that passes in a time stamp on every call.)  If they never change, then they are effectively constant.  Changing them into constants would clean up the code and make it slightly more efficient, but would not appear to execute any differently.
    Thanks for helping this novice out!
    Regards,
    Matt

  • Write to Measurement File time column wrong starting value

    I am using Write tp Measurement File express VI.  I select to write one time column.  The values writtent in the time column start from a value that does not seem to correspond to anything in the program -- sometimes as much as 2-3 days before the saving begins.
    Can I force the starting value  of time to something, or get it to write the time since we started saving, or something predictable?

    Include code whenever available.  Asking somebody to troubleshoot your software without any code is like asking your mechanic to fix your car without taking your car to him.
    Source
    I don't recommend using the Write Express VI.  I recommend using the File I/O primatives because they allow for much more control over what gets written and how.  Still I would expect the Express VI to be able to write time properly so I'd assume there is some kind of bug with the data being given to the function.  Post some code so we can see what is going on.
    Unofficial Forum Rules and Guidelines - Hooovahh - LabVIEW Overlord
    If 10 out of 10 experts in any field say something is bad, you should probably take their opinion seriously.

  • Write to Measurement File Defaults Back to "Save to One File"

    I'm trying to use the "Write to Measurment File" to make a series of files - but as soon as I hit ok it defaults back to "Save to one file". Even without running the VI it just sets itself back. I've attached files of what it looks like before I hit okay, the settings, and what happens after I close it.
    Perhaps this is a bug?
    Also, if you can see, I don't want the file to be called testdata__ but there is no way to change the prefix of the file because the box is greyed out. Any way to change that either?
    Solved!
    Go to Solution.
    Attachments:
    Capture.JPG ‏70 KB
    Capture2.JPG ‏66 KB
    Capture3.JPG ‏47 KB

    What version of LabVIEW are you using?
    LV2009 has some bugs with the Write to Measurement File Express VI.
    See this thread for more information.  http://forums.ni.com/t5/LabVIEW/write-measurement-file-save-to-series-bug/m-p/1226104

  • Write to measurement file at every n iterations

    Hi guys,
    I would like some help with saving data in labview 2010 SP1 (base development system). I am using a "Write to measurement fil express VI" inside a while loop and the data out from the DAQmn Read is wired to the signal in of the "Write to measurement fil express VI".
    The way I have wired it is the VI saves the data as a text file after it has recorded 100 samples (the nuber of samples to read in this case was set to 100). I would like to know if there is a way to control the rate at which the express VI saves the data. As in, I want the express VI to save the data at specified time interval or at every nth iteration. I have attached the main VI and its 2 sub-VIs for reference. Please let know if anyone can help me resolve this issue. Thank you for your time and inputs in this regard.
    Raj

    Robert,
    First, you must understand that the above code resides inside a loop. The blue square i terminal is known as the iteration terminal. It provides the current loop iteration count, starting from zero.
    The first input (x) to the Quotient & Remainder Function comes from this iteration count (i) terminal of the loop.
    The second input (y) to the Quotient & Remainder Function comes from the control N.
    We wish to write to the measurement file every N iterations of the loop. If we take our current iteration count (i) and divide by our desired N, every Nth iteration of the loop, the remainder will be zero. For all other iterations, the remainder will be non-zero.
    That being said, we check the remainder and compare it to zero. If it is zero, we will send a True value to the Enable terminal on the Write To Measurement File Express VI. Any time a True value is sent, we will write to file. Anytime a False value is sent, nothing will be written to the file.
    The green new_file input on the Write To Measurement File Express VI is used when the "Save to series of files (multiple files)" radio button is selected in the Configure dialog box of this Express VI. When "Save to one file" is selected, this option does not apply, and so it is not included in the input list, which is why you are not seeing this.
    This new_file input is used to tell the Write To Measurement File Express VI when to start writing to a new file.
     

  • Labview 9.0: Error 1 occurred at Write To Measurement File

    Hi
    Our University recently got the latest version of Labview (9.0 32-bit) which I installed today.The labview file I am using (my6008v6.vi)  used to work fine with the older version (8.5 i think). My write-to-file VI is enabled at certain time intervals in order to log data. As soon as it is enabled for the second time I get the following error:
    Error 1 occurred at Write To Measurement File->Copy of murray6008v6.vi
    Possible reason(s):
    LabVIEW:  An input parameter is invalid. For example if the input is a path, the path might contain a character not allowed by the OS such as ? or @.
    =========================
    NI-488:  Command requires GPIB Controller to be Controller-In-Charge.
    I made a simple file (simplew2f.vi) to test this, with a button which I can press to enable/disable the writing of data. I am able to start writing data and then stop writing data but as soon as I try resume the writing the same error occurs.
    This confuses me greatly since this wasn't a problem using the old version and my Labview knowledge is minimal. Any help would be appreciated.
    Attachments:
    my6008v6.vi ‏214 KB
    simplew2f.vi ‏64 KB

    So, which VI are you having problems with?  Sounds like both...
    Okay... - sigh - where to start....   
    Well..  Let's start with a few comments. 
    1.  Try to stay away from the Express VI.  I know the Marketing guys at NI will not like me for saying so, but I am saying so.  They are a nice marketing feature that Grumpy Old Men like myself do not like.   They make it easy to write quick code..  And I will limit my comments to that.  (It's not your fault.. )
    2.  The wiring on your diagram is not clear or easy to read.  Yes, with additional time and double-clicking each wire I can tell where they are going.  However, a rule of thumb, alway wire from Left to Right.  Never right to left.  And do not run the wires under objects, even the ones you are wiring to.
    3.  simplew2f.vi:  You should put a small delay in the While Loop.  I ran it three times and it wrote to the files without error.  And yes, I used LV2009.
    4.  my6008v6.vi:  Avoid wiring from the top of the While Loop.  At frist, it looked like the data was coming out of the While Loop because the wires went to the left side of all the index node of the Index Array function.  
    You should set your Browse Option for the file path to "Files or Folders" and "New or existing".  I did that and I was not getting the error message you described.
    R
    Message Edited by Ray.R on 03-03-2010 08:33 AM
    Attachments:
    pathProperty.PNG ‏13 KB

Maybe you are looking for