Jump to content

viSci

Members
  • Posts

    456
  • Joined

  • Last visited

  • Days Won

    17

Posts posted by viSci

  1. I often use variant attributes as a quick and dirty dictionary.  I found out that I could flatten my 'variant dictionary' and save

    the flattened string to a file.  I tried to unflatten the saved string and reconstitute the variant and its attributes but am getting an error 116 (Unflatten or byte stream read operation failed due to corrupt, unexpected, or truncated data.)

    I am using a variant constant because the variant dictionary I created has no datatype other than the attributes which are all 1D string arrays.

    I am beginning to think that this might not be possible to do, but thought I would check in to make sure I am not overlooking something.

     

  2. I am looking for alternatives to using Systemlink to manage a large network of WES7 cDAQ's.  I imagine there are many windows server tools out there to manage software deployment, replication, remote monitoring, etc.  I am hoping someone might have some experience in this area and could offer a few suggestions on tools that would work well for the NI ecosystem but not require being an IT specialist.  Thanks.

  3. Not sure were the 1024 comes in as AES key here is 32 bytes and the ReconFile path is 260 characters.  As you said to get 260 I would have to append two clusters.

    Here is my latest clusterasaurus...

    image.png

    Unfortunately this still is not satisfying the DLL.  It is not blowing up but returning an error indicating an invalid parameter so I might not be too far off...

  4. So does every *struct passed into a dll need to be flattened to a byte array? I guess in the previous case it only worked because I was passing a empty array in the cluster.

    So for something like this:

     

    // Structure to pass reconstruction parameters
    struct RECON_INFO_STRUCT
    {
        unsigned int        cpmBlkSize;
        unsigned int        sepTimeDelta;
        unsigned int        sepByChannelFlag; //0=no, 1=yes
        unsigned int        wavFormat; //0=mulaw, 1=pcm
        unsigned int        decryptFlag; //0=no, 1=yes
        unsigned int        AESKeySize; //0=128,1=192,2=256
        char                      AESKey[CRYPTO_KEY_MAX_LENGTH_BYTES];
        unsigned int        makeReadableAfterReconFlag;
        char                      reconFile[MAX_PATH];
    };

    STATUS __stdcall SRVIVR_API_ReconFile(void* handle, char* partDataFileName, RECON_INFO_STRUCT* pReconInfo, void* pNotifyCB, void* pCBArg);
     

    Do I need to manually flatten everything to a single byte array or is there some way to use this?

    struct.png

  5. Ok, that comment prompted me to dig some more into the IDD for the device and found that Length parameter, which I thought was the number of bytes in the data array is really the number of bytes in the data array plus 12 for the 3 long int parameters in the cluster.  Once I made that change it all started working.

    Thanks for your help!

  6. Was hoping someone might be able to give me a tip on this one...

    Trying to call the function below:

    typedef struct
    {
        unsigned int  Length;
        unsigned int  Id;
        unsigned int  TimeTag;
        char    Data[1024];
    }DATA_FRAME;


    int __stdcall SRVIVR_API_StoreData(void* handle, int partition,  int totalFrames, DATA_FRAME frameData[]);

    Here is what the import dll tool produces:

    1.png

    This does not look correct to me and produces the dreaded 1097 exception error.

    I modified the call to be:

    2.png

    Which I believe is closer to the intent of the original C function, but still gives me a 1097 error.  I suspect

    that somehow the array pointer that the function is expecting is not correct.  The frameData parameter is being passed

    into the function as a 'Adapt to Type', Array Pointer.  I also tried flattening to a single U32 array and passing that in as an array data type but still no joy.  Any ideas?

    BTW, I have had success calling many other functions from the dll of the form:

    int __stdcall func(void* handle, int param1,  int param2, etc);

  7. Have been looking at the OPC UA toolkit, it looks pretty cool and as you pointed out has compatibility with a huge selection of 3rd party tools and utilities.  It seems like the licensing is free for Linux cRIO's so would just need to purchase the $500 dev toolkit.  OPC UA also has a full selection of scaler and array data types and a pretty nice LV API.  I was wondering if anyone knows about the OPC UA History Data vi's.  It seems like a type of memory resident time series historian but was wondering if it uses any sort of database under the hood.

  8. Has anyone looked at NI's new Systemlink / Skyline technology?  It looks like a type of DDS running on RabbitMQ that is being used for all future LV software and package deployment for Windows and Linux platforms.  Skyline 17.5 has Publish Subscribe tag's, tag viewer and a new web dashboard that can bind to tags.  I was informed that in Q2 Skyline will have historical capabilities but am not sure if it could serve as a citadel replacement.

  9. Shaun - Thanks for the link.  There is a DirectShow rendering example given for mms video stream but I could not get it to work.  I tried to modify the URL for local media but no luck.  I will try to contact the originator of the library...

    bbean - Yes Blackmagic does have a nice app that works great.  I can use it to stream uncompressed AVI files to my SDI output.  The problem is that I need to do this programatically...

  10. I have a BlackMagic UltraStudio SDI device that connects to a PC via USB3 and provides SDI video input and output. 

    I was hoping to be able to generate AVI files in LV and render them via DirectShow to the SDI output but so far I can only get this to work in 3rd party video application software.

    I was wondering if anyone has had any luck using the DirectShow interfaces in LabVIEW and if they would care to offer some tips or example code. 

  11. The Typedef on the last line was just meant to indicate that the DLL function takes two parameters, the first is a pointer to a U16 and the second is a pointer to the data structure I am trying to build.  I tried as you suggested, to create a large U8 array and pass it in as a pointer to array and adapt to type.  It no longer crashes in edit mode and now waits until I run the vi :)

  12. I have create a LV wrapper for a DLL that crashes LV when the CLN is simply wired in edit mode and saved.  I will admit that the DLL prototype requires a rather obese LV cluster which is so large it freezes LV when probed but still I do not see any other way to convey the data.  Here is the diagram...

    LV will crash when I connect the cluster to the 2nd input of the CLN and then Save.

    The CLN function prototype is...

    int32_t LDR_GetCsmuDir(uint16_t *DirType, void *Response);

    The Response parameter is set to 'Adapt to Type', Pointer to Handle. 

    I also tried 'Handles by Value' as it still crashes.

    Untitled.png

    Basically I have a cluster of 256 strings each of which is 256 characters, which appears to be too much for LV to handle.  Perhaps there is a way to Malloc the data but that is outside my area of knowledge presently.

  13. It has been awhile (more like 6 years) since the great SVN, HG, GIT debate occurred in the LAVA community.  I thought it would be informative just to get a simple roll call of who has settled for what.  Rationales are optional, just wanted to get a head count...

    • Like 1
  14. At NIWeek, the new NI Package Builder was showcased.  It looks like an alternative to VIPM, is that correct?

    Did anyone notice if it is going to work with previous versions of LabVIEW or just 2017?

  15. I was dismayed when a large client announced they are abandoning their sizable investment in NI cDAQ HW to go with the Siemens LMS SCADAS system.   It got me wondering why NI does not offer something to compete with this type of Uber DAS system and software.  Certainly NI has the HW covered, although LMS has a better take on DAS HW with multi-functional inputs (voltage, current, PWM, etc).  I would love to hear your take on the subject... Just a side note that the systems I am talking about are fairly small < 32 channels, so it is not the large network based scalability of the LMS that is the selling point.  Rather it seems to be the desire to have full featured, fully integrated, off the shelf software supported by a larger company that is the draw.

×
×
  • Create New...

Important Information

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