BB10 Cascades: call a function in C++ of QML

Hi all

I can't call to a function of a C++ in QML class after transfer an one qml to another object.

Each file has QML to a C++ file, where I call the functions.

Here is my code

the first page: main.qml

ListView {
...
onTriggered: { 

                    // Create the content page and push it on top to drill down to it.
                    var newPage = pageDefinition.createObject();
                    // Set the content properties to reflect the selected image.
                    var objectPage2 = objectPage1.getobjectPage2();

                    newPage.object2 = objectPage2;

                    // Push the content page to the navigation stack
                     navigationPane.push(newPage);
                }
        }

the getobjectPage2() function is in the file object1.cpp

Object1.cpp

Object2* Object1::getobjectPage2(){
    Object2* obj = new Object2();
    return obj;
}

Main2. QML

Page {
    property variant object2

    onCreationCompleted: {

        object2.callfunction();
    }
Label {
          text: object2.getTitle
       }
}

object2. HPP

Q_PROPERTY(QString getTitle READ getTitle WRITE setTitle NOTIFY titleChanged)

Q_INVOKABLE void callfunction();

So, when I run the program, the works of object2.getTitle, I can get the value but I can't call the openlibrary() function. I tried to write a qDebug() inside the function but is not even go there.

The function has the label of Q_INVOKABLE so I do not understand why it works for items with Q_PROPERTY but not Q_INVOKABLE.

Can someone help me understand what the problem is?

Thank you

Thank you for responding.

I figured it using another method:

in object1.cpp, I used:

qmlRegisterType("mylibrary.program", 1, 0, "object2");

and in main2.qml:

attachedObjects: [
        QTimer {
            id: timer
            interval: 900000
            onTimeout: {
                object2.setCallsWebService();
            }
        },
        object2 {
            id: object2
        }
    ]

With that, I am able to call the functions I want in main2.cpp.

Tags: BlackBerry Developers

