Jump to content

Elktro

Members
  • Posts

    18
  • Joined

  • Last visited

Posts posted by Elktro

  1. Does the DLL use any VIs that are not part of the DLL? I.e. does it do any dynamic loading of external VIs as part of any of the code that would run in its load proc?

     

    The MBT.dll is used to connect to a Wago Modbus/TCP module and a series of labview vi are provided as wrappings for function calls in MBT.dll. So I very much doubt that it would load dynamically any labVIEW VIs.

  2. I'm using labview verison 2011 sp1 (11.9.1f2 (32-bit)) and I am trying to compile, but I run to error.

     

    I am getting following error:

     

    The build was unsuccessful.

     

    Possible reasons:

     

    Error copying files.
    Source: C:MyTempF02MBT.dll
    Destination: C:Documents and Settingsbuildfolderdatadata0MBT.dll
     
    source does not exist

     

    Details:

     

    Visit the Request Support page at ni.com/ask to learn more about resolving this problem. Use the following information as a reference:
     
    Error 7 occurred at AB_Destination.lvclass:Copy_File.vi -> AB_Source.lvclass:Copy_SourceItem.vi -> AB_Build.lvclass:Copy_Files.vi -> AB_Application.lvclass:Copy_Files.vi -> AB_EXE.lvclass:Copy_Files.vi -> AB_Build.lvclass:Build.vi -> AB_Application.lvclass:Build.vi -> AB_EXE.lvclass:Build.vi -> AB_Build.lvclass:Build_from_Wizard.vi -> AB_UI_Frmwk_Build.lvclass:Build.vi -> AB_UI_FRAMEWORK.vi -> AB_Item_OnDoProperties.vi -> AB_Item_OnDoProperties.vi.ProxyCaller
     
    Possible reason(s):
     
    LabVIEW:  File not found. The file might have been moved or deleted, or the file path might be incorrectly formatted for the operating system. For example, use as path separators on Windows, : on Mac OS X, and / on Linux. Verify that the path is correct using the command prompt or file explorer.

     

     

    Which is very strange because some of my vi are indeed using MBT.dll but not from "C:MyTempF02" directory, and the startup vi is running just fine without any errors as are the vi's that are using the MBT.dll.

     

    I have added MBT.dll library to my project and location in the properties dialog shows the real location not the "C:MyTempF02" where the compiler tries to find it.

     

    I have also tried to just make a new build specification (by clicking it and selecting New -> Application (exe)), but still the same error occures. 

     

    What to do?

  3. I have a subvi A which takes as an input an arbitrary sized array of double values. The subvi A calls a subvi B which is a reentrant.

    Now I would like to call the subvi B for each double member of the input array. This would be no problem if I could use for loop.

    However I want call the subvi B for each double member simultaneously. The subvi B has an output value.

    A parallel for loop could be a solution, but that is only available in LabVIEW 2009.

    Is there anyway to do this with labVIEW 7.1? Sounds something that could maybe be done with dynamically called subvis, but Is there any neater way?

  4. I am customizing a push button control. I added a regular push button control on the front panel and navigated through advanced > customize. I wanted to delete the shadow background of the push button, but wasn't able to delete any of the picture items.

    As a work a round I resized the shadow pictures to small sizes and made them transparent.

    But how on earth do I remove them completely?

  5. Is it possible that you are creating the DAQ task in some VI that is being called using the Run VI method of VI Server, and that VI is going idle and thus throwing out the newly created task?

    I'm not quite sure when subVI is in a idle state, but the SubVI that creates the task goes into "SubVI waiting to run"-state. But how can I make a subVI not to go idle when exiting from a subVI?

  6. I have been trying to create a channel with DAQmx Create Channel (AI-Voltage-Basic) in a Sciware GOOP class. The DAQmx gives me a task, which I start and then direct the task to the appropriate data member of the class. So far everything goes fine.

    However, when I retrieve the task from the data member to acquire a voltage value, I get the following error:

    Error -200429 occurred at DAQmx Read (Analog DBL 1Chan 1Samp).vi

    Possible reason(s):

    Measurements: Value passed to the Task/Channels In control is an empty string (or I/O control).

    The value must refer to a valid task or valid channels.

    So where did the task disappear?

    Please, see the attached code.

    DAQmx_task_test.zip

  7. To Retrieve previously created object, named instances can be use. However, I found that if I have class A with child class B, and I have created an object by class B, I cannot retrieve the object by calling the object creator of the parent class A. No problems with retrieving the object with the object creator of the child class B.

    Is there a way to retrieve object by its instance name with the object parent class?

    Workarounds are welcome too.

    Using LabVIEW 7.1

  8. Do you have a "num" field in both the parent and child?

    Could it be that you're setting the parent value and reading the child value or vise versa?

    Yes, both should have num field as B class inherits it from its parent class classA, which has a num field.

    I don't quite see what you mean. How could the instances write each other's data members, if they are clearly in their own separate sequences?

  9. Using SciWare's GOOP Developer 2.3 I have made ClassA and a child class B, which both have their own increment() virtual method. The base class method increments data member num by 1, and the B class increment data member num by 3. Both methods give incremented value as an output. The data member num has also a getter.

    I have made the demo below to illustrate my question.

    post-11857-126780088462_thumb.gif

    The two instances of the ClassA and B are called by their own implementation of increment and after incrementation num value is get. The base class ClassA part works as intended: num value is incremented and the value gotten from the increment method is the same as the value gotten from the getter. The child class B part, however, doesn't work the same way: the num value is incremented, but increment method return 0, although the getter shows that the value is indeed incremented in each loop execution.

    Here is the front panel after while loop has executed 3 times:

    post-11857-12678008813_thumb.jpg

    So why the 0 output?

  10. QUOTE (normandinf @ Jun 26 2008, 04:36 PM)

    Well, from the part of your program you've shown, num2 doesn't change and will always be equal to abc. num3 = num2 - abc is therefore always 0...

    Not necessarily. If function() gives different values, abc will change. So num3 = num - abc is surely 0 first but not necessarily after that.

    The LabVIEW program of yours doesn't exactly do waht does the C-program. function2(num3) is not called wjen num3=0 as it should.

    Ilkka

  11. QUOTE (ned @ Jun 26 2008, 03:19 PM)

    Okey... The thing I meant is that function() should be called only once between do and while. So for example this is not allowed:

    do{

    }...

    QUOTE (ned @ Jun 26 2008, 03:19 PM)

    In LabVIEW you don't need the variable "num" since it's already provided within a while loop, at the "increment" terminal (the little i in a box). You can connect that to a case statement; in case 0 you run function() and in the default case you pass the value straight through.

    It would help if you post your LabVIEW code (or at least a screenshot) so we can see what you've tried to do, and comment on it more specifically.

    Here is a simplification of the problem:

    post-11857-1214492827.jpg?width=400

    This program will initialize the feedbacknode only once (Global initialization). I want it to initialize every time as new number is directed every 500ms, but this must happen inside of the innermost while loop. I could initialize the feedback node before the while loop, which means that first I need to call the "function()" outside of the innermost. And that I do not want to do.

    Ilkka

  12. I have not been able to find a solution to how to initialize feedback node every time while loop executes so that the initialization is done inside the while loop. Global initialization will not work, of course.

    Basically I want to convert this C-code to LabVIEW code:

    do{

    int num=0, num2;

    do {

    int abc = function();

    if (num = 0)

    num2 = abc;

    num++;

    int num3 = num2 - abc;

    function2(num3);

    ...
    }while(stop());

    ...

    }...

    function() has two restriction it can be called only once and it has to be in the inmost loop.

    Ilkka

    PS. What a crappy indentation feature!

×
×
  • Create New...

Important Information

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