LabVIEW Idea Exchange

Community Browser
cancel
Showing results for 
Search instead for 
Did you mean: 
Post an idea

Currently, the NI real time devices use FTP for programming and configuration. Services such as telent and FTP are not encrypted and can pose a potential security risk, and are not approved by some IT departments.

 

I suggest a feature for the real-time operating system to have an administrator selectable option to use SSH/sFTP for programming and configuration instead of FTP.

Give LabVIEW full parity with the CVI 'Network Variables' API.

CVI has many useful API functions such as adding a NSV to a existing deployed process

or registering for SV change events that are impossible in LabVIEW.

When you use "Labview Web server", you cannot access your Labview front panels using IE from a PC with no Labview Runtime.

 

To make it work you have to install a Labview runtime, or deploy manually some dll's ...

 

So, it would be nice to create a "light Labview Web client installer" in order to only install the minimum required.

 

Manu.

It could be useful to simulate problems between the devices and the OPC Server (NIOPC Servers for instance).

Adding new optional parameters to DataSocket Write, as such as, Quality, Substatus and Limit Status (Extract from: http://www.visavisoftware.com/Html/OpcServerQualityFlags.htm), we could create different situations to test our applications.

 

This is a possibility:

idea.JPG

Thanks

Hi all,

 

After some issues spending 1 week to get HTTP embedded server working in LV for a single application, I have some remarks that might trigger some need to a more flexible, simple and open HTTP configuration. The current implementation of a HTTP server is quite limited and outdated to my opinion.

First thing is the NI Web Server. This is a nice feature, however, NI recommends using it rather then the outdated Application Web Server but the problem is that this thing is only a single server running on a single port (for every application executable). Good enough for a single web server on a host using a web browser but how about implementing a LV HTTP server for each application (e.g. RPC server)? To my knowledge, every other programming language (e.g. Python, C++, ...) has a core implementation for this.

I have spent a lot of time to see what the best solution is for implementing a HTTP server belonging to a single application executable in LV. This executable is typically a application GUI or a backend service in our projects and we have a lot of them. Every application needs its own RPC server (running on a different port) and hence running its own RPC methods and I ended up implementing a Web Service using a LV Application Web Server, I can't see other ways at this moment using core LV functionality without the need for additional packages to install.

I also miss the enabling and disabling of the HTTP server during runtime. As in our project applications, we also have other transport layers for implementing RPC, such as zeroMQ (thanks to Martijn Jasperse's library on VIPM) and TCP (native built-in to LV). I would like to run only one of these transport services by configuration but here is a second problem here, once the application is running, the HTTP Web Service automatically registers and there is no controlled way for disabling it during runtime, which gives me headaches since I have to change the port number as another transport layer cannot use the same port as the HTTP server. One might say to built another application (actor based) exe and implement the Web Service from there in a different actor but this is a pain in the *** to have 2 exe's for each single application. Why can't the HTTP Web Service not switched OFF and ON again, both in development and runtime? I found a property node to disable the server but it apparently doesn't work (seems related to the native panel web server).

One of the major disadvantages that I also encountered is the HTTP methods that are programmed in a single VI and there is no way to pass data to these method VI's (like using actor framework or even classes in general). It seems we have to use FGV's (Functional Global Variables) to share data between my main application actor and these HTTP method VI's itself. Even then, the HTTP Service Request refnum is only valid in the HTTP method VI itself, once it finished executing, the refnum is flushed and not valid anymore, so no way to pass this refnum using actor framework messages to my application actors. That's quite frustrating since I have to use notifiers within the HTTP method VI's instead as a plan B backup solution signifying that the method VI can proceed and finish its execution once it Wait on Notifier function is complete (since I want to send an answer from my application actors, not from the HTTP method itself)!

Another issue I observed is that I can't "Start" the HTTP Web Service from the right-click menu in the project explorer, it simply crashes with some dubious error that the 'system is currently in an invalid state for the current message'. What does this mean, no clue from NI help docs?

 

Arrowin_0-1715670098941.png

 

I can only right-click and select "Start (Debug Server)" to make it work (but on the debug port 8001 by default). All other options just fail, the same for "Publish", it simply doesn't work in my LV2020 SP1 (32-bit) version and I have no clue why as there is not a single error message at all!

Also, why must we use MS Silverlight to control application webservers from LV? Silverlight is deprecated and I ended up using MS Edge in "Internet Explorer" mode to get the config page working (after spending another two hours to find out). Even then, some config panes just show up with error dialogs and no way to see active services being registered by the application HTTP web server. In the end I just used TCP View to see active services running. It is always frustrating to use third party apps to do simple things.

 

As you might notice from this message, I suffered a lot of days to figure out how to implement HTTP in a simple decent way using LV's core HTTP functionality. I wonder if this will be better using LV 2024 Q1?
If anyone has ideas on how to properly configure multiple application HTTP servers for each application on different ports while controlling itself, please share it with me. I am open to any idea's and wonder if there are other solutions for HTTP implementation (not using 3rd party packages). To my opinion, HTTP should be easy and open to configure properly in LV without a lot of current non-working Web Server issues.
Please note that I tried to reinstall the NI Web Server and other web service related stuff using NI package manager but no avail.

 

Best Regards,

Davy Anthonissen

Aren't you tired or seeing Labview, or LABview or LabView online?

 

NI Certifications (CLA, CLD, etc) should be stripped off people engage in miss-spelling LabVIEW.

 

And those who aren't certified should handwrite "LabVIEW stands for Laboratory Virtual Instrumentation Engineering Workbench" 10 thousand times!

This would be useful for variables whose value is not yet available at deployment time, and is filled later by some process.

 

Currently (LV2017.1f3), it is not even possible to input a non-numeric value in the inital value page in the variable editor. Attempting to do it programmatically like this:

LabVIEW_2018-11-18_12-48-49.png

produces a LabVIEW:  (Hex 0x8BBB0018) Invalid float value.

Whereas, blindly editing the lvlib file to 

 

<Property Name="Initial Value:Value" Type="Str">NaN</Property>

produces a "deployment failed (error: -1950678996, LabVIEW:  The variable configuration is invalid.  Edit the variable properties to correct the configuration.)." at deploy time.

 

'Database Variant To Data' cannot be placed in an inline enabled VI making it impossible to use in malleable VIs. 

It would be nice to be able to draw on the power of the 'Database Variant To Data' VI in malleable VIs so we could be more flexible when writing database related code.

 

Please make this possible or offer a workaround (like the polymorphic instances of the VI).

Hi,

 

This is not really specific to LabVIEW but I can find where to put this idea...

 

It will be nice to have a function to the dump the value of all shared variables (at least those of standard types) from a target into a file. 

 

It will really help debugging applications as we can ask customers to dump the values and send us the file when they report bugs.  Most of the time, they have restarted the application and we lost important information for debugging.

It would be nice to improve documentation created by Tools->Import->Web Service... wizard.

Especially, I suggest to automatically create Description in created .lvlib Documentation so that it would be immediately clear which WSDL URL is handled by that library. Currently, WSDL URL is only placed as a String constant in Open Web Service.vi which is not really convenient.
Thanks for understanding and support.

It would be nice to be able to declare the port number of a web service in the service locator, so clients could be a little more port-agnostic. Extra points if we could bootstrap it such that the URL required to hit the web service didn't require a port number at all, and the port could be resolved via the Service Locator. But I would settle for a way to do a manual two-step process to request the port number by name and then use that number when building the URL.

 

Standard IEC 61850 Allows INT64 this is not support by NI-Industrial Communications for IEC 61850.

Add support for INT64.

When deploying a CAN db, an alias needs to be created to access the database. The writeup is deeply buried in 4-538 of the manual (1200 pages).

 

An example with a simple switch between the dev & exe should be added to help save time and trouble. Or simply add the functionality to an existing example.

 

Thank you!

 

 

If you've ever tried to use the LV Web Service > Session VIs for sessios, authentication, user management, etc., then you'll quickly notice that they're lacking an important feature:  the ability to detect when a user session times out (expires).

 

I can think of two important use cases as of why you'd care:

(1) The user/client is viewing sensitive information (served to him by a LV web service), and then decided to walk away from his computer as we do sometimes.  Any Joe walking by might then get a glimpse of something he shouldn't.  

(2) For logging purposes.  It might just be nice to know when the user logged in and when the user logged out for your IT records.

 

With a securely built web service, you could detect the user isn't there anymore, and direct the web client (Chrome, FF, IE, etc.) to redirect the page and destroy the session.

 

 

There's a sister idea that goes along with this, but I don't think I'll post in a separate thread unless needed.  So, another way to detect session timeout events would be to get the session ID cookie (from Create Session VI), store each cookie in memory somewhere, and essentially poll them in a background loop for session information (ie session still exists?).

 

Ho hum, maybe I'm the only one building web applications of this type, but it sure would be a helpful feature in my opinion.

In the data dashboard I continously call a webservice (poll webservice) whose return values can be linked to indicatorson the dashboard.<br>Even in case the selected webservice supports parameters too, it would be nice to link these to controls on the dashboard.

I am communicating to parker motor controllers through the Ethernet (parker sample code). Apparently since it is Ethernet based, the code uses socket, where the sockets require admin rights (another discussion about ethernet based and admin rights). In order for my VI to connect to the controller I need to run LabView as an administrator. The problem is I am making this program into an executable for production work.

 

When I create the executable it will not connect to the controller unless I am running the application as an administrator. As this program will be used in production I want it to be as simple as possible to perform. I don't think there is a simple way to change the environment to run without the need to run application as an admin. Are there any ideas to either change the executable to run as an administrator through the application builder? My plan is to create an installer through the application builder.

 

Some ideas that I had is to create an installer file and create the executable. Change the privilege level of the executable (properties>compatibility>privilege level>run this program as an administrator). Use a batch file to install drivers and application, then replace application with the one with the elevated privilege level. Another idea I had is use a batch file to do a runas command to run application as an admin. I cannot get either method to work. Does anyone have ideas?

Module to further customize the remote panels generated by the tool "Web Publishing Tool". That is, because right now we can only customize a title, header and footer.

 

remote panel2.PNG

 

 

Would be very nice if we we could customize things further. This I thought, because many do not have the knowledge related to web design, but if you constantly use remote panels and would like to see the most pleasant pages. (For example, see a image, or a different color, so on). Something similar to what was done with the "Model Builder Robot simulation" of the "LabVIEW Robotics" that now allows create our own worlds and robots. But would focus on web design.  

a simple idea would be: 

panel2.PNG

Currently the Labview Database Tool Kit doesn't support returning or working with temp tables in a stored procedure.  This makes a SQL/Labview developer have to make complete hacks (such as returning tables in comma delimited form) to return results that take multiple table manipulations to generate.

 

See this thread for an example:

 

http://forums.ni.com/t5/LabVIEW/SQL-Query-Works-in-MS-SQL-Server-2008-but-not-when-using/m-p/2151492

 

The import Web Service tool is very interesting and practical. However, many companies are using web services with authentication in xml script. This import tool doesn't work with the WSE3 protocol, from Microsoft, one of the authentication tools for soap services. I expect to see this implementation in the next version of LabVIEW.

Hello,

 

I have a current need to be able to SSH to a "black box" Labview doesnt seem to have any support or any precanned vi's to be able to do this in a reasonably simple fashion. Maybe create a open, read, write, close for those of us who need to ssh. Thanks for your help and time.