Jump to content

Zyga

Members
  • Posts

    36
  • Joined

  • Last visited

  • Days Won

    2

Posts posted by Zyga

  1. On 6/22/2022 at 12:53 PM, Antoine Chalons said:

    VIs from DSC / user management let you check the user/group of currently connected user and based on that you can decide to do anything you wish, refuse keyboard entry, value change on controls, etc...

    To be clear, I'm not saying you should use the DSC module, I'm simply saying it could be used also to do that.

    Now... do you already have a licence for it? If not, just implement your own user management.

    If yes, not too fast, using it requires to understand how it stores the information about the domain (groups/users) etc.

    Good to know, I have that license and even this is not a solution for me due to platforms limitation, I will surely check how it works. 

    Cheers!

  2. Thank you for your thoughts. DSC solution seems to be easiest, still own implementation like ShaunR might be needed as I met requirement to prevent some users from using keyboard on a few controls. So this approach might be extended not only to visibility but also other properties.
     

  3. Hello,
    I am just wondering - without any particular need - do you have strategies to implement UAC in your application? Any generic solution that are not tightly coupled with the architecture of the software? So far my cleanest solution is to check elevation before loading module UI, but even though the implementation is fairly simple it has limitations.
    Do you have your own libraries that are applicable to different applications with different complexity or is this something which is tailored depending on client needs.

    Zyga

  4. We did such a thing for dalsa camera. It indeed require to write wrapping functions, but there is a help which describes how IMAQ image is stored in the memory so you should be able to cast vendor image format to LV IMAQ.
    If you do not need any suphisticated camera and acquisition control this library is pretty basic and I have used it with success.

    I might be missing something but I do not think that OpenCV has a good cam acquisition support.
     

  5. Hello,
    On a debug purposes I would like to open reference to a privately scoped vi from outside class (or from parent class vi). But while I am trying to do this I am getting error 1390.
    obraz.png.f988b608c614860efbb28359bc4907e2.png

    Which makes all sense.

    But is there any way to walk-around this? Without ofcoure adding code to the class.
    I see that Caraya developers has encountered similar issue and did not resolve it.

    Anyone who has an idea?

    Thanks for your help.
     

  6. Thank you for your answers and sorry for not being here for a while.
    Based on information from you, I have achived what I needed, but there are still things that are mistery for me.
     

    On 10/28/2019 at 7:56 PM, Aristos Queue said:

    If you make changes to the original VI BEFORE the clones are replicated,

    That was my thinking before I wrote this post. But it somehow did not fit to what was happening in my project. I was loading a class, changing its VI properties and then call this VI using dynamic dispach mechanism. It wasn't modified as I expected. So I suspected that LV preallocate clones for dd VIs while loading class (and I wrongly assumed that those  are VI with "instance" suffix). And this would fit to what was said after:
     

    On 10/28/2019 at 7:56 PM, Aristos Queue said:

    That generally means never calling the original VI as a subVI and instead always calling it through Call By Reference node.

    So I have created this example:
    image.png.7716b5dba9e0682db7a622aaf7a3cfcf.png

    And this is what happens when I call this VI first time I open the project:
    image.png.20cc3cd89cbef7f3d93a037be0ce268e.png

    What supprised me most is that even though LV has allocated single clone for dd vi right after class loading, changes made on reference to its prototype applies to the clone as well (which, for some reason, is not the case in my project..). And changes applies to clones that are created afterwards which is expected. Exactly the same behaviour can be seen in executable built based on this example.
    Second run after project loading, has both clones in the memory from the beginning. Now operating on the reference has no effect on both clones.
     

  7. I wonder if someone has found a way to retrieve reference to a vi that is overriding method and has reentrancy set to shared clone. What exactly I am trying to do is to change properties of this VI controls by using externally opened reference. Actually I would like to localize FP at application loadtime (without placing code on "to be localized" VI blockdiagram). When I list all VIs in memory I get stuff like this:

    sDataAcquisition.lvclass:editWindow.vi:Instance:6cc60448-8771-4aea-ad60-5635b7cb9c6a.vi
    sDataAcquisition.lvclass:editWindow.vi:Instance:b60c6bed-8161-4566-ab34-ae4092625b90.vi
    sDataAcquisition.lvclass:editWindow.vi

    sDataAcquisition.lvclass:editWindow.vi is a method that overrides one from parental class.
    sDataAcquisition.lvclass:editWindow.vi has not yest been called when above list has been populated,  just owning class loaded into memory.
    Can someone explain what Instance:xxx-xxx.vi suffix mean? Can I be sure that if I find all of instances there will be no more alocated at app runtime?
    I also can find stuff like that, which has longer suffixes tree:

    loadDrivers.lvclass:execute.vi:Instance:ed894b20-902d-486d-ae3e-062689901cdc.vi:Instance:c1440502-af17-4937-acbe-a4f891f270d2.vi
    loadDrivers.lvclass:execute.vi:Instance:ed894b20-902d-486d-ae3e-062689901cdc.vi
    loadDrivers.lvclass:execute.vi
    I assume that this is correlated to ancestry hierarchy somehow, but is there any documentation how/when this clones are created?
    Getting back to my original goal. I would like to change properties of e.g. sDataAcquisition.lvclass:editWindow.vi and all its clones.

  8. 6 hours ago, Aristos Queue said:
    Quote

    Disadvantage of that solution is a need to change inheritance.

    I do not believe this is a disadvantage. Serialization is special... if the parent is not serializable then the child is not serializable. Requiring inheritance from a base Serializable does not seem to me to be a bad requirement. Even in other languages where serialization is an interface, mostly they have to add special syntax checking to make sure that the interface is implemented by the eldest class or else it doesn't work. Serialization isn't functionality that can be injected on a descendant level. It's all or nothing to be meaningful because failure to preserve parent state means you aren't actually saving the state of the object. Thus the requirement to inherit from specific base seems absolutely reasonable to me... indeed, it is an advantage because it syntactically assures that the ancestors are included.

    Now when I am thinking of it, it sounds obvious. I am possessed by flatten to/unflatten from xml ease of use..

     

    6 hours ago, Aristos Queue said:
    Quote

    (wonder why this information is not in the class flattened string?).

    Flattening the names of the complete ancestry into every flattened string would be an incredible bloat of the flattened size of data.

    Once again, now mentioned it is perfectly plain. For me it is hard to imagine using more than 3-4 inheritance levels, but looking on e.g. VI Server I see it is reasonable to have more than that.

  9. On 9/7/2018 at 2:03 PM, Aristos Queue said:

    how the names are extracted

    From what I see they are not. Correct me if I am wrong, but this lib enforce "serialize" method to be overwritten and then calls it through whole hierarchy.
    Disadvantage of that solution is a need to change inheritance. Ok, but enough of moaning. We will use one of existing solution. Just wanted to point out where retrieving ancestry list would be useful (wonder why this information is not in the class flattened string?).

  10. I was looking for getting ancestry list at RT solution for a while. Found few posts, did some coding - no success. I just reply to this old post as @Aristos Queue asks why would someone need that information. I wish to flatten/unflatten object to other format than xml. Surely this post is a grate start, but still unable to get TD even whole data is there. If flatten/unflatten to xml function can do the job, there must be solution hidden under the hood. 

  11. 23 hours ago, ShaunR said:

    It's a fairly vague requirement that needs a bit more digging before examples can be offered.

    You also say that an Ethernet connected device is a possibility. These will always be cheaper than NIs cDAQ. There there are hundreds of Ethernet solutions out there but you can narrow that down for certain criteria.

    1. You say DIO. Does that mean you don't need a multifunction device (with analogue)? Single function devices are much cheaper and, when it comes to DIO, dedicated Input or output channels are generally cheaper than programmable - even if on the same board (e.g. 8 digital in, 8 digital out).
    2. What voltage range will you be working with? For DIO there are options for 24v,12v,5v and 3.3v. 24v are rare whilst 5v are ubiquitous.
    3. Does the IO need to be isolated? Non isolated devices are always cheaper but more risky.
    4. How many channels of digital in and digital out do you require?  I so miss the NI DIO96!:(
    5. For DIO does it need to be current sourcing or sinking? How much current needs to be provided/dissipated - per channel, per bank or per device?
    6. What is the nature of the signal you are trying to detect? If it is transience, then most Ethernet DIO devices have on board processing to edge detect, vastly reducing the need for fast update rates in the client. If the processing is, say, sampling a signal, then the update rate at the client end will be crucial.

    These are the kinds of things that need to be considered when looking at a device of any type. What you require or choose will greatly reduce the applicability of the devices on offer and in some cases make you compromise on your requirements.

    These are questions that have to be answered before every single project. And assumption is that if I choose decent vendor, he will provide me with any of above options (I wouldn't dare to demand DIO96..).
    More important for me is to find solution tested with pc based systems.. With NI I am sure of community and NI support. Whole bunch of pitfalls already discovered and resolved or walkaround found.


    If about LINX license, this is plainly answered in FAQ authors site.
    So Yes, you can use LINX to programm arduino for commercial usage.

     

  12. 18 hours ago, smithd said:

    Do you have performance requirements? (acquisition rate, throughput, latency, buffer size, etc?)

    For example you say "distributed" "automation" tasks which to me says 10-100 Hz, single point measurements, continuously, forever.

     

    We do not have strict requirements. This question do not apply to any specific project we are going to implement in near future. This is question in general, but basically I cant think of something that 100Hz, single point measurement wouldn't be sufficient.
     

    18 hours ago, smithd said:

    But you are using cdaq which is not really an industrial automation device so I'm confused about what you want.

    Actually we have few industrial eol testers based on Windows PC + cdaq, and they works perfectly well. These are not always harsh environments and cDaq does well.

    18 hours ago, smithd said:

    You may also want to add a budget, since for example a cDAQ unit is like $1200 which in the US is like a day of an experienced engineer's time...in a lot of cases just evaluating other options would be more expensive. You also have to consider the code quality reduction associated with now using the NI DAQ driver and some other driver in your application, and whether that is worth some few hundred dollars.

    Few matters which needs to be balanced and analyzed carefully. Depends on many factors really. Surely if you would have had few implementations over year, you could consider writing your own, good quality driver.

    13 hours ago, hooovahh said:

    I'm going to keep going on the extreme cheap side of things and suggest an Arduino.  NI already has an API for doing buffered analog inputs, although I don't know the rates I expect on the order of 100Hz.  Chinese knocks offs exist for about $3 or $4 with free shipping.  Add a buck or two for a USB cable and case, and you have a pretty cheap USB DAQ device that uses NI VISA as it's low level making it work on all NI targets.  Making it ethernet controlled via TCP is possible too, it would just need an ethernet shield and some code depending on what LINX supports these days.  What don't you get?  Fast shipping, expect it to take a month or 2.  Also don't expect support, if you fry the thing there isn't a warranty.  There is no voltage protection either. If you put 60VDC into it that pin is toast, and possibly the whole microcontroller.  Need a yearly calibration for equipment?  Yeah you're going to have to come up with your own calibration routine that gets approved.

    All that being said I have used an Arduino in a real production project...but it was for DIO only, and an unmodified LIFA toolkit which controlled relays in the system through a transistor.  It was pretty simple and just for a cost saving on a low risk setup.  We considered using a parallel port at one point.  As far as I know this test is still in place being used

    It sound like an idea, but it might be very hard to make customer believe this is robust solution. I have never programmed Arduino by myself either, so I would't feel very confident with this solution..

    18 hours ago, PiDi said:

    You might want to google "Remote I/O" (not "Distributed I/O", those are two slightly different things). Every industrial automation company have some (Advantech, Phoenix, Eaton, Moxa... Just from top of my head). If this is slow, simple monitoring of some DIO states, you might be able to find Modbus solution which would not generate additional hardware costs (just connect Ethernet or serial cable, grab free toolkit and you're good to go). But if you need something more complex, then you might quickly get to the point where adding NI based solution to your already NI based project is not really more expensive.

    I was looking on Advantech before and did not find any tempting hardware there, but Phoenix and Moxa looks way better.

    10 hours ago, PiDi said:

    You can also get other PLCs at this price range. Though I never actually used them, Rockwell Micro820 and 830 series looks interesting (industrial grade, some build-in DIO and AIO, ability to extend by pluggable modules, Ethernet/IP communication). And AFAIK they come with free software (Connected Components Workbench). There are of course others - Siemens Logo!, Mitsubishi also have some cheaper models... 

    Yes, but getting deeper in this direction we do not need LV at all.. remote IO modeules easily controllable via LV software.. That is the main goal.


    From what I see there are solution that I was't aware of, but not yet tested in LV. Now most difficult question to answer to is the one from @smithd. Whether it is path worth of exploration or it is just waste of my time and money..

  13. LAVA users,
    We are looking for alternatives for NI DAQ devices for industrial automation. Since NI has its devices mostly focused on advanced/high speed/high precison data acquisition/processing its prices are inadequate to simple automation tasks. 
    I would also say that NI PC based daq systems are expensive if need to be distributed systems (found this but still relatively expensive cRIO required).
    Just now we need to extend our compactDAQ based system with two DIO modules. We even have free chassis slots for this, but station that needs this IOs is few meters away from PC. How easier would it be if we could use single ethernet cable..  Ofcourse we can add another small cDAQ (what we probably going to do) but this is slightly expensive solution for our customer.

    Does anyone have some experience with 3rd party solutions? Any known daq devices vendors? Standalone ethernet daq modules?

    Regards,
    Zyga

  14. 5 hours ago, hooovahh said:

     Otherwise you could just include multiple image files in your application builder that just go into support.  Then have your icon be a path to that image file by setting that in the registry.

    Tested and it works.

    With multiple images stored in a single file it doesn't work. Looks like win uses them just for better apperance. All of them list in the resource hacker as a single group.
    When we take a look e.g. on LabVIEW, there is a group for a single file type icon.

    Nevertheless specifying icon path explicitly solves my problem.
    Thanks!

  15. Hi,
    I would like to associate icons with file types that are handled by a LabVIEW built application. To do so, "defaultIcon" key has to take a value of executable path with parameter "resource ID".
    The question is how to build in more than one icon with executable?
    Examples of LabVIEW keys:
    -library: ..\LabVIEW.exe,-8
    -llb: ..\LabVIEW.exe,-3
    Is it even possible with app builder? Any workaround?
     

  16. As far as I know ActiveX should be plan "z". It might cause unexpected problems, just like .net. It's hard to imagine how you can exchange data with compiled code without exact knowledge how it's made. I'm not experienced it this kind of things but it sounds hardly to be done. Shared variables are used to communicate e.g. with PLC systems, so it suggesting this should work way faster than mentioned 50-300ms (for sure more stable).
    You can also take a closer look on shared memory. I have seen some LV implementations, not only for RT targets on which it is native LV functionality.

  17. ..There is a very good reason why ,NET (and it's grandpapy, ActiveX) is banned from all my LabVIEW projects..

    Could you provide us more details? Any particular reasons? I've used .net in my project twice or three times already, and there were no problems occurring.

×
×
  • Create New...

Important Information

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