Programming a c application which is calling a *.so built by LabVIEW.

Hello all,
This question probably has been asked, but I can't find the answer.  So here's my question:
I have built a LabVIEW *.so in Linux and I want to call it from a "c" application.  The LabVIEW *.so is returning a cluster of strings and I want to know how to call it from my c application (memory allocation?).
Here's the *.so source code, the function is named "testvi":
Here's my c application source code:
#include <stdio.h>
#include <string.h>
#include "testclusterofstrings.h"
int main()
Cluster_Of_Strings clusterofstrings;
Testvi(&clusterofstrings);
printf("-------------\n");
printf("String_A: %s", (*clusterofstrings.String_A)->str);
printf("-------------\n");
return 0;
I'm getting the following output when calling my application:
LabVIEW caught fatal signal
13.0 - Received SIGSEGV
Reason: address not mapped to object
Attempt to reference address: 0x0x19f5c381
Segmentation fault (core dumped)
So, what is the proper way to do this?
Thanks,
Michel
Solved!
Go to Solution.

smithd wrote:
If its a labview-built dll and you're passing parameters by ref, I'm not too surprised you have to initialize it (although I would expect labview to be friendly enough to allocate the data structures for you). Maybe if you passed it a null pointer instead it would work? From your original post, maybe try this:
int main() {
Cluster_Of_Strings * clusterofstrings = NULL;
Testvi(clusterofstrings);
For some reason I remember reading that labview will interpret the null as a sign that it needs to allocate the structure, but I could be totally insane on that point.
If that doesn't work, then yes you'll have to allocate all the handles as appropriate. From <labview>\cintools\extcode.h you can see that a string is defined as follows:
typedef struct {
int32 cnt; /* number of bytes that follow */
uChar str[1]; /* cnt bytes */
} LStr, *LStrPtr, **LStrHandle;
Since you have size-0 arrays I think you really just need to call DSNewHClr(sizeof(int32)) which will allocate a handle with all 0s, and 0 is what you want. Final result would be...
int main()
Cluster_Of_Strings MeasInfo;
MeasInfo.String_A = (LStrHandle)DSNewHClr(sizeof(int32));
MeasInfo.String_B = (LStrHandle)DSNewHClr(sizeof(int32));
Testvi(&MeasInfo);
 Oh, and for the string functions, make sure you look at the built-in functions first before you make your own.
Actually, the whole thing is both a little easier and more complicated at the same time. LabVIEW is fully managed with its data types but you have to follow that management contract when you interface to LabVIEW code from C.
First, the first attempt with allocating a string handle with sizeof(int32) + sizeof(uChar) bytes without initializing the length element is wrong. That length element could contain any value and cause LabVIEW to wrongly assume that the handle is already big enough to fill in its data and not do anything and then writing over the end of the allocated buffer.
Also initialisation of the structure with NULL is not going to work. This cluster has to be provided by the caller as it is a fixed size data area passed in as a pointer. However initialisation of the string handles inside the cluster with NULL should work fine, since LabVIEW considers NULL handles as the canonical zero length handle.
However after you have called the LabVIEW DLL function you are the owner of any memory that was allocated by that function and returned to you, just as you would be if you had allocated those handles yourself before the call. So proper etiquete is to also deallocate it and this is not optional but a requirement or you create memory leaks. It doesn't get noticed here since your test program terminates anyhow right after but it will bite you badly in a bigger application if you forget this.
The code could then look something like this:
int main()
Cluster_Of_Strings MeasInfo;
MeasInfo.String_A = NULL;
MeasInfo.String_B = NULL;
Testvi(&MeasInfo);
printf("-------------\n");
printf("String_A: %s\n", LV_str_to_C_str(MeasInfo.String_A));
printf("String_B: %s\n", LV_str_to_C_str(MeasInfo.String_B));
printf("size %d", (sizeof(int32) + sizeof(uChar)));
printf("-------------\n");
  if (MeasInfo.String_A)
DSDisposeHandle(MeasInfo.String_A);
if (MeasInfo.String_B)
DSDisposeHandle(MeasInfo.String_B);
return 0;
// Returns the pointer to the string buffer in a LabVIEW string handle that has been made
// sure to be zero terminated.
char *LV_str_to_C_str(LStrHandle lv_str)
if (lv_str && !NumericArrayResize(uB, 1, (UHandle*)&lv_str, LStrLen(*lv_str) + 1))
LStrBuf(*lv_str)[LStrLen(*lv_str)] = 0;
return LStrBuf(*lv_str);
return NULL;
Rolf Kalbermatter
CIT Engineering Netherlands
a division of Test & Measurement Solutions

Similar Messages

  • Input parameter setting when calling a DLL(Built from LabVIEW and a kind of VISA communication driver) in Teststand.

    In labVIEW7.1 I wrote a COM port communications driver by using "VISA Write/Read". I put a string as the input of "VISA Write" and made it the input of the whole vi. Then I converted the vi into a DLL, which is called in Teststand3.1 by specifying DLL adapter. In "Edit C/C++ DLL Call" dialog, I pass a message of "60 6A 94 80 86 81" as the input parameter. My problem is I tried three kinds of methods to pass the message, see attached 1.jpg,2.jpg and 3.jpg. and found the first one sometimes doesn't work, the second work fine and the last doesn't work all time. I don't know why the first one and last one don't work well.
    Thanks!
    Jacky
    Attachments:
    31.jpg ‏38 KB
    11.jpg ‏36 KB
    21.jpg ‏49 KB

    Hi Srinivas,
    Just another note, I noticed that the Math Interface Toolkit version (MIT) 1.0 is not compatible with LabVIEW 7.1. You’ll need version 1.0.1. of the MIT toolkit in order for it to work with LabVIEW 7.1.
    The LabVIEW 7.0 lvanlys.dll is also attached. I had to rename it with a .txt extension, so you’ll want to delete the extension.
    Kileen
    Attachments:
    lvanlys.dll.txt ‏516 KB

  • Error in Calling a dll built in labview from Matlab standalone

    hello,
    The problem I encountered is in the use of the math interface toolkit. I
    created a dll which performs data fitting using a labview vi which i converted into a dll using the
    math interface toolkit.
    This dll is then called from a standalone matlab program. It works fine in the computer where I
    create the matlab standalone program and labview dll. Howerver when i export to another
    computer the matlab part runs fine but an error is reported when it tries to
    call the labview created dll.
    "One or more output arguments not assigned during call Parfit.dll"
    The files related to this problem in the math interface toolkit (the labview vi, the corresponding dll and the matlab .m and .fig files and the standalone exe are in the attachment and named MathITproblem.zip
    The matlab run time engine(for matlab 7) and labview runtime engine(ver 7.1) must be installed for this matlab file to run. the run time engines are downloadable from the web.
    Does any one know the source of this error or encountered it before?
    thanks
    Attachments:
    MathITproblem.zip ‏1263 KB

    Hi Srinivas,
    Just another note, I noticed that the Math Interface Toolkit version (MIT) 1.0 is not compatible with LabVIEW 7.1. You’ll need version 1.0.1. of the MIT toolkit in order for it to work with LabVIEW 7.1.
    The LabVIEW 7.0 lvanlys.dll is also attached. I had to rename it with a .txt extension, so you’ll want to delete the extension.
    Kileen
    Attachments:
    lvanlys.dll.txt ‏516 KB

  • Call an ABAP Program from Web Application designer

    Hi Gurus,
    I have an requirement in which I need to fetch an CSV file from the server and place the file into an internal table in R/3.I got the function module and wrote the program for this,but now I need to call this ABAP program from Web Application designer.
    To make it more explicit ,I need to call an ABAP Program /function module from the WAD.I am new to WAD Please help.
    Ankit

    Hi Ankit,
    take a look:
    /thread/725385 [original link is broken]
    WAD and ABAP
    How to call a ABAP or ABAP Class from the WEB
    /people/kai.wachter/blog/2008/03/11/how-to-write-own-items-in-bi-70-java-runtime
    Regards
    Andreas

  • How can I find the program which is calling my SAPscript??

    How can I find the program(std/Custom) which is calling my SAPscript form??
    Regards,
    Shashank.

    Hi
    check in NACE transaction or TNAPR table
    reward points to all helpful answers
    kiran.M

  • Unable to call an EJB which isn't in the same application as the calling client

    We're attempting to invoke an EJB running in a different O9iAS application from the calling client (servlet).
    We're told by our local Oracle support team that this isn't possible but we have no problem performing the same operation from within a Weblogic or WebSphere set up. Is this problem peculiar to O9iAS? We're told that even O9iAS rel2 does not support this type of operation. Does anyone know of a work-around that might help?
    Thanks

    John -- This should be possible but there were some problems with this in early releases. You may want to start by searching the
    j2ee forum http://forums.oracle.com/forums/forum.jsp?id=486963 as most of the J2EE questions get answered there.
    Thanks -- Jeff

  • Build Labview Application which loads functions dynamically

    I am not sure if this is possible for executables, but it works pretty well in the LabVIEW development mode.
    I have a LabVIEW program which calls some functions (sub-functions) dynamically. In the develop mode, the sub-functions are in separate *.llb files. When a subfunction is selected from the menu of the main LabVEIW program, the main application searches a particular location/directory for a particular *.llb file; if the *.llb is found, it loads the vi and runs it, if not, it tells the user that the function is not available. The advantage of doing this is that I can add/remove/modify these sub-functions simply by puting in or taking out the *.llb file from that directory without causing any problem on the main program.
    Would it be possible to do the same if I buid an LabVIEW executable application (I mean build/compile the main application first, and then add/remove functions by putting/removing some files in a directory)? If yes, then I can distribute new functions to users without having to re-compile the whole thing.
    Thanks.
    Ian

    Hello Andrew,
    When Using LOader method, there are a few things to take care of. It is not so terrible when you know what and why. Consider this If you change your executable, You have to rebuild and then you realize there was a small spelling mistake or a control was not aligned. Doing a double check is sometimes as important as good programming.
    1. Path Issues - These you will have whether you build executable or release it as a library. This happens if you use relative path.
    2. Use of native labview Vi's in your code - When the code changes, You want to distribute the new LLB. Well Use Save with Options and Choose "Application Distribution" Select "Entire Hierarchy", "Include Vi.lib Files" And "Runtime Menu" and "External Routines" If you want your App protected. Click Remove Diagrams. Again Make sure you don't lose your Original file if you choose this. All this saves the whole App as LLB.
    Then your Loader has to call your Main Vi dynamically. How difficult is the path Issue to Call One Main Vi in a Vi Library. There is no Licensing Issue here as LV itself gives you this option.
    I have used this method for a couple of 200 Vis or more Applications and constantly updated by changing the llb file without any hassle.
    Good Luck!
    Mache

  • WD navigation - Exiting application back to calling screen.

    Hi Gurus,
    Simple WD question. I'm developing an "exit" button that would enable the program to navigate back to the calling screen which is either an Iview or a UWL message.
    I tried finding snippet, tuts and reference codes but couldn't any.
    Is there any API or methods that enable me to retrieve the calling URL of the application? Or do I need a few more steps to generate/retrieve those URLs?
    Any gurus kind enough to help? Thanks alot!
    Regards,
    Jansen

    Janson,
    Try using Exit plugs to accompolish your requirement.
    1. In the Web Dynpro explorer expand the node <WD project> – Web Dynpro Components – <YourComponent> – Component Interface – Interface Views – <YourComponent>InterfaceView and then double-click on it.
    2. Select the tab "Plugs".
    3. Add a new outbound plug of type "Exit plug" (Mark checkbox "Exit Plug" in the window that pops up for the New Outbound Plug) and name it as "AppExit" and choose Next.
    4. By clicking "New", add a new parameter with name <b>Url</b> (Use exactly the same name Url) of type
    <b>String</b> and choose Finish.
    Now add the interface view controller usage to the required view from which you have to exit and go back to a URL.
    1. Select the Web Dynpro Components – <YourComponent> – Views – <YourView>.
    2. Select the Properties tab.
    3. Add the required usage of the controller <YourComponent>InterfaceView.
    Then, create a button in your view (say "Back") and associate it to the event / action handler.(say, onActionExit).
    In the  event handler write the code like this:
    public void onActionExit(com.sap.tc.webdynpro.progmodel.api.IWDCustomEvent wdEvent)
        // controller
        wdThis.wdGet<YourComponent>InterfaceViewController()
    .wdFirePlugAppExit(<<i>TargerURL</i>>);
    Please note that upon exiting, all the involved components will be destroyed automatically by the WD runtime.
    All the aforementioned points are available in the standard tutorial
    <a href="https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.km.cm.docs/library/webdynpro/inter-application-navigation%20in%20web%20dynpro.pdf">Inter-Application-Navigation</a>
    You may refer the same for any further assistance.
    Bala

  • Making exe of application which work fine with Web start.

    Hello guys,
    i am working on on-line casino gaming.First thing i want to explain to you is about my current mechanism for downloading game.
    I have used JNLP and web start to download all necessary files at client side and it works fine..At every time it checks new jars are there or not...
    Now i want to make the exe of my java application which i can give to client on movable device like compact disk..so client can install the application from anywhere and play casino games..
    Now I want to know how to make on-line application as executable (exe) and every time it checks for updates which is supported right now by jnlp file..
    which thing i have to consider,which tool is easy to use,which mechanism can solve my query....
    please help me out...
    thank you in advance...

    Hi
    Chris RENAUD 768,
    First of all the PDF files should be set to be read by the application you developed by default.
    To set the default program:
    Control panel \Programs \Default Programs \Associate a file or protocol with a program
    In IE8 There used to be a key called HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\AttachmentExecute\{0002DF01-0000-0000-C000-000000000046}  which stored the File Types that could either
    Auto-Open or not. We can create a .bat file to automatically add a value here to achieve the goal.
    The code is as following:
    @ECHO OFF
    reg query HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\AttachmentExecute\{0002DF01-0000-0000-C000-000000000046}
    if "%ERRORLEVEL%" EQU "1" (
    reg add "HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\AttachmentExecute\{0002DF01-0000-0000-C000-000000000046}" /f /v "PDF.File" /t REG_NONE
    Note: Please Back up the registry before you modified the registry and delete the key  {0002DF01-0000-0000-C000-000000000046} if it has existed in the registry before you ran the .bat file.
    Best regards

  • Doubt in creating program to display application logs

    Hi,
    I have doubt in creating a program to display application logs.
    The standard transaction code SLG1 has been used to display Application logs till now by the user.
    They came up with the new requirement on this.
    <u>The requirements were:</u>
    1)New custom program shoud be created like SLG1 with limited selection fields( data from, date to, Program name and User)
    2) Detail list should be displyed immediately when this program is executed because SLG1 gives Basic list,Detailed list which is getting displayed when 'Detail view' is selected in the first list.
    I have created one program with limited selection fields as per the requirement using the below function modules .
    BAL_FILTER_CREATE
    BAL_DB_SEARCH
    BAL_DB_LOAD
    and BAL_DSP_LOG_DISPLAY
    <u>Issue :</u> still I am getting the firt list.
    both Basic and Detailled lists are getting triggered at the FM BAL_DSP_LOG_DISPLAY.
    Is it only the way to copy and modify this FM.
    Could you please suggest me?
    Thans in advace,
    babu.
    Message was edited by:
            babu v
    Message was edited by:
            babu v

    Hello All,
    Thanks for your valuable suggitions.
    I have seen most of the demo programs.
    I found one fm'BAL_DSP_PROFILE_NO_TREE_GET' which avoids the tree list which is getting listed above the profile list.
    I have been searching alot to omit the Profile list. I searched alot to find any function modules realted to that.
    The requirement was only the Detail list should only be listed.
    Could you please suggest me to avopid that profile list also?
    Thanks in advance,
    babu
    Message was edited by:
            babu v

  • How to trace an application which is not in the current directory?

    Hi,
    When I use simple example 'Trace' to trace my application in current directory, it works well.
    But I cannot trace the applications which are in different directory or in an .jar file. Even I've already add it to the classpath.
    The following is my test:
    I put Myapp.class in .\classes
    java -cp .;.\classes com.sun.tools.example.trace.Trace Myappit shows me:
    java.lang.NoClassDefFoundError: Myapp
    Warning: classic VM not supported; client VM will be used
    Exception in thread "main" -- VM Started --
    -- The application exited --Can anyone help me ?
    thanks

    The following is my test:
    I put Myapp.class in .\classes
    java -cp .;.\classescom.sun.tools.example.trace.Trace MyappThere are two JVMs involved when you are tracing or debugging.
    Rather than putting the classpath on your command line, set it as
    an environment variable so that both JVMs can use it. That way, the
    second JVM (which is executing the Myapp class) will be able to find it.
    If your current directory is %JAVA_HOME%/demp/jpda, then this example
    will trace the SwingSet2 demo program:
    set CLASSPATH=".;%JAVA_HOME%/lib/tools.jar;%JAVA_HOME%/demo/jfc/SwingSet2/SwingSet2.jar"
    java com.sun.tools.example.trace.Trace SwingSet2Let me deconstruct the CLASSPATH:
    . is on the classpath so the first JVM will locate
    the com.sun.tools.example.trace.Trace class relative to
    your current directory. You may also use the absolute
    path instead of dot.
    %JAVA_HOME%/lib/tools.jar is there so both JVMs
    can locate the JDI (Java Debug Interface) classes in tools.jar.
    %JAVA_HOME%/demo/jfc/SwingSet2/SwingSet2.jar is
    there so the second JVM (the debugee) can load the
    SwingSet2 class..

  • Refresh problem of Webdynpro application which is wrapped in a BSP IFrame

    I have a BSP Iframe inside which I am calling a webdynpro application ('zwdc_re_replenishment'). The requirement is that this WD application should be reloaded whenever a timeout occurs. Currently, when there is a timeout, an error is shown.
    In order to achieve this, for this WD Application , I have a SICF node to which I have attached a customized Errorpage via the option 'Redirect URL'.
    Whenever the WD application undergoes a timeout error, my custom error page is called which is named as errorpage.htm. On this page in the 'OnInitialization event', I try to call the WD application URL again (via the following code) which should reload the application. But instead I get a blank page.
    CALL METHOD cl_wd_utilities=>construct_wd_url
      EXPORTING
        application_name = 'zwdc_re_replenishment'
      IMPORTING
        out_absolute_url = lv_def_url.
    response->redirect( url         = lv_def_url
                        permanently = 1 ).
    Just as a note I have already tried out the following methods as well but nothing works
    *navigation->exit( lv_def_url ).
    *navigation->call_application( lv_def_url ).
    Is this because my WD application is inside a BSP Iframe and therefore reloading it manually does not work ?
    Please help!
    Thanks.
    Sukanya

    Hi Thomas,
    First of all, thanks a lot for replying !!
    Sorry for the confusion. Although seems like you have answered my question already.
    Actually the requirement for embedding WDA inside a BSP Iframe came up since there are some WD report applications  that are accessed by very controlled environments in which the users were not able to close the WDA session directly (without the IFrame)  and were getting some errors. Hence the WDAs had to be wrapped inside BSP IFrame which solved the above problem.
    I am working with only one BSP app which has the Iframe and one WD app which is called within the BSP app.
    Now, the other requirement that came up was that whenever the WDA session inside the BSP IFrame expires, there should be no error page and instead the WD app should be reloaded.
    So  I was trying to reload the WD App in the following way.
    1. For the SICF node of WDA, I attached an errorpage.htm for all the tabs under the tab 'Error Pages'. I have defined this errorpage.htm inside the same BSP App which has got another default.htm page. So the BSP App has 2 views : default.htm which has the IFrame and Errorpage.htm.
    2. So now when the WDA expires, the events of errorpage.htm are called like OnInitialization, In this event I was calling the methods navigation->exit( 'URL of the same WDA' ).
    I did this because I wanted to reload the WDA whenever it expires. I tried to specify the WDA Url in the SICF node of the same WDA in 'Redirect URL' under the Error Page tabs but it didnot work.
    Now I realize this is not gonna work. I didnot want to modify the WDA and so I didnot specify any exit plugs in the WDA which would have taken care of reloading the WDA. But that seems to be the only way out.
    Actually speaking there are multiple WDAs which will open inside the same BSP IFrame via their own Application URLs. I have coded the BSP IFrame to read the URL Parameters and open up the corresponding WDA.  So now I have to define an exit plug in all of these WDAs.
    Do you suggest that this will solve the problem of WDA refresh ? Just to confirm.
    Thanks again.

  • Creating an application which uses NI-Daqmx driver

    Hello,
    I'm developing an application which uses NI-Daqmx driver and I need to deliver this application to end users.
    I currently have NI-DAQmx 9.7.0 installed on my computer which needed an installation of 1.55 GB.
    I got complaints from customers who want this application to run on a new machine without the need of installation of NI-DAQmx driver.
    My project contains the necessary dlls (NationalInstruments.Common.dll and NationalInstruments.DAQmx.dll) as referenced and I expect that build of the application along with these dlls work on a different machine somehow.
    Is there any way to provide such output that customers don't need to install NI-DAQmx?
    Do I have to add additional references to the project? If so, which ones should they be?
    Or can I have a smaller custom required installation of this driver which will not bother the customers?
    PS: I tried the output of the sample projects on a different machine which don't have NI-DAQmx installed. I got the same error.
    Thanks in advance.

    Greetings,
    You can have them install the DAQmx runtime engine which correlates with the version of DAQmx which is being used in the program you're distributing. This can be found on our website.
    Search "daqmx runtime engine x.x" and replace the x.x with your version number.
    Regards,
    Brandon V.
    Applications Engineer
    National Instruments 

  • Prob. exec. print job from RFC which im calling Web Dynpro java in Portal

    Hi,
    Ive got a problem executing a print job from an RFC which im calling in Java web Dynpro Application in Portal. Im using an Acess Method G: for Front End Printing but Order gets stuck with the Status "Waiting" "Front end unavailable".
    Any help would be greatly appreciated.
    Thanks in advance!!!

    HI,
    I dont think you would be able to do this. Instead, you need to get the content from RFC into WD java and print from the browser.
    Regards
    Srini
    Edited by: Sinivasan Rajamani on Jun 14, 2010 4:25 AM

  • To run a java program via a batch file,when called from a web server

    REM This batch file runs the Spider with the [-v] option.
    REM Lines 51 through 54 are simple DOS commands..they call the Spider
    REM The location of the Spider package is the important piece of information here...
    REM a batch file has access to the whole computer where the server resides.
    setlocal
    set JDK=C:\j2sdk1.4.1_01
    set PATH=%JDK%\bin;.;%PATH%
    CLASSPATH=%JDK%\jre\lib\*.jar;.;%JDK%\jre\lib\ext\*.jar;.;%CLASSPATH%
    java spiderpackage.EntryPoint -v
    endlocal
    I am trying to run this batch file from my web server.I can see nothing on my browser.I can run the same program from my machine but unable to run from web server.what should I do?

    I am making my question more clear...
    I have a Windows batch (*.bat) file that echoes some html, then calls a java program the output of which is html as well, then echoes the final html.
    To make sure that the java program gets properly executed, I set the necessary environment variables (e.g., JDK, PATH, CLASSPATH, etc.). The script looks something like this:
    setlocal
    set JDK=path_to_JDK
    set PATH=path_to_java
    set CLASSPATH=path_to_java_classes
    echo ^<html^>^<body^>
    call java foo
    echo ^</body^>^</html^>
    endlocal
    The idea, of course, is to call this script through a browser, on a web server.
    Curiously, both echo lines return to the browser just fine, but any output from
    the java program (which just writes html to STDOUT) does not make it back.
    Can someone explain to me why this is happening? How do I set things up so that the output (STDOUT and STDERROR) from the java program make it back to the browser?

Maybe you are looking for

  • How do I get more than 20 pictures in my Web Gallery

    I am making a web gallery with 162 photo's, but the "Refresh Preview" as well as the "Preview in Browser" only shows 20 pictures. In the galleries that I made before I had no problem with the amount of pictures. If anyone can show me what I should do

  • Duplicate vendor Invoice check in FB60

    Hi Experts, I want to put the duplicate invoice check while posting the vendor invoice through FB60. I want the system to check the duplicate invoices in combination of the Vendor code and vendor invoice number ( we put the vendor invoice no. in the

  • How to print a clear web form

    I use Oracle Forms6i to develop forms application, the forms server is installed in Solaris and the forms are displayed in web. My question is that I could print the forms in the Forms Runtime but I can't print them in web. Please tell me how I can d

  • Transport issue with SLD

    Hi, On PI 7.1 EHP 1. Trying to transport an interface to Production, Prod has its own SLD. When the Basis team import the change on the Integration Builder it is failing and giving error: Communication Component | SEDCLNT316: Obligatory transport tar

  • Programmatically Obtaining Channel Config data list

    Hi, How do I access the list of Communication channels in the system? I need a total list of ALL channels with data like this-> Comm Channel Name, Communication Component, Party Cheers, Earlence