Jump to content

REx - Remote Export Framework and Remote Events


Recommended Posts

lEver wanted to communicate with VI which are across context boundaries?

Those typical boundaries, are

  • different LabVIEW project

  • LabVIEW into LabVIEW EXE,

  • EXE to EXE

  • PC to PC across a network or even the internet


 

Usually to get around these boundaries, we have to flatten to some easier transport mechanism like a string and then unflatten on the other end.

 

There are a whole other host of situations and and reasons why cross context boundary communication is useful and not just a simple slam dunk using existing primitives in LabVIEW

 

REx (Remote Export Framework) is a useful framework that you can take advantage of to eliminate the typical boundaries

Instead of spend 45 minutes trying to describe it, see the linked videos below, (also in the PPT) until more written content gets made.

 

Basic Demo - Current App http://screencast.com/t/JbW2mM3jx

 

Creating & Using a New Command http://screencast.com/t/GhkE2CEx4Ip

Send into EXE http://screencast.com/t/bxbI0B4l8Xs

EXE to EXE http://screencast.com/t/xCJw2B39mFQr

 
Debugging Ports / Services http://screencast.com/t/E0RXrgM3Yex
 
Rebuild of EXE (addendum) http://screencast.com/t/36oWmrybjRMj
 
*******************
1/12/15 Update: attached new VIPC which upgrades REx to 1.14.0.31 to address the issues w/ things not moving into the tools menu properly

Remote Export – REx Framework.pptx

REx Installation Full.vipc

  • Like 2
Link to comment
  • 5 months later...
  • 2 weeks later...
  • 1 month later...
  • 4 weeks later...
@Bobillier

Please check out the attached files that I did a save for previous on.

I don't have 2011 on my pc (or the time to check the install at the moment) so if you could see if it's operational for you that'll help me out (along w/ anyone else that wants to use the 2011 version)

 

Thanks,

Norm

Thanks for the port!

I've just tested on my machine with LV2011 and it works just fine. I was able to run the DEMO Command Sender.vi & DEMO Command Listener.vi in the development environment, as well as the sender in the IDE and the listener as separate executable. No relinking issues or any kind of problem with file versions this far.

 

EDIT: Well ok, the Rex_Sprinboard library seems to miss some files for generating user icons and such. I guess that's just not available in LV2011. It's missing files from ..vi.libLabVIEW Icon API*

Does my installation miss something?

Edited by LogMAN
Link to comment

Thanks Norm

I can open Rex.LVLib without problem in LV2011.

Your Zip contain Session-Root.Lvclass too. is it normal?

Please, is it possible to have your exempl in LV2011 ? Oups i see them in other folder

Best regards

Eric Bobillier

Edited by Bobillier
Link to comment
EDIT: Well ok, the Rex_Sprinboard library seems to miss some files for generating user icons and such. I guess that's just not available in LV2011. It's missing files from ..vi.libLabVIEW Icon API*

Does my installation miss something?

All, I can't do much about the Icon stuff for the 2011 port as a lot changed around those versions.

Your best bet is simply to edit the Command Creator Springboard and comment out the icon modification part of the code.

It should be easy to find but if you run into trouble let me know and I'll direct you along.

 

Hi Norm After few controls , it appears that one def-type ( KeyedArray.ctl)is missing in your dependency for the Rex_Sprinboard,and all about ICON API are missing too. Eric

KeyedArray.ctl should make it's way onto your PC if you install AMC from the tools network.

I'm sorry about the dependency, but because I'm not going to spend too much time on the 2011port, hopefully this will work

Please let me know if that doesn't

 

Happy wireworking

~,~

Link to comment
  • 2 months later...

Hello Norm,

 

Thanks for your work!

I installed the REx using "REx Installation Full.vipc" in LabVIEW 2012 SP1.

Everything is working perfect (the same as described in videos), but I can't create a new command with the "MAIN - Create New REx_CMD.vi".

I have the attached error message displayed when press "Build".

 

Can you help me to resolve this issue?

 

Regards,

Andrei

 

 

 

post-52427-0-27167200-1404994863.png

Link to comment
  • 2 weeks later...

Is it possible that the REx to send/receive data between two EXE on the same local host, but build from different projects?

Thanks!

 

Yes.

This allows you to talk between ANY LabVIEW instance irrespective of the boundary.

Good luck!

The only thing to be very intentional in setting up, is making sure that you have the right 'Service Name' configured for the listener and pointing to that specific one on the remote connection

 

Good luck

Link to comment

Very, very cool, Norm. :)

 

Let's say I wanted to remotely monitor a test system. Would it be breaking to have the remote system broadcast its disposition to the entire network every 30 seconds or so, ignoring errors in the case that no listeners are running? What are the limits of data types that can be passed? What would be the ideal way to show the entire front panel of the remote system? Duplicate the front panel on a listener, bundle the data on the sender, then unbundle on the listener?

 

Edit: I'm imagining more than just the remote panel capabilities built into LabVIEW.

 

