TDMS defragment function blocks for labview

Hello community,

I have a few problems with the function of defrag TDMS in LabVIEW 2015 on a Windows 10 machine.

My Viewer TDMS is crushed during the defragmentation of the tdms file I was trying to open (fragmented 700 MB text file). So I made a simple VI to use as test

and it always breaks LabVIEW. Then, I tried a smaller file (70 MB) and it went well. Then a 120 MB... Hang again.

Sometimes, the VI closes just, other times I get this:

EIP = 0x35023DD4 access violation (0xC0000005)

I was wondering, if anyone of you have had similar problems with function to defragment TDMS crashing?

BTW, had no problems to open the same file with LabVIEW 2014 on a Win7 machine

I also tried to run as administrator.

See you soon,.

Oyvind Risla


Tags: NI Software

Similar Questions

  • How to write a function block?

    Hello

    Someone knows how to write a function block with LabVIEW?  Something like those in real time live > function blocks >.

    Thank you very much in advance?

    Assuming you are referring to these specifically...

    http://www.NI.com/white-paper/7339/en/

    .. then the answer is that it is almost impossible to make a new. However, there is really nothing special all that to their topic. They are essentially normal subVIs (which you can learn about the other links) which just happened to have some terminals connected to shared variables. I personally would not normally recommend that anyway. If you could clarify what exactly you are trying to do, it might be possible to give more specific advice.

  • Need help on how to make dll with VC ++ 2008 for Labview function liblary

    I use VC ++ 2008Express and you want to make the DLL.

    Since I'm using VC ++ 2008, do I have to install the 'MS redistributable"on PC what dose does not have VC ++?

    Is there any free ANSI C compiler do DLL for Labview for use with the function call in libraly?

    Yes, you will probably need the Redistributable Package. Remember to distribute the "Final" of the DLL and not the "debug".

    Regarding the free ANSI C compilers, I'd do a Google search. GNU C/C++ is a very popular.

  • The copy function blocks computer after an item is selected, and the computer is responsible for copy

    Original title: copy function

    The copy function blocks computer after an item is selected, and the computer is responsible for copy. It does not matter what size is the copy area. It usually requires a reboot hard to use the system.

    I tried to follow some of the instructions in a full Clipboard and unfortunately that is not the forms of the English spoken by them.

    Any help would be greatly appreciated.

    Denver

    d2n1cart@hotmail'com

    Hello

    We are pleased to know that the problem is solved. Let us know if face you any problem with Windows in the future.

  • TDMS defrag modifies the permissions of files

    Hello everyone.

    So after a lot of noise and stress, I've finally isolated an interesing issue that occurs when you use the PDM defragments vi.

    For some reason, deframenting a PDM with the PDM file defragment vi in windows XP resets, file permissions to allow full access to:

    -Administrator

    -Administrators

    -SYSTEM

    and removes all other permissions...

    So, she removes the file "Full Access" permission for "Everyone", which is necessary to allow other computers on the network to change your files.

    This means that my satellite computers can no longer save on my server after I have defragment PDM files unless I have manually add a 'full access' for 'All' permission for all the tdms files.

    Does anyone know why the PDM defrag vi do that? Its very annoying and throw a big key in my attempts to complete automation.

    Thank you!

    You reason that TDMS defragment modifies the permissions of the .tdms file, I can also see this on my machine. Maybe it's because the node to defragment will generate a temporary file .tdms in the system TEMP folder, when the defragmentation process is complete, she copy and replace the original file by the file that is defragmented to the TEMP directory, the file in the original location is replaced and the permissions of the original file are lost.

    However, there is always a solution to your problem, we can use the Exec System node in LabVIEW to invoke the 'CACLS' command to set the "everyone" permission back. The diagram below shows how to set the "Everyone" permission for .tdms all files in a directory recursively:

    Please refer to the VI as an attachment for the detail, the 'CACLS' command is available under XP.

  • Screw vs Express SoftMotion function blocks

    Hello

    Are there differences between express screw SoftMotion function blocks? I intend to drive a servomotor through a NI 9505. Examples AND show how using function blocks, but I've been advised to use the screw Express instead, work around odd behavior when using a simulated axis (http://forums.ni.com/t5/LabVIEW/SoftMotion-quot-Update-Buffer-quot-VI-refuses-to-take-more/m-p/22508...

    Thank you!

    Hi JKSH,

    If I booted up a new application, I would use screw Express on function blocks. Here is a list of things to consider when choosing:

    1. By default, function blocks are asynchronous. They run on the rising edge of the entry "run" and are carried out when the output "done" is high. They do not block and function block architecture will almost always call the same function blocks again and again in a loop. You control the flow of execution with the 'run' and 'done' entry and exit. Screw Express, on the other hand, are synchronous by default. They don't have an entry not "run" and instead start running as soon as they are called. They block also until the end screw Express can be converted to asynchronous by right-clicking on them and by changing the "calendar model. When you change the calendar in asynchronous model, the Express VI will now act exactly like a function block.

    2. In general, you should never mix asynchronous and synchronous API. Your application should be one or the other. If it is possible to have safe synchronous and asynchronous calls, you must be very careful and really know what you're doing.

    3. To my experience, write simple applications is easier with a synchronous API, and more complex applications are better suited to an asynchronous API. Since blocking synchronous calls, you need more loops in your application and it can become difficult to maintain.

    4. There is also the property node / API call, on which are based the functional blocks and screw Express. You can do a right click on a function block or Express VI and convert it into a Subvi to see the underlying code. Then the function blocks and screw Express can be pleasant to work with, you must sometimes lower level control that is offered by the property and invoke nodes.

    I looked at your other post and it seems that you meet one of the intricacies of asynchronous calls. In point 1 above, I mentioned that function blocks increase sensitive edge on the execute line. In your modified sample and the original sample, the 'Update buffer' function block is executed when space becomes higher or equal to the "size of the Contour data. In the original example, the size of the table is 40, but in your example, it is 100. We will follow the stream through the example:

    1. We do nothing in the first round since we do not see a rising edge of the signal "run" "Initialize the buffer" until the second iteration.

    2. At the beginning of the second iteration, we initialize the table with 20 points, leaving 20 spaces available. This function block can take more than one iteration to complete, so that the loop can run several cycles before the release of "Done" is set to true. In this case, the next block runs.

    3. Then we start the move of contour. No point is taken in the buffer zone This occurs in the part of the user rather than the scan code.

    4. Then, we see that there are 20 spaces available, so we add more than 20 points to the buffer, leaving us with 0 beds available. This means that in the next iteration of the loop, the signal "run" function block 'Update buffer' will be false. This is essential to the functioning of the example.

    5. Since there is no abandonment called, we have a loop around back.

  • Each scan, SoftMotion takes a point in the buffer zone. Finally, the number of available points will be 20. When this happens, the entry "run" will switch from false to true on the 'Update buffer' function block and 20 points more will be added to the buffer. This cycle continues until you stop.
  • So, what was wrong with your changes? You did the size of the table 100 points. If you look at the steps above, you will see that in the example, we have 40 points in the buffer before taking points. If you increase the size of the table to 100, it means that there are 60 places available. However, 60 is always higher than the "size of data contours" (which is 20) and so the entry "run" function block 'Update buffer' will never wrong; We have always more available space than the "size of data contours. Since "run" is sensitive edge up, we are never really new data in the buffer, and so you get only two cycles that you initially put in. I agree that it is difficult, but it's exactly as function blocks are supposed to work and are certainly something to think about when you use the asynchronous API.

    Thank you

  • 2651 a conversion of TSP Script for LabVIEW

    Hello

    I have a problem on the conversion of all TSP scripts that contain functions and appeal for the end loops. I'm new to the TSP with models of trigger scripts. I used the Script Builder (TSB) Test tool and am able to run any TSP and generate raw data, but I don't seem able to convert most of the codes in the command of LabVIEW VISA or loader LV TSP TSP and run it to generate data... I can't find any tutorial or examples how to do it.

    Let's say that... Use the example of KE2651A_Fast_ADC_Usage.tsp (pulse) and I'll just focus on the portion of function CapturePulseV (pulseWidth, pulseLimit, pulseLevel, numPulses). I have seen a few examples of LV that says loadscript myscript and close on endscript.  I did a lot of different approaches, and I kept getting errors in particular the print function that I am not able to generate data through LV by to read the data in the buffer to inside the instrument. Some approaches, I have had no errors but no data... Some approaches, I got error-285.

    The part of the code TSP pulse that works in TSB is here (I'm not including loadscript and endscript) and what is the RIGHT way to modify the code for LabVIEW and run it and obtain data? Thank you:

    function CapturePulseV(pulseLevel, pulseWidth, pulseLimit, numPulses)
        if (numPulses == nil) then numPulses = 1 end
    
        -- Configure the SMU
        reset()
        smua.reset()
        smua.source.func            = smua.OUTPUT_DCVOLTS
        smua.sense                  = smua.SENSE_REMOTE
        smua.source.rangev          = pulseLevel
        smua.source.levelv          = 0     -- The bias level
        smua.source.limiti          = 5     -- The DC Limit
        smua.measure.autozero       = smua.AUTOZERO_ONCE
    
        -- Use a measure range that is as large as the biggest
        -- possible pulse
        smua.measure.rangei         = pulseLimit
        smua.measure.rangev         = pulseLevel
    
        -- Select the fast ADC for measurements
        smua.measure.adc            = smua.ADC_FAST
    
        -- Set the time between measurements.  1us is the smallest
        smua.measure.interval       = 1e-6
    
        -- Set the measure count to be 1.25 times the width of the pulse
        -- to ensure we capture the entire pulse plus falling edge.
        smua.measure.count          =
                        (pulseWidth / smua.measure.interval) * 1.25
    
        -- Prepare the reading buffers
        smua.nvbuffer1.clear()
        smua.nvbuffer1.collecttimestamps    = 1
        smua.nvbuffer1.collectsourcevalues  = 0
        smua.nvbuffer2.clear()
        smua.nvbuffer2.collecttimestamps    = 1
        smua.nvbuffer2.collectsourcevalues  = 0
        -- Can't use source values with async measurements
    
        -- Configure the Pulsed Sweep setup
        -----------------------------------
        -- Timer 1 controls the pulse period
        trigger.timer[1].count          = numPulses - 1
        -- -- 1% Duty Cycle
        trigger.timer[1].delay          = pulseWidth / 0.01
        trigger.timer[1].passthrough    = true
        trigger.timer[1].stimulus       = smua.trigger.ARMED_EVENT_ID
    
        -- Timer 2 controls the pulse width
        trigger.timer[2].count          = 1
        trigger.timer[2].delay          = pulseWidth - 3e-6
        trigger.timer[2].passthrough    = false
        trigger.timer[2].stimulus       =
                    smua.trigger.SOURCE_COMPLETE_EVENT_ID
    
        -- Configure SMU Trigger Model for Sweep/Pulse Output
        -----------------------------------------------------
        -- Pulses will all be the same level so set start and stop to
        -- the same value and the number of points in the sweep to 2
        smua.trigger.source.linearv(pulseLevel, pulseLevel, 2)
        smua.trigger.source.limiti      = pulseLimit
        smua.trigger.measure.action     = smua.ASYNC
        -- We want to start the measurements before the source action takes
        -- place so we must configure the ADC to operate asynchronously of
        -- the rest of the SMU trigger model actions
    
        -- Measure I and V during the pulse
        smua.trigger.measure.iv(smua.nvbuffer1, smua.nvbuffer2)
    
        -- Return the output to the bias level at the end of the pulse/sweep
        smua.trigger.endpulse.action    = smua.SOURCE_IDLE
        smua.trigger.endsweep.action    = smua.SOURCE_IDLE
        smua.trigger.count              = numPulses
        smua.trigger.arm.stimulus       = 0
        smua.trigger.source.stimulus    = trigger.timer[1].EVENT_ID
        smua.trigger.measure.stimulus   = trigger.timer[1].EVENT_ID
        smua.trigger.endpulse.stimulus  = trigger.timer[2].EVENT_ID
        smua.trigger.source.action      = smua.ENABLE
    
        smua.source.output              = 1
        smua.trigger.initiate()
        waitcomplete()
        smua.source.output              = 0
    
        PrintPulseData()
    end
    
    function PrintPulseData()
        print("Timestamp\tVoltage\tCurrent")
        for i=1, smua.nvbuffer1.n do
            print(string.format("%g\t%g\t%g",
                                smua.nvbuffer1.timestamps[i],
                                smua.nvbuffer2[i],
                                smua.nvbuffer1[i]))
        end
    end
    

    I finally solved it myself! I first create support shell, according to the documents, but the problem was with functions of scripts but I solved by introducing VISA separate, feature writing and THEN retrieve the data from the instrument directly by VISA buffer read more. I did TSP_Function Script Loader that allows simply copy/paste codes teaspoon (any * .tsp) of: TSB program or incorporated into this type of function and loader.vi, name (parameters), defined by its own pasted script then it will generate RAW files directly in the array of strings that can be broken into pieces or restructured into what you want as for the graphics, etc..

    That's all I really need to do, I can do codes of tsp in LV and get the data off of it easily via the function defined. Now, this Loader.VI behaves in the same way that TSB keithley-made program I use.

    Here I add Loader.vi Script TSP_Function (in LV 2011 +).

  • modulation toolkit for labview for embedded controller PXI-8106

    Hello

    I have an on-board controller: 8106 PXI OR PXI 5661 and 5671. He came with DAMA RFSG but not the Modulation Toolkit (TM). Now I cannot access some screws RF Toolkit as NI DAMA close.vi etc. I opened a code that uses this DAMA close.vi and since I donot have probably MT, I can't run since the claim code to choose the path!

    I checked for the TM in the start menu-> all programs-> national instruments-> modulation but in vain. Also, I opened MAX and under "Software", I could find DAA, pilots RFSG etc but not the Mt.

    When I checked online it says I have to buy the cd/dvd of MT. If I do, how I run on my controller?  What are my other options?

    PK

    Hello

    I think I solved the above problem. I had to install the RFSG and ACD for labVIEW. For some reason, the equipment was delivered to me with DAMA and RFSG, but only for C. This part was misleading because I saw on my National Instruments system but not the DAMA DAMA and RFSG vi. Also spectral measurement Toolkit (SMT) has not been installed. SMT is a MUST for the good functioning of the RF VSA. After you install the required drivers and tool boxes, I am able to run and use the VI completely.

    Thanks for your support Abhishek.

    PK

  • Unzip.VI is available for LabVIEW 8.2.1?

    I am user of LabVIEW 8.21, and I need the unzip.vi for this version. Unzip.VI is available for LabVIEW 8.6, could - one please it downgrade for me.?

    Thank you in advance.

    It is a function of vi.lib, part of a lvlib and password protected, and LabVIEW does not vi.lib functions to be downgraded. And because it is part of a lvlib and password protected, it cannot be simply switched off vi.lib to downgrade it in any case.

    And finally and above all, it challenges LabVIEW Manager functions that have not been exported in LabVIEW 8.5 before. But you don't have to despare. Instead, you can download the OpenG LVZIP using VIPM library and use a fully embodied ZIP/UNZIP library.

  • Function documentation for the SignalExpress project

    I use the function 'project documentation' LabView SignalExpress 2009 in my application project.

    The draft measure a pressure signal permanently in different situations. I want to present my project document is a list of locations of the siganl of pressure taken under different situation, with a plot for each situation so that readers can easily compare the plots.

    For example, I want the document states:

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    At 10:00 at low flow:

    ground pressure siganl

    At 11:00 with increased flow

    the same pressure signal ground

    etc.

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    What I did was flirting with the pressure signal in my documentation of the data acquisition phase in the project tree, but in doing so, I could only show the last parcel of this signal in my documentation, the plot is in real time, just like what shows in the display of the data.

    Is there a way to show the same siganl taken at different times in a documentation?

    Thank you!

    Hello

    You can totally do this by using a feature called "instant."

    Rather than drag the step signal directly in your project document, first create a snapshot of your data using the menu option "use > create snapshot...". (Ctrl + Shift + T) »

    A dialogue will appear asking you what signals you want to instant. After selecting / them and clicked on Ok, your new snapshots will appear in the section overview of the application (in the left corner below, by default).

    Drag these signals on your project document. When you are ready to create your next snapshots after changing the configuration, you can select "Operate > repeat the last Snapshot (Ctrl + T) ' to simplify your process.

    For more information about the snapshot, see using LabVIEW SignalExpress found under "Help > LabVIEW SignalExpress Help" and search on the keyword "snapshots."

    I hope this helps!

    Phil

  • can I create a DLL file for labview that has DLL library with inside?

    Hello everyone,

    I am developing an application for the cards PCI devicenet in labview (beginner to labview) environment.  Is there a DLL file for the PCI card from the provider. But it's too complicated for a beginner to call each function in the DLL of labview. Therefore, I'm trying to re - use a VC ++ program (working properly) that calls some sellers DLL library functions.    To do this, I created the DLL file which includes all headers and libraries the provider DLL, as indicated in the attached figure. But I couln can't see the effect on the device. is it possible to create a DLL file for labview that has DLL library with inside? If this is not the case, how can I implement the program shown in figure?

    I would like to wish a huge as to advance.

    It is not something I have a lot of experience in so I don't know all the details of the restrictions or requirements etc - but it is certainly possible to create wrappers for the dll and then use them in LabVIEW - this is sometimes necessary to convert some native types/data structures in C/C++ into something that you can switch to your other DLL LabVIEW.

    There is a link here: http://digital.ni.com/public.nsf/allkb/06ECDC689DDA0F3D862574440074CD95

  • Implement the Std::Vector < < Point2i > > Std::Vector in dll wrapper for LabVIEW

    Hi, I'm writing a wrapper dll that using OpenCV function. I had been sucessfully implement Std::Vector by referring to "An array of clusters to a dll C sending".

    And now, I want to implement the Std::Vector<>> who is a lot like table 2D but each line items may be different.

    In LabVIEW, I attribute a range of cluster of the dashboard cluster of 2 I32 elements, structure which is shown below:

    I think it has the same functionality as Std::Vector<>> in C++.

    So I plug this data on the "Call library function node" structure and generate C code that indicated below:

    /* Call Library source file */
    
    #include "extcode.h"
    
    /* lv_prolog.h and lv_epilog.h set up the correct alignment for LabVIEW data. */
    #include "lv_prolog.h"
    
    /* Typedefs */
    
    typedef struct {
        int32_t elt1;
        int32_t elt2;
        } TD4;
    
    typedef struct {
        int32_t dimSize;
        TD4 elt[1];
        } TD3;
    typedef TD3 **TD3Hdl;
    
    typedef struct {
        TD3Hdl elt1;
        } TD2;
    
    typedef struct {
        int32_t dimSize;
        TD2 elt[1];
        } TD1;
    typedef TD1 **TD1Hdl;
    
    #include "lv_epilog.h"
    
    void funcName(TD1Hdl arg1);
    
    void funcName(TD1Hdl arg1)
    {
    
        /* Insert code here */
    
    }
    

    Then, I write this code show below in dll wrapper:

    void funcName(TD1Hdl Blobs)
    {
        vector < vector > blobs;
    
        // Distribute contents of blobs to Blobs from LabVIEW
        MgErr err = mgNoErr;
        size_t arraySizeInBytes = Offset(TD1, elt1) + sizeof(TD2)*blobs.size();     // Determine row size
        err = DSSetHSzClr(Blobs, arraySizeInBytes);
    
        if (err != mgNoErr)
            return;
    
        (*Blobs)->dimSize = blobs.size();
    
        for (size_t i = 0; i < blobs.size(); i++) {
            arraySizeInBytes = Offset(TD3, elt) + sizeof(TD4)*blobs[i].size();  // Determine col size of each row
            err = DSSetHSzClr((*Blobs)->elt[i].elt1, arraySizeInBytes);
    
            if (err != mgNoErr)
                return;
    
                    /*......................*/
            }
    }
    

    When I call LabVIEW dll, the program get interuption(i.e shutdown) on line where I want to determine the size of each row.

    Could someone give me some suggestions on this subject or promote another application of this requirement?
    Thank you very much.

    MgErr funcName(TD1Hdl Blobs)
    {
        vector < vector > blobs;
    
            Labeling(image_binary, blobs);         // the prototype of this function is: Labeling(Mat &binary, Vector> &blobs)
    
        // Distribute contents of blobs to Blobs from LabVIEW
        MgErr err = mgNoErr;
        size_t arraySizeInBytes = Offset(TD1, elt) + sizeof(TD2)*blobs.size();      // Determine row size
    
            if (contours == NULL)        {                Blobs = (TD1Hdl)DSNewHClr(arraySizeInBytes);                if (Blobs == NULL)                         err = mFullErr;        }        else                err = DSSetHSzClr(Blobs, arraySizeInBytes);
            if (err != mgNoErr)                return err;    for (size_t i = 0; err == mgNoEerr && i < blobs.size(); i++) {
            arraySizeInBytes = Offset(TD3, elt) + sizeof(TD4)*blobs[i].size();  // Determine col size of each row
    
                    if ((*Blobs)->elt[i].elt1 == NULL)                {                        (*Blobs)->elt[i].elt1 = (TD3Hdl)DSNewHClr(arraySizeInBytes);                        if ((*Blobs)->elt[i].elt1 == NULL)                                    err = mFullErr;                }                else               err = DSSetHSzClr((*Blobs)->elt[i].elt1, arraySizeInBytes);
                    if (err == mgNoErr)                {                        (*((*Blobs)->elt[i].elt1))->dimSize = blobs[i].size();
    
                            /*......................*/
    
                    }
            }
            (*Blobs)->dimSize = i;        return err;}
    

    Personaally I've usually done like this. Already, the tar of DSSetHSzClr() indicates if there was something wrong and that the handle cannot really become NULL to call this function.

    To be entirely correct and safety integrated, you must do more than that. But as long as you assume that the incoming picture is always smaller that the outgoing Board will be (usually it be 0 items when you enter this function, but if you reuse sort table in the diagram, by storing it in a registry change for example, this may not be true more) this will be enough.

  • Is the fopen() function works in labview?

    Hi gentlemen...

    I used the fopen() function in labview, it does not work. Is that I can use the fopen() function works in labview?

    Please help me as I'm new to labview.

    Thanks in advance

    Can you give us a description of how you try to do this?

    You realize that LabVIEW is not based on text, no?

    Looking just for another equivalent method? http://zone.NI.com/reference/en-XX/help/371361J-01/lvprop/vi_open_front_panel/

  • The blocks integral labview 7.1 where is in labview 2010

    Hi I have to integrate signals sampled. In labview 7.1 is well checked blocks for it. But where is the equivalent in labview 2010? I can't find.

    It's my VI, I now

  • Xantrex HPD for LabVIEW 2009 pilot

    I saw there are other products OR with drivers for Xantrex HPD feeds.

    Someone at - it one that works for LabVIEW 2009 (or earlier)?

    Ok.  I have it.

    HyperTerminal has worked.

    He checked that port settings and command syntax is correct.

    ALL programs in LabVIEW examples do not have the function of VC to food.  When I hard coded the CR function after the order (also preprogrammed) it worked.  Xantrex (now Sorensen) manual do include SOME simple examples - you just know by experience (catch 22) how do.

    Also be noted that we need to send both a voltage and current definition commands because both are zero by default.  (If you send one, nothing SEEMS to happen because the other is 0).  That could also have been included in an example of beginning.

    THANKS for your help!

Maybe you are looking for

  • question of Bootcamp after failled to install W10

    Hey there I tried to install windows 10 on my Mac Pro (end 2013) 2.7 GHz 12-Core Intel Xeon E5 64 GB 1866 MHz DDR3 ECC 1 tb SSD Dual AMD over-pants D700 6144 MB so after using the bootcamp assistant and an 80 GB partition for windows then when starte

  • Update corrupted retriever database

    Someone knows how to solve this problem. Get also corrupted message when I run the slim Installer on the client?

  • incomplete (HP) the default restore factory Windows Vista Home Premium

    After a HP restore to default settings, freecell, solitaire, solitaire spider do not react to clicking the icon for one of them.  The boxes are (and have been) checked, unchecked, recontroler, rebooted, ad infinitum.  It seems as if the files .exe fo

  • Computer hangs when trying to close

    I have Windows Vista Home Premium 32 bit SP1. When I click Start the small arrow and then SHUT DOWN, everything seems to go ok until it reaches STOP then the trouble began. The small circle begins to spin with CLOSING down beside it, this happens to

  • Time zone is GMT I need the UTC value, I use Windows Vista

    My computer laptop time zone is set to GMT I need the UTC value, I use Windows Vista. Please tell me how to change it? Thank you