Jump to content


  • Posts

  • Joined

  • Last visited

  • Days Won


Posts posted by pawhan11

  1. I remember having one cRIO that crashed randomly, it turned out it was somehow related to reading ini file. For some reason this ini was read from time to time in app, when it was changed to read only once at startup it solved the problem.  When we got desperate we started to add syslog messages for all state machines states and logging it into db to see if it was related to some code...

  2. 34 minutes ago, drjdpowell said:

    Note that System could have a method to remove the Transport ("uninject"?).  Main.vi can remove the TCP and dispose of it, just before it disposes of System.

    Problem is that System is aware of ITransport that does not have IDispose. It would require cast after uninject function to TCP to call dispose. 

  3. I started to play with LabVIEW interfaces and have some general architecture problems.

    Assume we have

    - IDisposable interface with single Dispose method used to clear resources

    - ITransport interface with Read and Write methods to pass some data

    - ISystem interface with ReadTime method

    - TCP transport implementing IDisposable and ITransport

    - System implementing IDisposable and ISystem

    TCP is injected into Sysem by main method, who should be responsible of calling Dispose on TCP? My thinking is that object that was responsible for its creation - in this case main.vi. But this leads to problem of passing TCP class on main.vi

    Shall ITransport implement IDisposable? My thinking is it should not - we have no guarantee that all Transport will require Dispose. The same goes for System. This leads to problems of having to pass concrete implementation all over the system just to close it when required. 

    Another solution would be to implement additional factory classes that would move instantiation of Transport into System, but then it must implement IDisposable.

    What would be the best way to approach it? For now I enforced IDisposable on ITransport and ISystem



  4. Mostly cutting costs and company wants to go into open source solutions. Existing systems will stay as they are now until decommissioned, hardware will be reused where possible , question is about how we approach new projects. NI is too expensive compared to other vendors on the market and we are not having complex systems that require high end hardware they offer. For example we have high end pxi scope cards to measure ac frequency and phase rotation from the grid :D  And also other our observations of NI software portfolio in general:

    - LabVIEW is in decline, from what i hear they dropped support for universities, in EU they closed offices in many countries. We are trying to develop new test systems in .net and see how it goes. 

    - No significant new features and roadmaps, unknown future of the language. They killed NXG and announced it on forum post!...  Hope this new NI Conect will change my mind.


  5. Attached working proof of concept with LabVIEW CLI, To make it work:

    • Disable Error message on logger instance (FGV in C:\Program Files (x86)\National Instruments\Shared\LabVIEW CLI\Operations\Utilities\Logger)
    • Enable multiple instances of LabVIEW
    • Spawn few labview processes that will run Builder.vi and pass instance parameter eg \..\..\Labview.exe \..\..\Builder.vi -- 1
    • Copy ExecuteBuildSpecAsync_class folder to C:\Program Files (x86)\National Instruments\Shared\LabVIEW CLI\Operations
    • Start it the same way from labview CLI but use ExecuteBuildSpecAsync insstead of ExecuteBuildSpec, should compile on free running builder or throw exception



    • Thanks 2
  6. Seems that it is not possible directly using LabVIEWCLI, i managed to 'cheat it' by starting multiple LV instances, one instance was building big proj that takes 30 min, another instance did simple library that takes 40sec, they seemed to work independently and time of individual builds did not increase.

  7. I have app with 30 PPLs that have to be compiled before main application. It takes huge amount of time (30min) for build, probably due to heavy use of classes. I use simple powershell script to execute those builds in order, but most of them could be executed in parallel. Is it possible to start multiple instances of LabView CLI to 'cheat' this? 

  8. @ShaunR I might have formulated question incorrectly 😁 I want 3 separate functions that have:

    - variant input and return 1d array of variants when input variant is array  (any dimension any data type in array)

    - variant input and return array of variants when input variant is  set (any data type in set)

    -variant input and return variant pairs of key values when input is Map (any data type of key and value in map)

    For Maps and Sets I can get type info using Type Parsing Library but not the actual, the only way i see is digging into type descriptors...

  9. Started transition from svn to git recently and I might be not 100% accurate there. Branch for git means just an link to a commit.

    When branch is merged and later deleted no history will be lost, all commits from deleted branch will remain as they were.

    If You delete branch that was not merged then commits in that branch will not be 'reachable' and eventually be garbage collected - never seen that one yet. 

  10. We are looking for best way to get rid of PXI controller, due to high cost, low performance and issues with IT policies within company.

    From what I see the best way is to use thunderbolt PXIe-8301. I ve seen many notebooks with TB3 but no desktop PCs. Are there other ways what will be cheaper than PXI controller?


  11. Did You guys have any problems with labview CLI when setting up CI? Or it is just me doing something wrong somewhere. So far I ended up with powershell script that based on params triggers builds, runs caraya tests and creates simple zip package with binaries. What I see is that sometimes build fails one time and when retried works fine when no change to code was made, sometimes cli can not connect to laview. Another problem that i encountered is fact that labview build destination is absolute path, not relative and has to be updated in lvproj xml files. I fear that when we spin off dedicated vm to run those builds it will fail due to potential LV 'problems'. 

  12. I had the same issue with svn and externals. One app pointed to branch of another component. It was a mess when managing this in long run.

    Now when we do transition to git, i try to find alternative solution. So far the most reasonable is pulling component binaries to project that needs them via nuget package or g package manager. From what i see NIPM installs package globally for PC, not per project. 

  • Create New...

Important Information

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