Dynamic history size of xy chart buffer

Hi all..
My question is that when I wanna plot dynamic xy graph I should use xy chart. Till here everything is ok. But the option""history size"of xy chart buffer forces me to determine how many points of history data will be displayed. But  what i want is that not fixing it, i wanna see all measurement points till i stop the measurement. thats why i connected to history size option to loop number indicater so that after each measurement i would be able to see all the previos datas till i stop the loop. But it doesnt work!! Does my approach is wrong?

Sima is right.
You cannot have an unlimited history size on a computer with limited memory and resources (Yes, even gigabytes is not infinite). If course you can make your own history buffer by growing the x and y data in shift registers, but at one point during run the system will bog down due to constant memory reallocation operations. Also you cannot possible display more data that fits on a typical screen.
Typically there is some knowledge on an upper boundary, so you can preallocate suitable buffers. If the history is bigger than fits in memory, stream to disk and add some mechansims to browse through history data by reading selected portions back.
LabVIEW Champion . Do more with less code and in less time .

Similar Messages

  • Report Size to fit Chart Size

    Using the dynamic width and dynamic height properties of a chart I will change the size of the chart dynamically.
    However, when exporting the chart to an image I want it to export at the chart size and not be restricted to the static size of the page.
    Any way to do this ?

    Hi St33ln,
    If I understand correctly, you want to make the size of report to fit the size of chart, so the chart can be fully displayed after export the report to an image. Based on my research, I find that PageSize property is a static value. The page size does not
    grow or shrink to accommodate the contents of the report body. If you want the report to appear on a single page, all the content within the report body must fit on the physical page.
    So in your scenario, I couldn’t find an appropriate method to make the report size automatically change to fit the chart size. This is by design. As a workaround, I suggest that you can change the size of report to an appropriate value based on the chart
    size you may select.
    Thank you for your understanding.
    Regards,
    Katherine Xiong
    Katherine Xiong
    TechNet Community Support

  • Dynamic visibility case with ALL charts??

    Hi SDN members,
    How can i with the dynamic visibility add a case where ALL CHARTS can be displayed, to the normal cases where only each and one chart is displayed: Now i use the component LABEL BASED MENU selector.
    Or is it perrhaps possible to use another selector component which allows me to select or display more than one or all charts in the same window at the same time.
    2nd question: Can i set the charts so that in case of one chart, this can be maximize and center in the windows and when displaying all the charts, each one can have the original position in the dashboard windows.
    Kind regards
    Arnaud

    Hi,
    Drag three charts at the center of canvas(workspace) and increase size and enable dynamic visibility. So that you can view each one at the center when selected. Drag a canvas container component and copy and paste three charts, adjust size  and place them at the corner as you wish to view. disable dynamic visibility of three small charts inside the canvas container and enable dynamic visibility for canvas container. So canvas container with three charts acts as a separate component. So you have four layers now. three charts with dynamic visibility enabled and one canvas container with three small charts in it and  dynamic visibility enabled(here you are selecting key and status for canvas container component. 3 small charts are embedded in it. they are the copies of three big charts. differences are small in size and dynamic visibility disabled. But data mapping is same. So when canvas container is displayed three charts can be viewed at their respective position).
    follow the same step to dynamically show the canvas container with 3 charts in their original position by selecting all chart option in label menu. ie give status and key for canvas container and map it with all charts option in label menu.
    Hope it is clear for you. Let me know if you have any doubts.
    Regards,
    Nikhil Joy

  • How do I convert a 1-D array of cluster of 5 elements into a 2-D array of numbers? (history data from a chart)

    Hello,
    in my vi I have a chart with 5 Plots displaying measurement data.
    The user should be able to save all the history data from the chart at anytime. (e.g. the user watches the chart and some event happens, then he presses a "save"-button)
    I know, that I can read out the history data with a property node. That is not the problem. The problem is, how do I handle the data? The type of the history data is a 1-D array of cluster of 5 elements.
    I have to convert that data somehow into a 2 D-array of numbers or strings, so that I can easily save it in a text-file.
    How do I convert a 1-D array of cluster of 5 elements into a 2-D array of numbers?
    I use LabVIEW 7.1
    Johannes
    Greetings Johannes
    Using LabVIEW 7.1 and 2009 recently
    Solved!
    Go to Solution.

    Gerd,
    thank you for the quick response and the easy solution.
    Look what I did in the meantime. I solved the problem too, but muuuch more complicate :-)
    And I have converted the numbers to strings, so that I can easily write them into a spreasheet file.
    Johannes
    Message Edited by johanneshoer on 04-28-2009 10:39 AM
    Greetings Johannes
    Using LabVIEW 7.1 and 2009 recently
    Attachments:
    SaveChartHistory.JPG ‏57 KB
    SaveChartHistory.JPG ‏57 KB

  • Change the size of a chart in runtime in LV7.1?

    Is it impossible to change the size of a chart in runtime in LV7.1? I can only see that the properties width and height is readable. It would be very neat to have these properties writable so one can change the size of for instance charts in run-time.Is it impossible to change the size of a chart in runtime in LV7.1? I can only see that the properties width and height is readable. It would be very neat to have these properties writable so one can change the size of for instance charts in run-time.
    Regards/Lars

    Thomas,
    You wrote,
    "Yes, you are right, it has just effect to the plot area." (bold added).
    That is not the case I found. Those properties do change the plot area BUT the rest of the chart adapts around that area so the WHOLE chart re-sizes.
    See attached.
    Confused,
    ben
    Message Edited by Ben on 11-09-2005 07:37 AM
    Ben Rayner
    I am currently active on.. MainStream Preppers
    Rayner's Ridge is under construction
    Attachments:
    Re-size chart.JPG ‏30 KB

  • How in Discoverer 4i viewer (Web) to set the size of the Chart(Graph)?

    Hello all,
    How in Discoverer 4i viewer (Web) to set the size of the Chart(Graph) by default?
    Thanks very much for any help.
    Dmitriy Zhabrovets

    Hi,
    I had a look and don't ask me why but it seems that you can't add extra rectangles in a sub table. But weirdly, it seems possible to add tables.
    I mean you can't add a rectangle using
    app.activeDocument.textframes.tables.tables.cell.insertionpoint.rectangles.add
    //remove any reference, that's conceptual at this time.
    The idea I had at the first place but put aside cause to its heaviness is to cheat.
    Instead of adding the rectangle, we are going to copy & paste it.
    So let's keep all the things you need (rectheight & rectwidth).
    But this time, let's use
    var oRect = app.activeDocument.rectangles.add({geometricBounds:[0,0,rectheight,rectwidth]});
    //You may need to use app.activeDocument.pages[x]... if you have a multi pages doc.
    app.select(oRect);
    app.cut()
    app.select(oInsertionPoints.item(-1));
    app.paste();
    heavy but it works.
    Loic

  • Max size of Selector's buffer

    Hello,
    Is there a maximum size for selector's buffer?
    Thnx

    A Selector doesn't have a buffer. What do you mean?

  • Is it possible to size a flash chart based on the amount of data returned?

    My chart is based on a date range. If a user enters say a range of one year, I need the line chart to be rather large so show all the data points. Though if they select just a week, then the chart can be much smaller. I only see the hard coded values to set the size of the chart (Chart Width and Chart Height). Can those be changed on the fly based on the amount of data returned?
    Using Application Express 3.1.2.00.02 and AnyChart 3.3
    Thanks.
    Chris

    Hello Hillary,
    I tried your suggestion, but still not working for me. I added hidden text field that wold hold the vaule of the width for the chart. Then I reference that field in the chart source. Is there some other property I need to change as well? Any more suggestions? Thanks.
    Here is my source.
    <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
         codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0"
         width="&P86_NUM_ROWS."
         height="#HEIGHT#"
         id="#CHART_NAME#"
         align="">
    <param name="movie" value="#IMAGE_PREFIX#flashchart/#CHART_TYPE#.swf?XMLFile=#HOST#apex_util.flash?p=&APP_ID.:86:&APP_SESSION.:FLOW_FLASH_CHART_R#REGION_ID#">
    <param name="quality" value="high">
    <param name="allowScriptAccess" value="sameDomain">
    <param name="allowNetworking" value="all">
    <param name="scale" value="noscale">
    <param name="wmode" value="transparent">
    <param name="FlashVars" value="waiting=#FLASH_WAITING#&loading=#FLASH_LOADING#">
    <embed src="#IMAGE_PREFIX#flashchart/#CHART_TYPE#.swf?XMLFile=#HOST#apex_util.flash?p=&APP_ID.:86:&APP_SESSION.:FLOW_FLASH_CHART_R#REGION_ID#"
    quality="high"
    width="&P86_NUM_ROWS."
    height="#HEIGHT#"
    name="#CHART_NAME#"
    scale="noscale"
    align=""
    allowScriptAccess="sameDomain"
    allowNetworking="all"
    type="application/x-shockwave-flash"
    pluginspage="http://www.macromedia.com/go/getflashplayer"
    wmode="transparent"
    FlashVars="waiting=#FLASH_WAITING#&loading=#FLASH_LOADING#">
    </embed>
    </object>
    #CHART_REFRESH#

  • Command History - size, security and more informations

    Hi!
    I need to know how to increase the size of History, creating greater security in it, and view commands with details such as date and time;
    Also need to know if they learn to write a 'history' command made via WinSCP;
    Another question about history: How to view the history of all users?
    Thank you!

    user13045950 wrote:
    Hi!
    I need to know how to increase the size of History, creating greater security in it, and view commands with details such as date and time;It is different for every shell type but for most setting the environment variable HISTSIZE to the history size will work. No clue about date/time; you are probably out of luck there.
    Also need to know if they learn to write a 'history' command made via WinSCP;I doubt that it will open a shell so you are probably out of luck.
    Another question about history: How to view the history of all users?The history file is different for every shell type. For most shells, you can set an environment variable HISTFILE and that will be the history file for that shell. I suppose you could set it for everyone to something like:
    HISTFILE="/var/tmp/historys/sh_history_$USER_`date +%Y%m%d`_$$"
    and /var/tmp/historys would hold a composite of everyone's history.

  • Linear fit with chart buffer

    I want to be able to graph both the data and the linear fit of the data stored in the chart buffer in real time.  I can't seem to figure out how to split the x and y arrays from the output on the chart buffer.  Any help would be appreciated.  I have attached a sample program.
    Solved!
    Go to Solution.
    Attachments:
    Graph Test.vi ‏10 KB

    Heres one thing you could do:
    Have your original data as two 1D arrays.
    One is X values, and one is Y values.
    Cluster those values together and that will be one data set.
    Then, use the 'linear fit' function, and input your x and y arrays.
    Use this new generated array of y-values and bundle them with the original array of x values.
    If you build an array of the two data sets, then send them to an XY graph you should be all set.
    Good luck :-)
    Sorry I cant open your VI, Im in 8.2, not 8.6 :-(
    Message Edited by Cory K on 02-16-2009 04:40 PM
    Cory K
    Attachments:
    Linear Fit.PNG ‏5 KB

  • ORA-27067: size of I/O buffer is invalid

    Hi Experts,
    Today we have faced the below error in our ASM instance alert log file.. the day before we have moved one schema datafiles from one location to another another location ..and it is successfuly and the schema is accessble and verified ... we are not understaiding why exactly we got that error.
    error :"ORA-27067: size of I/O buffer is invalid"
    below is the alert log error.
    Thu Jan 02 05:43:26 2014
    NOTE: client +ASM:+ASM registered, osid 827, mbr 0x0
    Thu Jan 02 05:46:39 2014
    Errors in file /home/oracle/app/oracle/diag/asm/+asm/+ASM/trace/+ASM_ora_1188.trc:
    ORA-27067: size of I/O buffer is invalid
    Additional information: 2
    Thu Jan 02 05:48:59 2014
    NOTE: ASMB process exiting due to lack of ASM file activity for 302 seconds
    Thu Jan 02 06:45:58 2014
    Starting background process ASMB
    Thu Jan 02 06:45:58 2014
    ASMB started with pid=22, OS id=9021
    Thu Jan 02 06:45:58 2014
    NOTE: client +ASM:+ASM registered, osid 9023, mbr 0x0
    Thu Jan 02 06:47:06 2014
    Thanks...

    Are you trying to install a seeded database from a preconfigured template? If yes, there's a bug with such a configuration, if the seeded files are read-only.
    Here the statement from Oracle:
    Bug 3996124 Abstract: RMAN CANNOT RESTORE BACKUPSET ON READONLY MEDIA
    Bug 2835956 Abstract: RMAN CANNOT RESTORE FROM READ-ONLY BACKUPS
    When DBCA creates a database from a template, it uses RMAN on the seeded files Seed_Database.ctl
    and Seed_Database.dfb
    The bug is that RMAN cannot restore a file that is read only.
    Since the files Seed_Database.ctl Seed_Database.dfb are not read/write, DBCA gives the error.
    Solution
    To implement the solution, please execute the following steps:
    1. Change the file permissions to 644 on the files.
    2. Run the installation again.

  • Dynamic page size

    Hi,
    I need to run the same RTF template for US and Europe.
    The only difference is page size.
    US is using "Letter" page size, Europe is using "A4" page size.
    I can distinguish the page size by organization.
    Is there a way that I can have one template with dynamic page size, or I have to have two different templates?
    Thanks,
    karmit

    When the data is generated, can you determine who it is for (letter-sized or otherwise)? Once you pick off a value that identifies the page size, you can let a variable for lines per page (see the fixed lines per page example on Tim's blog) and base the page break on the paper size.

  • Why replay history data from NI-DAQ buffer?

    LabVIEW 8.6.1f1, NI-DAQ 8.8, Win Vista, two cDAQ chassis.  (I can't move to LV09 or LV10 for this, not yet anyway).
    I have a client with two cDAQ banks, each with 16 TC channels (on 4 modules) and 16 voltage channels (on 1 module), 64 channels all told.
    The config operation is like this:
    This is called twice, with TC CHANNELS and V CHANNELS describing the channel arrangement.  Both channel descriptors are the same except for device number. The Sample rate works out to 1000 / 100 = 10 Hz. I am using CONTINUOUS SAMPLES, with no need for a buffer, but I understand that one is created anyway.
    One loop of my main program is waiting on the READ function:
    You can see the explanation of why the loops are there.
    After reading the data (at 10 Hz), each frame is sent via UDP to somewhere, and every 5th frame is displayed, via another loop.
    This program runs 24/7 on the same computer as another program.
    All this works fine in normal circumstances.
    However, occasionally, a weirdness creeps in:
    In the mornings, after waking the screensaver (or the CPU itself, I'm not sure), we sometimes (not every time) get a very rapid display - the displays are changing much faster than the expected 2 Hz.
    I've been wondering whether the data shown was historical, or simply faster updates of live data.
    Today, it so happened that a blower was turned on just before waking the computer. The device takes 15 seconds to ramp from zero up to operating pressure normally, and then it stays there.
    The readings on screen were frozen (unchanging).  When the computer was awakened, what my client saw was the reading for the blower pressure ramp from zero to running pressure in 2-3 seconds, stay there for 2-3 seconds, drop quickly to zero for 4-5 seconds, and start the ramp again.
    Over and over and over it replayed this data, way faster than 2 Hz.  At least 40 times it replayed this same data, while the real pressure was just variations around the operating pressure.  As time went on, instead of dropping to zero, it would drop to some point on the ramp up and repeat from there.  
    I don't know if it would eventually straighten itself out - the client gives up and restarts the program.  All is well after that.
    I've gone over my code several times, and I can't see a mechanism for me to store this data and re-play it.
    Here's my best guess as to what's happening:
    Since I am not explicitly setting the buffer size, it defaults to 1000 samples.
    Since I'm running at 10 Hz, 1000 samples = 100 sec.
    At some point, because of the screensaver, or because of CPU sleepage, or because of integer rollover, or because of zombie infiltration during the night, NI-DAQ has become confused. 
    When the mouse was wiggled, the gates were opened. After that, whenever I ask for a sample, it gives me one, without regard to read/write position. It continually gives me the next sample from the buffer and wraps around, again and again, and again, as fast as I can read / process / display.
    It is also putting new data into the buffer, so that the historical data eventually gets wiped out.
    That fits the facts:
      It shows only recent (last 100 sec) data, not ancient data, and not live data too fast, as I had considered.
      The data changes with time - oldest data gets wiped out.
      It plays the SAME data over and over and over.
    But that means a bug in NI-DAQ, I think.  
    QUESTIONS:
    Any flaws in my thinking?
    Any previous sightings of this symptom?
    Any ideas for workarounds?
    Steve Bird
    Culverson Software - Elegant software that is a pleasure to use.
    Culverson.com
    Blog for (mostly LabVIEW) programmers: Tips And Tricks

    The rapidly changing data, is that on the viewing machine or on a display on the device acquiring the data?
    The "device acquiring the data" is a pair of cDAQ chassis.  There is no display there. It's the LabVIEW program that is reading and displaying the data.
    Does your computer go into any sort of power saving mode where the USB controllers are disabled during hibernation/standby?
    on MY machine, I have tried this with CPU sleepage and such.  Didn't know you could sleep the USB, but on MY machine, that's disabled.
    But I haven't made it happen on MY machine.
    My CLIENT's machine is actually running XP, and is set to turn off monitor NEVER, turn off hard disk NEVER, and system standby NEVER.
    What version of DAQmx do you have installed?
    On MY machine, it's 8.8 - I haven't found out from my client yet what his is, but it won't be far away from what came with LV 8.6.
    Can you post your code?
    Well, OK:
    Here's two of the loops running (the third loop deals with TCP/UDP and is not relevant, I think).
    The TCM DAQ manager 's READ function is pictured in the original post.
    Here we wait on a sample, scale it (volts into EU), and feed it to the PROCESS TCM DATA vi (which does averaging).
    Here's the NEW DATA function for PROCESS TCM DATA:
    The ST (short-term) HISTORY is set up as an N channel by 5-sample array, and ST HISTORY SAMPLES is set to 5.
    The DAQ loop, after processing this data, triggers a DISPLAY event, which triggers a DISPLAY action, which lands here:
    The GET DISPLAY function retrieves the latest averages:
    That data (64 channels worth) is split into two banks and displayed:
    The display process simply distributes the array data into clusters (channels can be user-configured to be in various locations on the screen):
    The UPDATE TIP action causes a TIP STRIP string to be updated:
    The TIP STRIP shows the average and min and max values (which might be hidden from the display itself), based on which display cell the mouse is in.
    A MOUSE ENTER event on any display cell sets the CLUSTER CONTAINING MOUSE variable to the CTL REF of the event, a MOUSE LEAVE event for the overall display bank (containing 32 cells) sets the CLUSTER CONTAINING MOUSE variable to Not-A-RefNum.
    the DISPLAY looks like this (only a few cells shown).  The display for this program occupies an entire 1680x1050 LCD display, another program runs on the main monitor.
    As you can see, the only storage in this process is the AVERAGER, and that is limited to 5 samples (0.5 sec). It cannot store any more than that.
    I've thought about the possibility of the mouse oscillating between two cells (as mice are sometimes known to do) when it is parked, and causing a flood of MOUSE ENTER events.
    But 1) it happens more often than the odds would dictate  (a random location is not likely to be on a cell border), and
    2)  When that cleared up, the queue would be processed, but it would display CURRENT data more rapidly than 2 Hz. NOT historical data.
    Given that it seems to be about 100 sec of history (judging by my client's recap of what he saw, and how it operates), that points to the 1000-sample buffer within NI-DAQ.  That's the only place that I see to store that data.
    I'll admit that I'm not watching the ERROR output from the NIDAQ READ function. Perhaps I should.
    The only scenario I can come up with is that NI-DAQ's READ pointer is confused.
    When I ask for a sample it tells me that there is ONE and only ONE available.  So I deal with it.
    When I ask again, it tells me the same thing.
    When I ask again, it tells me the same thing.
    It goes round and round the READ buffer.  At the same time, new data is coming in, replacing the oldest stuff.
    But it (apparently) never gets back to the "normal" condition, where it WAITS on a sample at the RAD function.
    Nobody has waited long enough to see if it would do that eventually, after a few minutes (50+ replays), they give up and restart.
    Restarting the program resets the cDAQ drivers, among other things, so the problem goes away.
    If there's another scenario to cause these symptoms, I'm all ears. But I cannot think of it.
    If it was a USB SLEEP problem, I wouldn't think the data would replay from BEFORE the wake-up. But that's what happened.
    Steve Bird
    Culverson Software - Elegant software that is a pleasure to use.
    Culverson.com
    Blog for (mostly LabVIEW) programmers: Tips And Tricks

  • How to change font size in pie charts (SVG)

    Hi,
    I'm using pie charts (SVG) and need to change the font size for the labes into the legend box (value 1 %, value2 %, ...).
    I tried to change values on the chart properties page and the css and couldn't.
    Any help is welcome.
    Thanks

    someone
    thanks

  • 12.3 and 12.4 beta. Cannot change the size of the ostream buffer with stlport.

    The following program does not work as expected when compiled with -library=stlport4
    #include <iostream>
    using namespace std;
    int main(int argc, char **argv) {
        cout.rdbuf()->pubsetbuf(new char[20*1024+1], 20*1024+1);
        cout.sync_with_stdio(false);
        for(int i=0; i!=50000; ++i)
            cout << i;
    CC t.cc -library=stlport4 && truss -t write ./a.out > /dev/null
    will show that it uses buffer-size of 4096
    The same with 12.4.
    This example will work if we exchange the order of the two cout...  lines.
    Without library=stlport4 it works fine.

    Yes, that looks like a bug in STLport. I have filed bug 18810043 for you. If you have an Oracle Solaris Studio service contract with Oracle, you can request a fix.
    The workaround is simple: move the sync_with_stdio call to the top of main.
    In fact, the effect of calling sync_with-stdio after any I/O operation can vary among implementations, so doing the call first is better programming practice anyway.

Maybe you are looking for