Jump to content

Francois Normandin

  • Posts

  • Joined

  • Last visited

  • Days Won


Francois Normandin last won the day on November 9 2021

Francois Normandin had the most liked content!


Profile Information

  • Gender
  • Location
    Mountain View, CA, USA
  • Interests
    LabVIEW (!!!), Astrophysics, Science-Fiction, Kilts.

LabVIEW Information

  • Version
    LabVIEW 2019
  • Since

Recent Profile Visitors

19,257 profile views

Francois Normandin's Achievements


Apprentice (3/14)

  • Reacting Well Rare
  • Dedicated Rare
  • Very Popular Rare
  • First Post Rare
  • Collaborator Rare

Recent Badges



  1. resizing_subpanels.vi @jhoskins, I'm not sure which part you were having problems with, but here is an example with loads of empty subpanels. It is already slow without any panels loaded in, so definitely not something you can use in any "reactive" UI without having to recompute the whole positions. What I'm saying is that it won't work if you expect to recompute on Pane Resize user events... From some trials and errors, I think the Windows Bounds to Rectangle is not the most useful method to get the "Owner Pane" rectangle, so I just fudged it to roughly account for scrollbars. It's not a perfect mathematical calculation because the distance with the sides is not really constant as a function of subpanel size and pane size.
  2. Hi Richard, I was referring to the Save a Copy on a LVLIB that contains classes A and A1, instead of saving individual classes sequentially. You'd start with Template.lvlib:A.lvclass * Template.lvlib:A1.lvclass, and end up with Clone.lvlib:A.lvclass & Clone.lvlib:A1.lvclass Your new clone lvlib will maintain the linkage within its own namespace. It then becomes a renaming operation for the Clone.lvlib:AX.lvclass to Clone.lvlib:BX.lvclass This only work if your template has all dependent classes in the same lvlib, hence why I called that a "special case". Your solution is more generic. Even when I don't want the classes to end up in the same lvlib, I prefer to extract them after they have been cloned...
  3. In the special case where your A and A1 classes are in the same lvlib, you can simply clone the whole lvlib to have linkage preserved and rename to B and B1.
  4. Hi @ThomasGutzler, you've certainly figured the answer or switched library by now. For those who would be looking for the same thing here, this is a thread on github issues that discusses the same thing: https://github.com/LabVIEW-Open-Source/MQTT-Client/issues/13
  5. 0-BSD is the only OSI-certified license that gives the same level of restrictions as Public Domain, while still, as you well know from those other presentations you referred to, being recognized in (almost) all countries. Public domain and The Unlicense are not recognized universally. Like Shaun points out, the biggest worry is that someone can claim my work as theirs because the license is open enough that you can copy any part, or the whole, without attribution. Honestly, I don't think the prospect of someone claiming I cheated would meet any level of credibility, since all the development is done in a 3rd-party public repository and I never squash my commits. Easy to prove I went through the development process and I couldn't temper with the commit hashes/timestamps of those commits. You can see all the mistakes, dead-ends, reworks, fixes... Anyway, whether or not you use a more restrictive license would not prevent someone from falsely claiming their work predates yours. If that were to happen, I trust the LabVIEW Community will hold the reputation of the original developer. If the work you want to release is owned by a company, I would recommend to not use 0-BSD. Make sure there is at least an attribution clause.
  6. I think this NI library is a good start: https://www.vipm.io/package/ni_lib_rt_management/ Other options are NI-RAD (image replication), WebDAV, FTP (not recommended) and NI System Configuration. Some more generic info for you to read: https://www.ni.com/en-us/innovations/white-papers/12/simplify-the-deployment-and-replication-of-distributed-systems.html
  7. Hi @Marko Hakkarainen, your "Test Labels" example is broken. Accessors (Write Label) is not public. Perhaps wrapping it into a generic Collection constructor method?
  8. No you cannot. Your simplified example, if the interface is truly abstract, is equivalent to trying to prevent someone from dropping a "empty string constant" on the block diagram. Fundamentally though, it would prevent you from using the direct cast to exercise the override, as shown in the bottom example. The only restriction is that one cannot create a DVR of the interface from outside the interface itself. I have to admit that I have not investigated the consequence of such a pattern in the context of interfaces...
  9. This is not strictly the answer to your question, but if you only use this for elapsed time, I suggest you switch to UTC time instead... There is no daylight savings time in UTC frame of reference, so you are certain it won't hit you. Also, here's a library (shameless plug) you might find useful: https://www.vipm.io/package/labview_open_source_lib_epoch_datetime/ It serves Unix, GPS and ISO time, including support for leap years (and even leap seconds... all 37 of them)
  10. It makes sense if one thinks of it as "6 letters added to the decimal notation".
  11. I typically use a second lvproj file, not for installers, but for the unit testing. The benefit is that I can segregate the dependency on the unit test framework (i.e. Caraya) from the source file that runs the build specs. Although, I don't know if that's super useful if you use a CI server to run both UTs and perform your builds...
  12. Networks Streams implement (and abstract) the concept of Quality of Service without the developer needing to add code for managing intermittent connections. A handshake ensures that all the data transmitted has reached the other endpoint in the order they were sent. Yes, it is probably just a buffer on the sender's side and some ACK replies from the receiver (and incoming buffer), bundled into a seemingly unidirectional stream. For sure there's an overhead compared to straight TCP, but I'm not sure the overhead is that large if you take into account the handshaking that you would need to reproduce the same QoS feature. TCP is more flexible and interoperable. If you need to add QoS to your app, and your app is all LabVIEW on both sides, then Network Streams make sense for reliable 1-to-1 high speed data transfers. If you send lots of small messages, an IoT protocol over TCP is probably more suited for the task (MQTT, etc.).
  13. Right-Click on the "Read From Text File" method and unselect "Convert EOL". The number "13" (0xD or Carriage Return) gives it away. If you look at the HEX representation of what you save and what you read from file, you'll notice the 0xD gets converted to 0xA unless you uncheck that box. Tip: If you deal exclusively with HEX/binary data, you might want to save it using byte arrays instead. The result will be the same in your file, but you won't get bitten by hidden config parameters in your node...
  14. Gave me a good laugh as well... but apparently this image is fake. Once you know it, you wonder why the medals on the sleeves are all pinned towards the down direction with the ribbon stying straight even though one general has his arms bent and the other one not...
  • Create New...

Important Information

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