Smooth Cluster Array Scrolling

This is an odd question.  Is there anyway to have a "smooth scrolling" feature of an array where the horizontol or vertical scroll bars are enabled?  LabVIEW tends to "snap" scrolling to elements end-to-end.  This is awkward for the end user when moderatly sized clusters are used in an array.  The effect is kind of disorienting because it is hard to keep track of how-far you have scrolled.
It can also be a pain for me because LabVIEW forces me to make the size of the array element some multiple of the size of the element type.  It would be nice if the elements scrolled by smoothly when the user adjusts the positioning of the scroll bar and if I wasn't limited in the size of the array window.
Any solutions? 

Scrolling arrays is "quantized" to whole elements. You cannot scroll in fractional steps. Is that what you want?
LabVIEW Champion . Do more with less code and in less time .

Similar Messages

  • Address element of only one line in cluster array

    Hi,
    I created an array of clusters. In each cluster the switching a binary element is supposed to activate/deativate the following elements. In my VI however either the elements of none or the elements of all clusters are activated/deactivated. Does anybody see, where I made the mistake?
    Thank you.
    Attachments:
    ClusterArray.vi ‏21 KB

    Hallo,
    in einem cluster-array können nur die Werte individuell verstellt werden. Eigenschaften gelten immer für alle Array-Elemente. Diese Frage wurde schon im ni-forum diskutiert, z.B. um LED-Farben einzustellen:
    http://forums.ni.com/ni/board/message?board.id=170&message.id=27375&query.id=12471#M27375
    In deinem Fall hilft das aber nicht weiter, da ich nicht wüsste wie über ein Wert die Sichtbarkeit des Elements eingestellt werden kann.
    Noch eine Bemerkung am Rand: die For-Schleife benötigt in deinem Beispiel keinen Zähleingang, bei indizierten Array-Eingängen wird die FOR-Schleife genau einmal für jedes Array-Element durchlaufen.
    Vielleicht kann ja doch noch jemand weiterhelfen 
    Gruß,
               Magnus

  • Arrays to 3D-cluster arrays input Feed into draw Mesh

    Hi,
    I'm puzzzle with my own algorithm.
    I want to grab input then feed into 3D-cluster array . then feed into Mesh parameters array.
    The problem i had, I want to take 2 rows, feed into 3D-cluster, then send into mesh parameter,
    then redo it with another 2 rows moving down the array.
    So i will have 1 line that "move" in the 3D picture control
    Attached is my vi.
    Attachments:
    array-problem.JPG ‏72 KB

    Sorry here the VI ..   
    Attachments:
    moving3D-data work3.vi ‏18 KB
    zulhairi_1.csv ‏71 KB

  • Hmi wizard for indicators inside cluster array

    I am setting up a config screen for use with the DSC and tag engine. I have an indicator and analog value inside a cluster array. Can you use the hmi wizard to make unique conditions for the indicator in each array element?? or would I have to use a sub vi to write the values to the elements inside the clusters??
    Attachments:
    TOOLPASS_CHANNEL_CONFIG_DATA.vi ‏17 KB

    Hi,
    The simple control in the cluster or in an array will not have a way to invoke the HMI Wizard to create simple HMI code because the control turns into a more complicated control type. Using a sub vi to unbundle the cluster should be a workaround for this application.
    Regards,
    Remzi A.

  • Scrollable cluster arrays as control, writing programmatically at the same time?

    I would like to have a cluster array (just an example, you may suggest better solution), where each row (cluster-element) contains signal selection from combobox, and its value and unit.
    I would like to have a signal list, where in each row, I can select which signal I want to show e.g. "motor speed", "motor torque", "motor power". And when signals are selected, the value of the
    signals are automatically updated elsewhere. So basicly, I want to select which signals I monitor, and then watch them change over time. I use single cluster array because I want it to be scrollable. The problem is:
    * let's say I have one row in the array. Then I add a row by editing the control in the GUI (now the array control has size 2).
    * I have property node (write: array control -> value) to update the values and units in my software.
    * I use array control output as the input in the subVI where I read my selections and write updated signal values.
    * It can happen that I use that array control output when it still has size 1, and while I have added the second element, the software updates the control, and overwrites my new element addition.
    So, I run into writing conflict. Only single user, just this problem. How should I avoid this?
    (e.g. how can I know that user is not interacting with the control, so that I can update its value and unit fields)

    First suggestion is to post the code you have.
    But that being said what you want to do can be done.  I think the problem you are having is a race condition between the user and the software.  Where the user chagnes the value and the software changes it back.  I suggest reading the value of the control and replacing its value but keep the signal names the user entered, then write that back to the control.
    Another suggestion is to have two separate arrays, one that is signal selection, and one is values.  Then you only need to update the values table with the new data and the signal names never get overwritten.  You'll likely want to couple the two arrays so when one index value changes the other changes with it.  This can be done with an independent scrollbar control.
    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.

  • Cluster array to c structure in DLL

    Hello,
    I have a problem which I am stuck at so I would really appreciate any help.
    I have this function that i need to access in Labview.
    ViStatus _VI_FUNC Ki_GetSystemInfo (ViSession instrumentHandle,
    void *systemInfo);
    Now the structure for systeminfo is as follows:
    typedef struct _SYSTEM_INFO
    char pchModelNum[MODEL_NUM_LEN];
    char pchSerialNum[SERIAL_NUM_LEN];
    char pchSysSoftwareVer[SOFTVER_LEN];
    char pchPlatformVer[PLATVER_LEN];
    char pchOpSystemVer[SYSTVER_LEN];
    int bCardType[MAX_SLOTS]; // Enum slot_types
    } systeminfo;
    When i use the call Library Node function to access the above function what
    should be mine
    input and out paramteres. I tries making cluster of 5 st
    rings and an array
    of integers
    It doesnt seem to work. Any help shall be appreciated.
    Premal

    Hi Premal,
    Try to use arrays of [U8] instead of strings. Also, pay attention to INT - is OS dependent (assuming that you are using win9x/NT/2000, use [I32]). If you try with strings, be sure that the input string contains enough characters to store the result.
    Hope this helps
    p.s.: take a look on those articles mentioned in "cluster array to c structure in DLL" [http://exchange.ni.com/servlet/ProcessRequest?RHIVEID=101&RPAGEID=137&HOID=506500000005000000C05C0000&HTHREAD=000023744&UCATEGORY_0=_49_%24_6_&UCATEGORY_S=0]

  • Update combobox from cluster array

    I am looking to update a combo box from a cluster array. The array is indexed then unbundled by name and the element I want for the combo box is selected. How would i update the combo box from here or is this method even the right method of doing it?
    Paul Power
    I have not lost my mind, it's backed up on a disk somewhere

    Cluster to Array only works when the datatype of the cluser elements are all the same.  Here is what I was trying to say.  And by the way I sure hope your massive cluster is type def'ed.
    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.
    Attachments:
    Combobox.png ‏32 KB

  • "Smoothness" of mouse scrolling

    While I was trouble-shooting something else, I create a new admin user account, so that I can compare how things are with a fresh account created under Snow Leopard, versus my existing pre- Snow Leopard admin user account (the account I normally use).
    I noticed that in the new account, my mouse wheel scrolling is very smooth. By "smooth," I mean the scrolling action is not as incremental, not as jagged. In other words, the scrolling is better animated, so it looks smoother. This difference is most noticeable in Safari, when scrolling a long page, but you can also see it in Finder and some other apps (but not all apps).
    My usual mouse is a basic Microsoft optical mouse with two buttons and a scroll wheel that also clicks down as the third (or middle) button. I just use the generic Apple mouse driver, and do not have any Microsoft drivers installed (so you can consider it a generic USB mouse). I also have the standard USB Apple Mighty Mouse.
    So this is the situation:
    (1) *Back in Leopard*, the mouse wheel/ball scrolling was jagged for both mice. Again, "jagged" just means the way it has always been before - nothing is wrong.
    (2) *In Snow Leopard, with my existing account* that came from Leopard, the Microsoft mouse scrolling is jagged in the same way as (1). However, the Mighty Mouse scrolling is smooth.
    (3) *In Snow Leopard, with the new account* created under Snow Leopard, the mouse wheel/ball scrolling is smoother for BOTH mice.
    So without going into detail about what I have already tried (unsuccessfully so far), what do you think is the difference? What do I need to tweak in my old user account to make it like (3)?
    I suppose I could migrate to a new account that is created under Snow Leopard and abandon my old account, but that seems a bit drastic, just to get this smooth mouse wheel scrolling effect to work with my favored Microsoft mouse.

    Hey thanks. I'm glad I asked, instead of looking for more complicated answers. I never knew that option was there, and I looked at a Mac with Leopard, and it was there too! So I could have been using it all this time, I guess...
    So in my existing account, smooth scrolling was NOT enabled, but it seems the Mighty Mouse always does smooth scrolling, whether smooth scrolling is enabled or not. When I enabled it, my Microsoft mouse also got with the program. The scrolling effect is especially nice with the larger scroll wheel versus the little scroll ball.
    In my new account created under Snow Leopard, that option was enabled by default, which explains why it worked fine with both mice.
    Appreciate the assist...

  • Array scroll bar event

    Is there any way that I could get the event from array scroll bar in LabVIEW 8.5? I have an one-dimensional array and I made the vertical scroll bar visible. What I want to do is that when I drag the scroll bar to change array index value, I need to change the content of another array that will display the visible line number of the first array. Array index display only is not suitable for my application.

    Jason2006 wrote:
    I need to change the content of another array that will display the visible line number of the first array.
    I don't quite understand what you mean by "visible line number of the first array". Arrays don't have line numbers. Do you just want to scroll it to the same element as the first array?
    In this case you could do something like the following (hey, it even works for multidimensional arrays! ):
    LabVIEW Champion . Do more with less code and in less time .
    Attachments:
    MultiScroll.vi ‏19 KB

  • Nested IPE (In Place Element) usage when accessing Cluster/Array data via DVR

    I am sharing data across several VIs and loops via a DVR, and accessing the data via a DVR IPE. The data is a cluster of arrays. The diagram below (VI attached) illustrates the structures invloved, but not the structure of the application.
    (The diagram above does not include initialization of the arrays, as it is intended only to illustrate the Cluster1 data type. Array lengths could be 100.)
    The DVR (DVR1) is passed to multiple VIs of the application at startup.
    Each VI executes loops that either read or write particular elements of each array (fArray1 or fArray2).
    I believe the DVR IPE (B1-DVR) provides blocking so that only one task can modify the data (Cluster1) at any time.
    Case 1 illustrates how I currently WRITE to array elements. The outer IPE (block B1) is rolled into a VI (not shown) that takes DVR1, Index, and Value as inputs.
    Cases 2 - 4 illustrate 3 additional methods that remove one or both of the inner IPEs (B2-Cluster and B3-Array).
    Case 2: IPE B3 (Array Index/Replace Elements) is replaced with a non-IPE 'Replace Array Subset'.'
    Case 3: IPE B2 (Unbundle / Bundle Elemnts)' is replaced with a non-IPE cluster 'Unbundle'/'Bundle'.
    Case 4: removes both B2 and B3.
    I implemented case 1 a long time ago.  When I had to do the same thing again recently, I did case 4.  When I stumbled across my earlier implementation, I was a bit suprised
    Which of the 4 cases should take the least time (or resources) to execute? I think case 4 has as few array allocations as any of the other 3.
    The attached image did not capture the Buffer Allocation marks, so I marked the ones that differed with a red "B".
    I am only interested in differences in how the arrays are handled, so I see no signioficant differences.
    Is this one of those cases where LV doesn't need my help?
    Incidently, I recently wrote a small app with shared data and decided to try FGVs to share array data.  For small arrays, 10^7 iterations, and an FGV based array-element read followed by a element write, the FGV was faster.  1.2us per read/write for FGV vs 3us per r/w for an DVR/IPE based read/write (like above).
    Peter
    LV 2011 SP1, Windows 7 64-Bit
    Attachments:
    IPE.vi ‏9 KB

    Option 1 is a definite no and as far as I know it has been NI's explicit intention to steer clear from it. I believe there's an idea in the IE which asks for this.
    I agree that option 2 makes sense, but I don't think it should be something the user specifies. Either LV can detect it automatically or it can't, but I doubt NI would let you have an option which creates the possibility for this kind of bug.
    I'm not sure, but the mark as modifier option on the IPES might be the option you're looking for. I know that it exists and I know very roughly what it does, but the documentation for it is very limited and I never actually played around with it, as usually I don't need these kinds of optimizations.
    You may well be right that a new option on the IPES is desirable and you should probably add it to the idea exchange.
    As for NIWeek, I'm not going this year, so I have no idea what kinds of sessions are around, but it's a great place to find people who know what they're talking about and ask them about it directly. Certain people in LV R&D would probably be ideal for this and if you ask relevant people, you might even get their names. I'm sure buying them a beer would also help to loosen their tounges. If you ask me, this type of interaction is the main value of the conference, not the sessions themselves.
    Try to take over the world!

  • Dynamic cluster/array follow up question - front panel

    Thanks for the responses to my last question - they were great and fast!
    I'm still stumped on how to create the front panel. It doesn't really matter whether it is an array or cluster. It sounds like either way, once I have it I can autoindex through it. The basic application here is that I have a VI that will store one XY plot to our database. I'd like to wrap that in a VI that will take N XY plots and store them all in our database regardless of what N actually is. So in terms of creating the front panel, I tried to create an array control and drop a XY graph in it, but it doesn't seem to like that. It said that I hadn't added an element to the array. I also tried to drop a XY graph into a cluster control and that cleared the broken run arrow, but wouldn't I have to know how many XY graphs are being passed in? It seems like I'd have to put one graph in the cluster control for each graph coming which defeats my purpose? Remember I won't know how many XY graphs are coming into my VI in the array or cluster. Anybody know how I can set up the front panel?
    Again thanks for the quick replies!!!
    Best Regards,
    Steve

    Look at the attached VI.
    It has a single XY graph inside a cluster container, and that is inside an array container.
    With this setup, it wouldn't matter how many graphs you pass to the subVI since it's an array, it will take whatever is passed to it.
    Ed
    Ed Dickens - Certified LabVIEW Architect - DISTek Integration, Inc. - NI Certified Alliance Partner
    Using the Abort button to stop your VI is like using a tree to stop your car. It works, but there may be consequences.
    Attachments:
    XY Graph in Array.vi ‏13 KB

  • How to populate multi-cluster arrays using matlab code?

    Hi,
    I have an array of clusters containing two 'Double' elements in each cluster. I am looking for a method to populate this array using MATLAB code. I need around 1000 clusters in the array, so populating it using the front panel is not practical. There is also some calculation involved in deciding the value in each element. If there is an example or a method to do this, please point me in the right direction.
    Thanks

    altenbach wrote:
    Can you attach a typical file so we know that the structure is? It is easy to convert from any data structure to any other data structure. You could even read it as a 1D string array and parse each line into a cluster, for example. It all depends on how the fil is arranged. You could also read the file as a flat string and chop it up into the desired structure later.
    I have attached the .vi file. I need to convert the spreadsheet to an array of clusters, thats where I'm getting stuck. (The vi is an example from help libraries)
    That is the part where I need to change so that I can use a spreadsheet.
    Attachments:
    Buffered counter.vi ‏52 KB

  • How to build a cluster array dynamically from another cluster array?

    I'm working on a problem where I seem to be getting lost in a sea of
    possibilities, none of which strikes me as optimum. Here's what I need to do.
    I've got an input array of clusters (ARR1). Each cluster contains the
    following components: an integer (INT1), a ring variable (RING1), a boolean
    (BOOL1) and a cluster which itself is simply a bunch of ring variables
    (CLUST1) Now, I need to transform that into a set of clusters (CLUST3) each of
    which contains an array of characters (CHARARY2), a copy of the ring variable
    (RING2), a copy of the boolean variable (BOOL2) and a copy of the cluster
    (CLUST2).
    To build the CLUST3, I need to find all elements within ARR1 that have the
    same unique combination of RING1 and BOOL1, and if BOOL1 is True, then RING1
    in addition, build an array of all the INT1 values corresponding to each
    unique combination above converted to character, and then bundle this array
    plus the unique combination of the other variables into a new cluster. In
    general I could have several such clusters.
    So if I had the following array to start with:
    Index INT1 RING1 BOOL1 CLUST1
    0 3 1 F {Values1}
    1 2 1 T {Values2}
    2 4 0 F {Values1}
    3 6 0 F {Values3}
    4 1 2 T {Values2}
    5 4 2 T {Values2}
    6 3 0 T {Values3}
    7 4 2 T {Values3}
    I should end up with the following clusters:
    CHARARY2 RING2 BOOL1 CLUST1
    "3" 1 F Don't care
    "2" 1 T {Values2}
    "4","6" 0 F Don't care
    "1","4" 2 T {Values2}
    "3" 0 T {Values3}
    "4" 2 T {Values3}
    What methods would you suggest for accomplishing this easily and efficiently?
    Alex Rast
    [email protected]
    [email protected]

    Tedious but not conceptually difficult.
    ARR1 goes into a for loop, auto indexed on the FOR loop. The for loop has a
    shift register which will be used to build the output array. Nested within
    the for loop is another for loop, which the shift register array goes into,
    again auto indexed, along with the element that has been auto-indexed from
    ARR1. This for loop has a shift register, initialised with a boolean "true".
    The inner loop compares the current element of ARR1 with the output array
    and if an element in the output array is already present which matches the
    input by your criteria, then the boolean register is set false; otherwise it
    is left alone.
    After the nested FOR loop you have a case fed from the boolean shift
    register; if the boolean is true, the new element is unique and should be
    added to the array. If it is false then a previous element has been found
    making the present one redundant, and the array should be passed through
    without adding the element.
    In the true case, you simply unbundle the original element into its
    components and build the new element, using "build array".
    Notes for if the above is easy for you;
    1) if handling lots of data then pre-initialise the shift register of your
    outer loop with the same number of elements as your input array. Use
    "Replace Array Subset" instead of "Build Array" to insert the current
    element into the pre-allocated memory rather than having to create a new
    array and copy all the current data across, which is what "Build Array" is
    doing. Use "Array Subset" at the end to obtain a new array containing just
    the elements you've used, removing the unused ones at the end.
    2) Again for large datasets- the use of a while loop instead of the inner
    for loop is more efficient since you can halt the while loop as soon as a
    duplicate is found. With the described approach you have to go through the
    whole array even if the first element turns out to be a duplicate- much
    wasted computer time.
    Alex Rast wrote in message
    news:[email protected]...
    > I'm working on a problem where I seem to be getting lost in a sea of
    > possibilities, none of which strikes me as optimum. Here's what I need to
    do.
    >
    > I've got an input array of clusters (ARR1). Each cluster contains the
    > following components: an integer (INT1), a ring variable (RING1), a
    boolean
    > (BOOL1) and a cluster which itself is simply a bunch of ring variables
    > (CLUST1) Now, I need to transform that into a set of clusters (CLUST3)
    each of
    > which contains an array of characters (CHARARY2), a copy of the ring
    variable
    > (RING2), a copy of the boolean variable (BOOL2) and a copy of the cluster
    > (CLUST2).
    >
    > To build the CLUST3, I need to find all elements within ARR1 that have the
    > same unique combination of RING1 and BOOL1, and if BOOL1 is True, then
    RING1
    > in addition, build an array of all the INT1 values corresponding to each
    > unique combination above converted to character, and then bundle this
    array
    > plus the unique combination of the other variables into a new cluster. In
    > general I could have several such clusters.
    >
    > So if I had the following array to start with:
    >
    > Index INT1 RING1 BOOL1 CLUST1
    > ---------------------------------------------------
    > 0 3 1 F {Values1}
    > 1 2 1 T {Values2}
    > 2 4 0 F {Values1}
    > 3 6 0 F {Values3}
    > 4 1 2 T {Values2}
    > 5 4 2 T {Values2}
    > 6 3 0 T {Values3}
    > 7 4 2 T {Values3}
    >
    > I should end up with the following clusters:
    >
    > CHARARY2 RING2 BOOL1 CLUST1
    > -----------------------------------------------------
    > "3" 1 F Don't care
    > "2" 1 T {Values2}
    > "4","6" 0 F Don't care
    > "1","4" 2 T {Values2}
    > "3" 0 T {Values3}
    > "4" 2 T {Values3}
    >
    > What methods would you suggest for accomplishing this easily and
    efficiently?
    >
    > Alex Rast
    > [email protected]
    > [email protected]

  • Touchpad (Synaptics) scrolling with two finger gesture is smooth only after scrolling in IE9 before (Firefox 8/9/10 Windows 7 (64)).

    First I got the problem solved that 2-finger-gesture scrolling did not work at all: https://support.mozilla.org/en-US/questions/895816. Thanks for that!
    With "smooth scrolling" turned on in the options, touchpad gesture scrolling is smooth in FF9 but only in 5-line-steps. No stopping in between possible. If touchpad scrolling is performed in IE9 once, scrolling in FF9 is completely smooth afterwards. If the gesture is perfomed once in Google Chrome 16 scrolling in FF9 is turned back to 5-step-scrolling. Chrome 16 and IE9 can be used to turn off and on the completely smooth scrolling in FF9!

    Upgrade your browser to Firefox 9 and check
    * getfirefox.com

  • Set Colors of a part of a booelan cluster array

    I put an example of a cluster boolean array. Now i a want that a certain part (see the red arae) has another color.
    Not the colors as set by 1 or 0. And keep the rest of the array in the other (white) color.
    I put the attached example ColorArray.vi (labVIEW2010).
    Is that possible?
    Kind regards, Ben Arts
    Attachments:
    ColorArray.vi ‏11 KB

    Hi Ben,
    simple rule in LabVIEW: in an array all elements share the same properties, they only differ in value!
    So you cannot color some elements different to the other (using properties).
    But:
    You could make that array transparent (using the brush tool) and put it in front of an array of colorboxes.
    Or you create an array of cluster of [value, colorbox], where the value is displayed in front of the colorbox.
    Best regards,
    GerdW
    CLAD, using 2009SP1 + LV2011SP1 + LV2014SP1 on WinXP+Win7+cRIO
    Kudos are welcome

Maybe you are looking for