Edit 2: So I upgraded from 1.12.0.27 (installed when I installed TLB`, I think) to the version attached here (1.14.0.29), and now the REx»New Command button is gone from my tools menu, and the examples folder went from having the source files shown in your video, to only having the Listener exe and ini in it. It's like it uninstalled what I had and didn't replace it. I did uninstall the whole package and reinstall it, and restart LabVIEW, but no joy.

 

Edit 3: Ok, I found the demos, at least. Looks like everything is in user.lib now. Were the tools menu options supposed to go away?

 

Ryan R.

Edited by RnDMonkey
Link to comment

Well, after a full system restart, the menu options are back, and creating a new command worked! Amazing what restarting a Winblows machine can do!

 

Ryan R.

 

I'm sorry for all the troubles.

It's true that I haven't done as much testing of the install w/ the recent builds.

I'll double check and re-post the updates that you found. Thank you!

 

Also, since you've now got command creation going, are you able to get it to talk across the boundaries you need?

 

~,~

Link to comment

How secure are the messages communicating this way via tcp/ip and the vi server (correct me if this is not the case)?

Is it open to simple sniffing/wireshark/viserver listen to all?

I know this is not a specific issue for REx, I just thought that you might have a solution maybe by communication between processes in memory for local machines or hashing/encrypting the messages.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Similar Content

    • By TDF
      TDF team is proud to propose for free download the scikit-learn library adapted for LabVIEW in open source.
      LabVIEW developer can now use our library for free as simple and efficient tools for predictive data analysis, accessible to everybody, and reusable in various contexts.
      It features various classification, regression and clustering algorithms including support vector machines, random forests, gradient boosting, k-means and DBSCAN, and is designed to interoperate with the Python numerical and scientific libraries NumPy and SciPy from the famous scikit-learn Python library. 
       
      Coming soon, our team is working on the « HAIBAL Project », deep learning library written in native LabVIEW, full compatible CUDA and NI FPGA.
      But why deprive ourselves of the power of ALL the FPGA boards ? No reason, that's why we are working on our own compilator to make HAIBAL full compatible with all Xilinx and Intel Altera FPGA boards.
      HAIBAL will propose more than 100 different layers, 22 initialisators, 15 activation type, 7 optimizors, 17 looses.
       
      As we like AI Facebook and Google products, we will of course make HAIBAL natively full compatible with PyTorch and Keras.
       
      Sources are available now on our GitHub for free : https://www.technologies-france.com/?page_id=487
    • By mhsjx
      Hi,
      I'm a beginner in labview, and now test cRIO about two weeks. I still can not solve the problem. I attach my test project for explanation.
      I want to realize that , for example, with time sequence t1, t2, t3, t4,  DO outputs T, F, T, F, AO1 outputs A1, A2, A3, A4, AO2 outputs B1, B2, B3, B4, and the delay of AO1 and AO2 should as small as possible(AO1 and AO2 may comes from difference modules).
      I search in Google, NI forum, and decide to use for loop and loop timer in FPGA.
      The reason as follow:
      1. To realize the specific time interval, I can use Wait and Loop timer. But in "FPGA 0--Test DO.vi", it can't not realize specific time interval by several us's error(maybe large). And to complete once of while loop, it needs 134us. I can't explain that it can realize time interval below 134us, even I acturally realize a delay of 10us, but the input is not acturally 10us, so it's not accurate. 
      And by NI example, I use the Loop timer.
      2. In "FPGA 1--Test DO and AO.vi", I find that the loop timer helps me to realize accurate time interval, however, it ignore the first time interval. Such as, t1, t2, t3, t4, with disired output A1, A2, A3, A4. It goes A1(t2), A2(t3), A3(t4), A4(t1). And in "FPGA 2--Test DO and AO.vi", it has same problem. DO0 and AO1 goes A1(t2), A2(t3), A3(t4), A4(t1). And AO0 is always ahead of DO of t1. 
       
      The people of NI forum advice that I should put AO0 and AO1 into one FPGA/IO node and use SCTL. But up to now, I don't find any example about it(Google or NI forum, maybe it's primary).  Mainly that AO0 and AO1 must go with different timeline, the dimension of input array is different.  Can anyone offer advice for me?
      Thanks
      Test.7z
    • By kpaladiya
      I would like to build a model using image data and NI-cRIO-9063 and NI 9264 for voltage control.
      for image, I made a script in python using OpenCV libraries that detecting some points . For voltage control, I use cRIO-9063 with NI 9264 voltage controller.
      My question is, I am new in LabVIEW and I don't have any idea how can I make a loop for voltage control in python. Is there any library available in python that directly connect cRIO and NI 9264 devices? if not then how can I combine my image data(which is in python) with cRIO device? I need argent help.
    • By Makrem Amara
      Hi there,
      I am working on a machine vision project with LabVIEW.
      The camera will locate some parts and send their coordinates via TCP/IP 
      and I created a client also with LabVIEW to display these coordinates here is how the communication going.
      First, if the camera detects something then msg will be sent to the client to inform him.
      then if msg was received correctly client responds with another msg to request the coordinates. 
      at last, the server sends the coordinates to the client. 
      here I faced some problems
      1- the msg sent are with variable length ("x=0,y=0,Rz=0"==> "x=225,y=255,Rz=5" ==> "x=225,y=255,Rz=90"  length vary between 16 and 22 ) with the constant "byte to read " it will not display the full msg.
      2-the client works fine but at a certain time, it shows errors like ("LabVIEW: (Hex 0x80) Open connection limit exceeded";;;;;; "LabVIEW: (Hex 0x42) The network connection was closed by the peer. If you are using the Open VI Reference function on a remote VI Server connection, verify that the machine is allowed access by selecting Tools>>Options>>VI Server on the server side"
       
       





    • By drjdpowell
      I am just starting on trying to be able to use Python code from a LabVIEW application (mostly for some image analysis stuff).  This is for a large project where some programmers are more comfortable developing in Python than LabVIEW.  I have not done any Python before, and their seem to be a bewildering array of options; many IDE's, Libraries, and Python-LabVIEW connectors.  
      So I was wondering if people who have been using Python with LabVIEW can give their experiences and describe what set of technologies they use.
×
×
  • Create New...

Important Information

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