Similar Questions

  • call the function onCreationCompleted c ++ in qml

    I currently have a problem with the c function call ++ QML.

    Œuvres of normal calls. But when I call a function in onCreationCompleted, he cannot access qml object on the page.

    For example:

    {Page}

    onCreationComplete:

    {myFunction() ;}

    Button {}

    ojbectName: "button1".

    }

    }

    MyFunc access using findChild button1.

    But this return 0 x 0, means the button does not exist.

    So how do I access button1 in c ++ to what page is loaded?

    I have posted from a phone, so sorry if there is no error.

    Look, we can't access the qml object when the page is created (we call it in onCreationCompleted). I bypassed by calling the function after navigationpane.push.

  • Call the function QML from C++ (simple question)

    I guess that's a pretty easy question but I'm a bit new apart from development c ++ of BB10. I have a QML file in the assets folder called Functions.qml which has only onne inside functions.

    import bb.cascades 1.3
    
    Page {
        objectName: "funct"
        function printStat() {
            console.log("hello");
        }
    }
    

    In one of the functions in applicationui.cpp there is a function called resendNotification() (you may know this code from the model of the app without head)

    void ApplicationUI::resendNotification()
    {
        InvokeRequest request;
        request.setTarget("com.example.TestNotificationService");
        request.setAction("com.example.TestNotificationService.RESET");
        m_invokeManager->invoke(request);    // --> call the printStat() function of Functions.qml file
        Application::instance()->minimize();
    }
    

    My question is, before you minimize the app How can I call the function printStat() of the qml file? I have always developed my apps in QML so never had to deal with c ++. Should be easy enough to call a function well.

    Thank you in advance!

    first step is to find the object by ObjectName using findChild, usually from your element root (navigationPane).
    example:
    NAV-> findChild ("myTextField")

    If you have the object of another source that is fine too, of course.

    second step is to use QMetaObject::invokeMethod with the object and the name of the method.
    Example:
    QMetaObject::invokeMethod (container, "setText", Q_ARG (QVariant, text));

  • Can headless part of the application calls a function QML?

    Normally, when you write code in c ++ in the part of the user interface of the code, I am able to call the function of any file QML by writing the code below.

    QmlDocument *qmldoc = QmlDocument::create("asset:///Functions.qml");
    AbstractPane *root = qmldoc->createRootObject();
    QMetaObject::invokeMethod(root, "printResult");
    

    In headless of demand, I create another qml file, called "NotificationHandler.qml" in the current folder of the game without head. In one of the file c ++ without head when I write the same thing, it gives an error indicating that

    C:/bbndk/target_10_3_0_698/qnx6/usr/include/bb/cascades/resources/qmldocument.h:366: undefined reference to `bb::cascades::QmlDocument::QmlDocument(QUrl const&)'
    

    Below, you will find all the code inside the service.cpp which is the game file without the application head.

    #include "service.hpp"
    
    #include 
    #include 
    #include 
    #include 
    #include 
    #include 
    
    #include 
    
    using namespace bb::cascades;
    using namespace bb::platform;
    using namespace bb::system;
    
    Service::Service() :
            QObject(),
            m_notify(new Notification(this)),
            m_invokeManager(new InvokeManager(this))
    {
        m_invokeManager->connect(m_invokeManager, SIGNAL(invoked(const bb::system::InvokeRequest&)),
                this, SLOT(handleInvoke(const bb::system::InvokeRequest&)));
    
        NotificationDefaultApplicationSettings settings;
        settings.setPreview(NotificationPriorityPolicy::Allow);
        settings.apply();
    
        m_notify->setTitle("NotificationWork Service");
        m_notify->setBody("NotificationWork service requires attention");
    
        bb::system::InvokeRequest request;
        request.setTarget("com.example.NotificationWork");
        request.setAction("bb.action.START");
        m_notify->setInvokeRequest(request);
    
        onTimeout();
    }
    
    void Service::handleInvoke(const bb::system::InvokeRequest & request)
    {
        if (request.action().compare("com.example.NotificationWorkService.RESET") == 0) {
            triggerNotification();
        }
    }
    
    void Service::triggerNotification()
    {
        qDebug() << "first";
    
        QmlDocument *qmldoc = QmlDocument::create("asset:///NotificationHandler.qml");
        AbstractPane *root = qmldoc->createRootObject();
        QMetaObject::invokeMethod(root, "startNotificationService");
    
        qDebug() << "second";
        // Timeout is to give time for UI to minimize
        // QTimer::singleShot(2000, this, SLOT(onTimeout()));
    }
    
    void Service::onTimeout()
    {
        Notification::clearEffectsForAll();
        Notification::deleteAllFromInbox();
        m_notify->notify();
    }
    

    I use the same logic, but apparently it is forbidden to treat the QML files in without the request or I have made a serious mistake. Could you please help?

    I thank very you much.

    usually the part without head does not reference libraries of stunts because they have a serious memory footprint.
    The part without being limited in memory head, which gives it its own UI isn't usually a good idea.

  • How to call the function cascade BlackBerry

    I begineer in blackberry c ++.

    I do two class is testobject and second in test .i call the onther text function average () and nexttext();

    so please how to call this function.

    // Default empty project template
    #include "TestObect.hpp"
    
    #include 
    #include 
    #include 
    
    using namespace bb::cascades;
    
    TestObect::TestObect(bb::cascades::Application *app)
    : QObject(app)
    {
        // create scene document from main.qml asset
        // set parent to created document to ensure it exists for the whole application lifetime
        QmlDocument *qml = QmlDocument::create("asset:///main.qml").parent(this);
    
        // create root object for the UI
        AbstractPane *root = qml->createRootObject();
    
        // set created root object as a scene
        app->setScene(root);
    }
    
    void TestObect::test(){
    
        qDebug()<< "****************Naveen";
    }
    

    I insert also declared in the header file.

    Q_INVOKABLE Sub test();

    then I create another test class.

    /*
     * test.cpp
     *
     *  Created on: Apr 2, 2013
     *      Author: nksharma
     */
    
    #include "test.h"
    
    test::test() {
        // TODO Auto-generated constructor stub
    
    }
    
    void test:: nexttest(){
        qDebug()<<"***********Next test*********"
    
    }
    test::~test() {
        // TODO Auto-generated destructor stub
    }
    

    error in the file namespace,

    here in file herder

    the namespace error

    /*
     * test.h
     *
     *  Created on: Apr 2, 2013
     *      Author: nksharma
     */
    
    #ifndef TEST_H_
    #define TEST_H_
    
    class test {
    public:
        test();
        virtual ~test();
         Q_INVOKABLE void nexttest();
    };
    
    #endif /* TEST_H_ */
    

    You have a space between the colon and the n in:

    void test:: nexttest()
    

    Another thiing, if you are using Q_INVOKABLE, you must declare Q_OBJECT in your front header file public:

     


    If you're still having problems, try to clean up the project with Project > clean...

  • How to call a function in c ++ QML?

    Hi all

    In my application, I saw two QML and a class of CPP.

    Saying one of my root qml: main.qml is a root page, which displays a list. And the line of the list is an another qml (Customrowlist). And I put the contextProperty for main.qml in the PRC and I need to call a function in the PPC of

    Customrowlist.QML.

    I want to call the deleteAccountData(..,..,..) function. Customrowlist.qml, so how can I do.

    Here is my code

    hand. QML

            TabbedPane {
    
                //property Page about
    
                id: tabbedPane
                showTabsOnActionBar: true
    
                Tab {
                    title: "Manage Accounts"
                    onTriggered: {
                        objectAM.fetchAccountData();
                    }
                    imageSource: "asset:///images/list.png"
                    NavigationPane {
                        id: navPane
                        Page {
                            Container {
                                background: back.imagePaint
                                layout: StackLayout {
                                }
                                ImageView {
                                    imageSource: "asset:///images/head.png"
                                    scalingMethod: ScalingMethod.AspectFit
                                    opacity: 1.0
                                }
                                ListView {
                                    id:savedaccount
                                    objectName: "savedaccount"
                                    listItemComponents: [
                                        ListItemComponent {
                                            type: "item"
                                            CustomListRow {
                                            }
                                        }
                                    ]
                                }
                            }
                            actions: [
                                ActionItem {
                                    id: about
                                    title: "About"
                                    imageSource: "asset:///images/info.png"
                                    ActionBar.placement: ActionBarPlacement.InOverflow
                                    attachedObjects: [
                                        ComponentDefinition {
                                            id: aboutPageMA
                                            source: "about.qml"
                                        }
                                    ]
                                    onTriggered: {
                                        var profilePage = aboutPageMA.createObject();
                                        navPane.push(profilePage);
                                    }
                                },
                                ActionItem {
                                    id: help
                                    title: "Help"
                                    imageSource: "asset:///images/help.png"
                                    ActionBar.placement: ActionBarPlacement.InOverflow
                                    attachedObjects: [
                                        ComponentDefinition {
                                            id: helpPageMA
                                            source: "Help.qml"
                                        }
                                    ]
                                    onTriggered: {
                                        var profilePage = helpPageMA.createObject();
                                        navPane.push(profilePage);
                                    }
                                },
                                ActionItem {
                                    id: settings
                                    title: "Settings"
                                    imageSource: "asset:///images/settings.png"
                                    ActionBar.placement: ActionBarPlacement.InOverflow
                                    attachedObjects: [
                                        ComponentDefinition {
                                            id: settingsPageMA
                                            source: "Settings.qml"
                                        }
                                    ]
                                    onTriggered: {
                                        var profilePage = settingsPageMA.createObject();
                                        navPane.push(profilePage);
                                    }
                                }
                            ]
    
                        }
                    }
                }
    
                attachedObjects: [
                    GroupDataModel {
                        id: feedsDataModel
                        sortingKeys: ["text"]
                        sortedAscending: false
                        grouping: ItemGrouping.None
                    },
                    DataSource {
                        id: feedsDataSource
                        source: "mydata.json"
                        type: DataSource.Json
                        onDataLoaded: {
                            feedsDataModel.clear();
                            feedsDataModel.insertList(data);
                        }
                        onError: {
                            console.log("Error Occured" + errorMessage);
                        }
                    },
                    ImagePaintDefinition {
                        id: back
                        repeatPattern: RepeatPattern.XY
                        imageSource: "asset:///images/bg.jpg"
                    }
    
                ]
            }
    

    My Customlistrow.qml

    import bb.system 1.0
    import bb.cascades 1.0
    import bb.data 1.0  
    
          Container {
                layout: AbsoluteLayout {}
                Container{
                    id: usr
                    layoutProperties: AbsoluteLayoutProperties {
                        positionX: 0.0
                        positionY: 0.0
                    }
                    background: Color.create ("#ffffff")
                    preferredWidth: 768
                    preferredHeight:120
                    Container{
                        layout: AbsoluteLayout {}
                        ImageView {
                            id:accountimg
                            imageSource: ListItemData.account
                            preferredWidth: 78
                            opacity: 1.0
                            layoutProperties: AbsoluteLayoutProperties {
                                positionX: 10.0
                                positionY: 16.0
                            }
                        }
                        Label {
                            id: username
                            text: ListItemData.username
                            textStyle.base: SystemDefaults.TextStyles.TitleText
                            multiline: true
                            textStyle.color: Color.Black
                            textStyle.textAlign: TextAlign.Left
                            layoutProperties: AbsoluteLayoutProperties {
                                positionX: 110.0
                                positionY: 25.0
                            }
                        }
                        ImageButton {
                            defaultImageSource: "asset:///images/delete.png"
                            pressedImageSource: "asset:///images/deletepressed.png"
                            preferredWidth: 78
                            opacity: 1.0
                            layoutProperties: AbsoluteLayoutProperties {
                                positionX: 680.0
                                positionY: 16.0
                            }
                            attachedObjects: [
                                SystemToast {
                                    id: myQmlToast
                                    body: username.text
                                }
                            ]
                            onClicked: {
                                myQmlToast.show()
                                objectAM.deleteAccountData(username.text,password.text,"asset:///images/twitter.png");
                            }
                        }
                        Divider {
                            layoutProperties: AbsoluteLayoutProperties {
                                positionX: 0.0
                                positionY: 118.0
                            }
                        }
    
                    }
    
                    gestureHandlers: [
                        LongPressHandler {
                            onLongPressed: {
                                id:finalx.play();
                                secondcontainer.visible = true;
                            }
                        }
                    ]
    
                    onTouch: {
                        if (event.isUp ()){
                            initialx.play();
                            secondcontainer.visible = false;
                        }
                    }
    
                    animations: [
                        FadeTransition {
                            id:finalx
                            toOpacity: 0
                            duration: 300
                        },
                        FadeTransition {
                            id:initialx
                            toOpacity: 1
                            duration: 300
                        }
                    ]
                }
            }
    

    in my PPC

    QmlDocument *qml = QmlDocument::create("asset:///main.qml").parent(this);
    qml->setContextProperty("objectAM",this);
    
    void AccountManager::deleteAccountData(QString user,QString pass,QString imgSource){
    SystemToast *toast = new SystemToast();
    toast->setBody("Entered delete account!!!");
    toast->show();
    }
    

    I got your problem. Your CustomListrow does not receive the reference to your context "objectAM".

    Please update your main.qml with the following... function and store the reference to the global object and then from your call of customListRow as "Qt.objectAM.deleteAccount ();

    In the hand. QML on finished creation

    onCreationCompleted: {}
    Qt.objectAM = objectAM;
    }

    In CustomListRow...

    onClicked: {}
    myQmlToast.show)
    objectAM.deleteAccountData (username.text, password.text, "asset:///images/twitter.png");
    Qt.objectAM.deleteAccountData ("Me", "pwd", "asset:///images/twitter.png");
    }

    Hope it will work.

    Thank you

  • Calling JavaScript function from c ++

    Hello

    I need to call a function javascript from c++ code. I have a webview in which an html page is opened.

    I can connect to c ++ js using navigator.cascades.postMessage. I have to call vice versa.

    c ++ for js now.

    Concerning

    Hello

    I tried another way of calling JavaScript function continue in every 5 seconds.

    Steps to follow:

    1 import im .js QML file.

    2. create a function in QML and call the java script of QMLfunctuion function.

    3 the signal of the CPP in every 5 seconds and connect this signal to function in QML whare you call java script function.

    4. it indirectly calls the java script function.

    Thank you

    Anand

  • Transfer while calling the function of a trigger

    Hello

    I would appreciate if someone can point me in the right direction. So I have a trigger (TableAR_BU) on a table table. This trigger, I have a logic to call the function, and inside this function, I'm just a select statement of a few other tables that the table table.
    Function is supposed to return me 'Y' and it done correctly returns me 'Y' if I select the double feature. -Select the Function1 (100) twice;

    But when I call the trigger function, it returns me 'n'. So after investigation, I found that the select statement (selection of table) inside the function returns NULL when called from trigger.
     
    DROP TRIGGER TableAR_BU;
    
    CREATE OR REPLACE TRIGGER TableAR_BU
    BEFORE UPDATE
    ON TableAR_BU REFERENCING NEW AS NEW OLD AS OLD
    FOR EACH ROW
    declare
     localcontext varchar2(32000) := '; Context : ';
     sqlstmt varchar2 (2000);
    
     Status varchar2(1);
    
    Status := Function1(:new.Id);
    
    
    End;
    /
    
    
    function Function1(al_Id in TableAR.Id%type)
    RETURN  varchar2 is
    
    lsItemId TableAR.itemId%type;
    
    Begin
    
    Select itemId into lsItemId
    from TableAR
    where id = al_Id;
    
    
    
    Exception
    
    End Function1;
    Suggestions or comments appreciated.

    Edited by: Eclipse01 may 1, 2012 11:29

    The problem is that a level trigger line on table cannot query table or whatever it is that questions table call. In the middle of a SQL statement, the table is potentially in an invalid intermediate state if Oracle cannot guarantee that queries on the table return consistent or reasonable results so it does not allow queries of this type.

    99 + % of the time, it's a good thing because it means that you are trying to use triggers for something they are not designed for (in addition to creating applications that are terribly difficult to manage because an action like update a line will eventually create a huge cascade of effects). Most of the time, you are much better to reconsider the architecture and the displacement of the function call out of the trigger and in a sort of API that wraps the UPDATE statement (that is a stored procedure that made the UPDATE and calls the procedure).

    In the <1% of="" the="" cases="" where="" you=""> really want to do in a trigger, you would need a combination of objects (or a trigger composed containing several sections in 11 g). You would need
    -A package with a collection of table primary keys
    -A before the declaration that clears this collection
    -A level trigger line which inserts the: new. ID in the collection
    -A trigger statement that iterates over the collection and calls the function after.

    That, however, is a lot of moving parts to deal with, so it dramatically increases the complexity. If you only want to consider if you are really convinced that you must use triggers in the first place.

    Justin

  • How to implement a callback to the help function call library function node in LabView?

    I try to call a fuction from a SDK.dll library by using the node call library feature. The SDK has been provided to

    me and I don't have the source code, just the .dll and .h files.

    The SdkSetPropertyEventHandler function has a function of recall as one of its parameters. How to apply the

    callback using the NSI node? I'm a good programmer LabView but this is my first time using the library to call

    Function node. I read all the info I can find on the web site of NOR and the discussion Forum, but can not understand

    This one out. I'm using LabView 8.6.

    The deacribes SDK.h function as:

    Function: SdkSetPropertyEventHandler

    (SdkSetPropertyEventHandler) SdkError SDKAPI
    SdkCameraRef inCameraRef,
    SdkPropertyEvent inEvnet,
    SdkPropertyEventHandler inPropertyEventHandler,
    SdkVoid * context);

    //
    Description:
    Registers a callback function to receive the status
    change the notification events for the States of property on a camera.
    //
    Parameters:
    In: inCameraRef - designate the object camera.
    inEvent - designated one or all the events will be completed.
    inPropertyEventHandler - designate the pointer to the callback
    function to receive the camera property-related events.
    inContext - designated application information must be passed
    way to the callback function. All the data necessary to
    your application can be passed.
    Output: no
    //
    Returns: A sdk errors.
    -----------------------------------------------------------------------------*/

    A separate header called SDKTypes.h file contains the following data:

    typedef SdkUInt32 SdkPropertyEvent;
    typedef SdkUInt32 SdkPropertyID;
    typedef void SdkVoid;

    typedef struct __SdkObject * SdkBaseRef;
    typedef SdkBaseRef SdkCameraRef;

    /*-----------------------------------------------------------------------------
    SdkPropertyEventHandler
    -----------------------------------------------------------------------------*/
    typedef SdkError (SDKCALLBACK * SdkPropertyEventHandler))
    SdkPropertyEvent inEvent,
    SdkPropertyID inPropertyID,
    SdkUInt32 inParam,
    SdkVoid * context);

    Thanks for your help.
    Alejandro

    Andrew_E wrote:

    Hi Rolfk,

    You are absolutely right. This article describes what you were talking about? I'm just trying to get as much information as possible on this thread if the solution is easier to find for the future. Thank you.

    Yes, but I find the idea of using .net to call a LabVIEW VI as callback function C a bit as using a roll of Steam ironing your pants. Why do it? Well the steamroller has extra security guards that make it less likely that you'll break your pants in the process, but it's not elegant IMHO.

    Write a C DLL that translates between a C callback and a user event LabVIEW using the PostLVUserEvent() of the interface of the kernel to run LabVIEW function seems so eleganter for me. Yes, it's a bit of programming in C, but good!

    Rolf Kalbermatter

  • Call library function node

    When using a call library function node, and the program came out, I get an error "has encountered a problem and needs to close" having to do with ntdll.  It does not stop the program from running properly, but it's annoying.  Any ideas?

    You should NOT specify the full path to a DLL system in the configuration dial the node of the library. This mess something in the newer versions of Windows. Instead just enter the name of the DLL only. It is sort of a bug in LabVIEW not automatically detect the system paths and shorten the path accordingly in itself, but this is how things have been for a long time and you just need to be a little careful.

    Also the return value must be really set up to be an integer of size of pointer, since a HANDFUL is really a pointer under Windows and that the first parameter is also better configured as such. The way you did works very well for LabVIEW 32 Bit but will misbehave in LabVIEW 64 Bit.

  • What is the right way to specify the location of the shared library in an a .lvlib function call library function node?

    I'll have a bit of a problem with how to specify the location of library shared in a call library function node it is a VI that is part of a library of LV. Here's a little background which may help.

    I do a lot of measures using spectrometers photo from several manufacturers.  Someone in my company developed a C DLL library, which provides a simple API for all the different spectrometers. To facilitate this DLL to use in LabVIEW, I wrote a .lvlib that wraps all the functions.  When I want to use the API, I simply include the .lvlib file in my project that allows me to drag and drop the wrapper s VI on my block diagram. When I created the .lvlib of VI, I specified the path in the call library node. /. * so it will always look in the local application to the DLL directory when I run.

    The problem is, when I load demand, LabVIEW you asks for the location of the DLL even if it's just there in the local directory! I tried to put copies of the DLL in the directory with the .lvlib, but he still refuses to find the DLL loading.  What I am doing wrong?

    You should in this simple case enter the full path to the DLL by navigating to it. If the DLL is on the same volume/drive that the VI containing the call library node LabVIEW will be internally store the relative path from the VI to the DLL (but still show the absolute path). If you move the DLL and screw together (so the relative location of the DLL to the VI remains the same) LabVIEW will always find the DLL.

    I don't think that the lvlib would add nothing to that.

  • Crash when moving from a structure in a call library function node

    I am trying to use a type of Fortran (which I think is similar to a struct) in a LabVIEW call library function node.  I read a few remedies to this topic, but I'm not quite sure if I need to add the name of the parameter list of the node structure.  Now, when I run my VI it closed just LabVIEW entirely with no message.  I've attached the VI that I use and code source fortran, which compiles in my .dll.

    Any help is appreciated.

    Do you know if Fortran passes parameters by value or by reference?  I never used it.  A very quick search on the internet gives to think that the parameters must be passed by reference.  If this is the case, then you must pass the entire cluster as the parameter single, similar to Fortran statement.  You must also change the order of cluster to match the order in the Fortran statement.  Try the attached VI.

  • Call the function in LabView from a DLL, and then access the global variable of DLL

    I've created a DLL in LabWindows with a function and structure.  I want to call the function from LabView and then access the overall structure.  I am able to call the function in the DLL with a "call library function node" and has access to the return value, but I can't understand how to access the overall structure.  The structure is declared in the header DLL with __declspec (dllimport) struct parameters file.

    Is it possible to access this structure without using the library of network variables?

    My guess is that you need two bytes of padding after "in_out" and another to two bytes of padding after "anin."  The reason being that ints are 4 bytes, and most of them C compilers will align on 4-byte boundaries.  The struct will naturally start to such a limit (in fact, in Windows, it will probably start to an 8 byte boundary).  If you then count bytes in your structure, you are 70 byte after "in_out."  70 is not divisible by 4, so you need 2 bytes more to reach the next 4 byte boundary.  You can also you could reorganize your struct so that "anin" follows "in_out" and this is probably the best option if it won't cause you other problems.

    Unlike most C compilers, LabVIEW compressed structures as closely as possible, without filling.  I don't know enough about the history of LabVIEW and internal parts to explain the reasons and to do this performance penalty, but, as choice of LabVIEW "endianness", it is probably a remnant of the first versions of LabVIEW that were running on the Mac.

    If for some reason you want to force your C struct to match package LabVIEW, you can use the #pragma pack (x) directive, but I wouldn't recommend that here because you can control the C and LabVIEW.

    EDIT: in the cases where it was not clear, add padding to your cluster of LabVIEW, insert appropriate size or items at the place desired in the cluster.

  • help with call library function node

    I have problem with node function call library that I try to use velleman k8061 dll file to get this working labview

    all I'm trying to get the same problem

    but I chose one to explain it

    SetDigitalChannel
    Syntax
    PROCEDURE SetDigitalChannel (CardAddress: Longint;) Channel: Longint);
    Parameters
    CardAddress: The address of the previously opened card.
    Channel: Value between 1 and 8, which corresponds to the output channel to be resolved.
    Description
    The selected digital output channel is activated.
    Example of
    BEGIN
    SetDigitalChannel (0, 1);

    now, when I try to call the function of library in k8061.dll node and set up 2 a card address and one for the channel

    address of card type: type numeric & statistics: signed 32 bit intger

    channel type: numeric type & data: signed 32 bit intger

    function prototype

    void setdigitalchannel (int32_t, intg32_t channel address);

    I also configure error call library function node checking up

    now that I run it, I get error 1517 produced and tell me this mismatch between the calling conventions?

    problem solved

    thanx

  • How to identify which switch in the Panel called the function?

    Here I have some 192 switches and 192 leds corresponding to each switch,

    If a switch is on(say 10th) consequence (10th) led should light up.

    I want to use the same function for all pairs of led switch.

    all I could do was to check the switch in a loop and then set the individual leads, but I find it very little effective way to do it.

    int switchOnOff (int, int int event control panel CVICALLBACK,
    void * callbackData, int eventData1, int eventData2) is the function.

    None of these arguments I can use it to extract what (the unique id for this turnout) switch called the function so that I can pass corresponding led glow?

    It occurred to me now that the table is not necessary at all: you can simply assign to each switch the corresponding ID led the callbackData, so that the code is even simpler than my previous:

    // At panel load:
    SetCtrlAttribute (panelHandle, PANEL_SWITCH1, ATTR_CALLBACK_DATA, (void *)PANEL_LED1);
    ...
    SetCtrlAttribute (panelHandle, PANEL_SWITCH192, ATTR_CALLBACK_DATA, (void *)PANEL_LED192);
    
    // In the control callback
    GetCtrlVal (panel, control, &sts);
    SetCtrlVal (panel, (int)callbackData, sts);
    

    To answer your last question, "Management Board" means immediately after the call to LoadPanel.

Maybe you are looking for