Jump to content

Neil Pate

Members
  • Posts

    1,155
  • Joined

  • Last visited

  • Days Won

    102

Posts posted by Neil Pate

  1. Wow this thread is a blast from the past. I have actually used LapDog in a project many years ago!

    And Steve called it: 

    Quote

    What if you could wire the object right into the case selector? It would behave like a typedef with the ability to add a case for every value (child) and break if there is no default and you don't have a case for every value

    I remember reading this thread and totally glossing over this idea, which I now 100% support.

  2. 1 hour ago, Thoric said:

    Thanks, but that's what I thought I'd tried and it didn't work for me. My classes are perhaps bit more complex (A is actually a child of some other parent), so I wonder if that's complicating this. Certainly the entire class heirarchy is not in the lvlib. I will give it another go though! 🙂

    for what it is worth, we do this...

    I have a shallow-ish hierachacy somthing like ths:

    actor <-- device <-- type_of_device <-- concrete_implementation

    We have some scipting code to help us make a new instance of type_of_device <-- concrete_implementation

    I have a template with the last two in a .lvlib, and we clone them as needed to two brand new classes.

    To further complicate, our stuff is in PPLs.

    • Like 1
  3. Probably not relevant, but the only time I ever managed to hard-crash (lock-up) a running cRIO was when I was using the (I forget the API exactly) API to set the RT clock. I was doing this once a second to keep some clocks sync'd and apparently the cRIO just didn't like it.

    This was so long ago I forgot how I figured out exactly what the problem was. I think there were some log files somewhere that *may* have had a tiny bit of useful info in them.

  4. Not sure I buy your logic, are you saying by keeping the refnum the old config API and the new one would be able to work together? ? Surely that would not have worked either. I cannot recall how the old API was implemented but I am guessing it was not the queue based one we have now (which I don't love either to be honest).

    Anyway, let's not lose too much energy arguing over something this old 🙂

     

  5. I am a litle surprised LabVIEW lets you wire this together, as the reference coming out of the Open Config Data is not actually a file reference it is a queue reference.

    So when you try and Flush you are passing in a Queue reference not a normal File reference, so this will not work.

     

    image.png.95a02528a1f6a57c3d61820d657d6250.png

  6. 12 hours ago, Antoine Chalons said:

    Yeah... LabVIEW everywhere was a slogan when LabVIEW RT was released. It was cool at time!

    I don't think NI's focus is to make it possible to deploy your LabVIEW code to some cheap hardware that generates no revenue for them...

    As for your question about the repo, if I understand correctly, it's the source of the OS called 'NI Linux RT' fork for RT targets (cRIO, PXIs, IC, etc.) , I once heard there was a way to install NI Linux RT on some Intel PCs, never actually seen it though.

    Edit : you might want to read this : https://www.ni.com/en/shop/linux/introduction-to-ni-linux-real-time.html

    A few years ago I have managed to get RT installed on a regular PC. It seemed to work ok and did some simple tests using the network card, but never used it for anything serious/production, more just to see what was involved. I believe that doing this might be in violation of some licensing agreement.

  7. 8 hours ago, Dasha Chichasova said:

    Hey guys, 

    The team at my company sometimes participates as presenters in virtual LabVIEW user groups. I'm trying to find a way to spread the word since we don't do email spam. So I figured I'll start this topic and keep posting event notifications and recordings here for anyone who's interested. If you have any ideas for topics, please reach out! 

    We just recorded two presentations and there's another event coming up on December 13th. 

    Recorded presentations:

    Building LabVIEW IDE and Tooling That You Always Wanted: https://bit.ly/417KxSN

    Communication with controllers: https://bit.ly/3t7zpJ0

    Presentation on December 13th will cover Intro to SerDes Camera Communication in LabVIEW. Reg link here: https://konrad-technologies.us/labview-user-group.../

    Hi Dasha, we have a special channel for user groups over on the Discord. Would you be able to post it there also?

    Here is an invite to the Discord if you are not already a member: https://discord.gg/sSMm42aYvW

  8. 5 minutes ago, hooovahh said:

    For me each message is it's own user event that is a variant, that gets created at the start. Then you can use it as a publisher/subscriber paradigm because you can create an array of these user events and register for them all at once.  This is great for debug since a probe can just subscribe for all user events and see all traffic between actors.  The Variant has an attribute that is Event Name, that is pulled out so the one event case handles them all, but the name is unique.  VI Scripting creates a case to handle each unique user event, with a type def on how to get the requested data out, and if it is synchronous, another type def to put the data back as a reply.  New cases are created with VI scripting to generate the VIs for request, convert, response, and the case structure.

    Sure I know this pattern well, just prefer to have a single "mailbox" type event inside my actors for messages into the actor. I don't want to deal with the drama and scripting just to be able to have different typed events. My layer above the variant is all typed, so I don't really have an issue with converting variants to their real types.

    But of course everyone must do whatever pleases them most. I have way that works for me, my team, and the kinds of things that we build, so have no need to make it more complicated.

  9. 18 minutes ago, ShaunR said:

    I shake my head with the recent push in the software industries to strict type everywhere. Most of the programming I do is to get around strict typing.

    While I appreciate dynamic languages and the flexibility they offer I think this is pretty bold blanket statement and is totally context sensative. Would you want to write a driver for your GPU with a language that does not offer strict typing?

  10. On 11/15/2023 at 4:46 PM, hooovahh said:

    Typed Clusters takes care of most use cases with this.  I have had times when two separate applications are talking to each other, and in those cases if the type def cluster changes, then both applications need to be built so the data matches.

    Not for me though, my low level messaging uses events and that is just waaaaay to much drama to have separate events for every message. I wrap it up a layer with typedefs though, just the data is transported in a variant.

  11. 2 hours ago, Dave21 said:

    I am trying to setup calling some simple python scripts from LabVIEW 7.1 using labpython 1.2-2.  I installed labpython and python 2.7, but cannot get the script to work.  

    Keep getting errors like PYTHON New Session__ogtk.vi->PYTHON Symple Execute__ogtk.vi or LabVIEW:  LabVIEW cannot initialize the script server.

    in PYTHON Test Script Node__ogtk.vi

    I assume I don't have something configured.  Are there instructions or can someone let me know what I am missing?

    Also tried installing python 2.4 - same issue.

    LabVIEW 7.1 and python 2.7? Yikes!

  12. 18 hours ago, crossrulz said:

    I avoid named queues and notifiers.  So what I do is put the notifier reference in the event data.  This makes the calling VI in control of the reference.

    yup, exactly how I do it too. For me the notifier has a variant data type so (unfortunately) needs to be cast back to real data when the return value comes

×
×
  • Create New...

Important Information

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