Jump to content

Neil Pate

  • Posts

  • Joined

  • Last visited

  • Days Won


Everything posted by Neil Pate

  1. My understanding is that the class mutation history is present in case you try and deserialise from string. It is supposed to "auto-magically" work even if a previous version of the data is present. This is a terrible feature that I wish I could permanently turn off. I have had lots of weird bugs/crashes especially when I rename class private data to the same name as some other field that was previously in it. This feature also considerably bloats the .lvclass file size on disk. For those not aware, you can remove the mutation history like this
  2. The point is more about the difference in behaviour with connecting the cluster and not having it connected (even though the data in would appear to be the same(. I would expect most LabVIEW developers to assume the code would function identically in both circumstances, as detailed in the OP. I cannot think of any other nodes that work like that. That is confusing and inconsistent behaviour and should not be present.
  3. Totally tangentially... I had an interesting bug once, and I eventually tracked it down to stacked property nodes. Something which is probably expected when you think about it, but not obvious at first is that if one of the actions of a property node does give an error then the following property nodes do not execute. I guess this is related to the comment posted by @sam above regarding ignoring errors. I never expected a property node could fail if the reference was valid, but there are certain conditions where it can happen. I forget what caused it though.
  4. Rolf, what I meant was that the bevaiour as manifested is strange and unexpected, and not even something we could recreate in our own code.
  5. I dunno, something about this feels fishy to me. I agree with @bjustice this feels like a bug (or perhaps just a badly designed API). This is not the same as polymorphism as the connector pane is not changing. We could not write any normal LabVIEW code that had this same behaviour.
  6. That DMC deck is quite nicely done, thank you for sharing it.
  7. Well, given that this is some kind of (bad) timing logic, and 59 is suspiciously like the number of seconds in a minute, I would suspect this is some kind of check to see if the elapsed time is > 1 minute. I strongly suspect this code is overcomplicated and there are signficantly simpler ways of doing things. These four sections of parallel code below look like they constantly evaluate if the elapsed time is greater than 45, 30, 15 and 59 seconds. The shift register on the boolean essentially latches (i.e. remembers) the previous value, and I think the XOR is used to reset the latch. I am not sure what is in the other cases of the Case Structures. Strangely the top one is active on a False, whereas the others are on True.
  8. Ah right. Thanks for the clarification.
  9. I don't think this is LabVIEW. We wish LabVIEW allowed you to put things like checkboxes and dropdowns in a table.
  10. Just what I wanted, thanks for the inspiration.2022-10-13 20-30-18.mkv
  11. Super surprised at this result. Run the VI and change the colour using the colour picker widget, while the widget is open the top loop which uses a property node works fine (Color Box 2 updates in real-time)! The bottom loop does not show this same behaviour, the value is only updated to Color Box 4 when you exit the widget. Colourbox.vi
  12. Wait, does the underlying colour box update while the widget is open?
  13. Yeah but I want to grab the colour while the widget is open.
  14. Thanks. It was just a thought. How would I use Refnum to Pointer on the colour picker widget though? Is it even possible to get a reference to that little popup window?
  15. @dadreamerthis sounds like the perfect use case for some low level OS API trickery, like reading the value directly from memory. If only there was someone who was good at stuff like this 😉
  16. I think the answer is no, but I ask anyway. Does anyone know if it is possible to access an event or some other thing that returns the colour that is currently being "selected" by the mouse cursor when this colour picker widget is open? I mean getting a new value when the user moves their mouse around while the widget is open and has focus? I suspect this is all deep in C++ land but would love to be wrong here.
  17. Frame rate is now at 100 FPS, time to stop optimising 🙂 2022-10-08 21-49-45.mkv
  18. Plot twist... it turns out that the MoveBlock technique is quicker when replacing long-ish rows, but for smaller chunks of pixles the naive replace an element at a time is actually faster. I just used the worst case scenario in the benchmark, but have realised this is not actually sensible when rendering things made of smaller triangles (and hence smaller line segments). This is what I am rendering, it has close to 20k vertices.
  19. Nope. The use case in this situation is just to learn 🙂
  20. Unfortunately I cannot actually do this optimisation as normally the length of the line, and pixel colour will differ every single call. Well, actually the colour will stay the same for some number of calls, but the line length will normally change. In my benchmark VI I just used a worst case scenario of a line filling the whole row. Your MoveBlock2 method still seems faster, thanks! I will see how it affects the performance of my actual application.
  21. Thanks everyone, I really appreciate the help. I will take a look over the weekend at the suggestions.
  22. Windows for now, but the point of the exercise is to implement as much as possible from source.
  23. Ah, that explains the crash when opening in 2015. Thanks!
  24. Hi everyone, I am trying to wring as much performance as possible out of a single VI I have created. It is part of a rendering application and will be called many-many times per second. In essence it just draws a horizontal line in a 2D array of pixels. I have four techniques implemented (3 work, 1 crashes LabVIEW). Is anyone up for the challenge of trying to get it any faster? I have attached version in 2015 and 2022. I developed in 2022 and back-saved, but for some reason just opening the code in my 2015 LV instance crashes (but it opens fine in 2021). Raster 2022Q3.zip Raster 2015.zip
  25. Not quite sure what you mean by this.
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.