Jump to content

ShaunR

Members
  • Posts

    4,303
  • Joined

  • Days Won

    234

ShaunR last won the day on September 7

ShaunR had the most liked content!

Profile Information

  • Gender
    Male

LabVIEW Information

  • Version
    LabVIEW 2009
  • Since
    1994

Recent Profile Visitors

23,189 profile views

ShaunR's Achievements

  1. Awesome. I was struggling with C malarky. Since it's hard for me to use extcode.h, I usually find the types and paste them in the header of whatever I'm using. However. I thought the InstanceDataPtr was a void * so I was using prototypes like this: Makes sense, right? WRONG! InstanceDataPtr is a typedef which means you can do things like *data = (InstanceDataPtr)malloc(sizeof(MyManagedStruct)); Can't do that with a untypedef'd void * so the compiler was bailing with: That caused me to try all sorts of pointer voodoo which would only work for a pointer-sized variable since: Looking at your replies it became obvious you were able to do something my compiler was complaining about and It was unlikely to be the compiler. This is why I do LabVIEW. lol
  2. The CFLN has a page for callbacks. These are useful in certain rare cases but there is very little information available about how to use them, MgErr and InstanceDataPointer are defined in extcode.h and, it seems, InstanceDataPointer is a pointer passed by LabVIEW but there the information ends. Does LabVIEW free the InstanceDataPointer? - it is readable in the Abort, Reserve and Unreserve. Are we limited to a pointer sized variable? It's a (void *) so can we resize the memory it points to and, if so, does LabVIEW free that? (unlikely). Who owns that pointer? Does someone have a working, concrete, example (including C code) of the DLL side of these functions and how to dereference, write to and free the InstanceDataPointer? Does someone have skeleton templates for these functions that can make life easier for users like me, that know enough C to be dangerous?
  3. I know this trick and it used to work but it seems to now be marked as a "toolkit" VI and it doesn't matter where you save it.
  4. Well. I removed my offerings from Lavag about 4 years ago, so it works But the real reason i removed them was that there used to be a size limit and I ran out. I deleted all files so I could post images in the threads going forward. You'll also find a lot of my old posts that no longer have images.
  5. Hmmm. Can't back-save a non password protected VI? That's new ... and how do I set my VI's to do that?!
  6. The usual solution for this kind of thing is RPC. I'm still struggling to understand the need for thunking. I might be missing something but If you are calling a 32 bit DLL on a machine, I expect LabVIEW 32 bit is being used to do it. In the couple of years I've been doing LabVIEW, I've never needed to do this. I wrote a network thingy a long time ago (Dispatcher) with similar characteristics. It was a publish/subscribe RPC but with an emphasis on data streaming. Servers would tell a broker what functions or channels they supported and the and clients would connect or call the functions directly on the the servers. I didn't use network streams but maybe they were not available then. It sounds like this is something similar.
  7. I don't really understand why you want a DLL at all but calling a 32 bit DLL from 64 bit is called "thunking" and you really, really don't want to go there. If it's just a case of choosing a 32 bit or 64 bit depending on the LV bitness then the CLFN wildcards will do that for you (for different platforms too).
  8. Some things that need to be done so it doesn't crash arbitrarily (not particularly you, just commenting on the latest incarnation). EVP_DigestFinal_ex mdlen parameter needs to be pointer to value instead of value as it returns the length, Return values need to be used (and checked). Currently the functions return Void when they should be I32. Need to check the MD_CTX pointer isn't 0 for each function. Edit. almost forgot. Remove EVP_cleanup(). In versions prior to 1.1.0 it will crash other functions that use EVP and after 1.1.0 it's a no-op.
  9. Not mine. It's just two unconnected error clusters. For this reason I have a VI that I wrote in 2009 similar to what NI eventually eventually implemented (except it defaults to 4). . This is the diagram
  10. Error 4 (EOF)still really annoys me. I still maintain it should be a warning and not an error. Every time I have to use my filter error to prevent passing it through I curse and wish a plague on NI. lol
  11. There is an opk package in one of the feeds if it's not there already. Chances are, if it has SSH, it'll have compatible binaries. NIlibeay is just NI's compilation of OpenSSL.
  12. Nice work. Glad you got there.
  13. The destroy should be an Unsigned Pointer Sized integer (Passed by value) rather than adapt to type. You can also set the nodes to "Run in any thread" Rolf got there 10 secs before me.lol Untitled 1.vi
  14. I don't think you can see the wood for the trees. I am saying I can't supply the actual code I used because it's commercial but I can help you "discover" how to do it which isn't bound by commercial restraints.
  15. That is the old way. The EVP_Digest interface abstracts away the different hashes into unified set of functions. All that is needed is a while loop where they have two update functions in the example about 2/3rds of the way down in that link..
×
×
  • Create New...

Important Information

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