Jump to content

drjdpowell

Members
  • Posts

    1,944
  • Joined

  • Last visited

  • Days Won

    166

Posts posted by drjdpowell

  1. 16 hours ago, hooovahh said:

    I agree, and it does at times sound desperate.  But also is this just how things are in the corporate world?

    This appears to be a pretty standard "hostile takeover" attempt, complete with all the usual things like a "poison pill" defence, and an appeal to shareholders to set up for a "proxy fight". Noone in the corporate world thinks any less of Emerson for doing a very normal business thing.

  2. 18 minutes ago, Neil Pate said:

    James, I found the NI automatically generated stuff quite hard to understand. I spent time stripping it down to the VIs with the black banners (under those are just the DLL calls) and actually it really is not complicated, its just packed up in a way that is completely not usable for me.

    I did the exact same thing!  Posted my version here: https://github.com/ni/grpc-labview/issues/206 

    I made a small helper class to allow easier configuration of each Procedure with a name and two message clusters:

    1717248984_gRPC206.png.71e5c43611ec2f24a6020eec3fbb3663.png

  3. NI is working on gRPC and LabVIEW.   I am trying to give them feedback on their Github page.  In particular, I think they are going the wrong way in trying to create a Scripting-black-box solution rather than a simpler gRPC Library, and that this is a major danger to the project.  gRPC looks like it could be important, and we have a stake in making this project successful. 

    If anyone else would like to comment on this, please see https://github.com/ni/grpc-labview/issues/208

  4. Your doing it in the UI thread (that would have been my number one guess).   Switching threads is one of the few things that can be multi-millisecond expensive.  Switch the Call to "any thread".

    Edit: actually, even a thread switch shouldn't take 40 milliseconds, but give it a try anyway.

    • Like 1
  5. 3 hours ago, Lipko said:

    On the caller VI level the insides of the read functions could be anything, including the two bad examples below that row.

    Exactly.  The function can do the approprioate thing, based on there being an upstream error.  Ususally that is doing nothing, sometimes it is doing what it would have even if no error, and occasionaly it is something different.

  6. On 11/10/2022 at 5:29 PM, infinitenothing said:

    Even if it was a single action, is there a promise to maintain that in future versions? I solved this issue by wrapping the graph reference in a DVR.

    I generally solve it by not forking the reference wire and not acting on it in parallel.  It's all in the UI thread anyway so there is no performance advantage to parallel execution.

  7. 1 hour ago, sam said:

    There's no difference besides Block-diagram horizontal saving  from when you individually place them.  You can even right-click and choose ignore errors inside Node, which I would not recommend.

    Actually, BOTH behaviours with or without "ignore errors inside node" set are different from error-chaining the individual subVIs (which is how I would argue stacked Property Node should behave).

    • Like 1
  8. Messenger Library is 4 levels, so I answered 3-6, though my more common use of Classes will be 1-3.

    Though I note that number of levels doesn't necessarily map directly on any meaningful measures of complexity, as it is easy to add additional parent levels that represent only simple capabilities.  My top-level Address class in Messenger Library is just "a thing one can send a message to", and primarily defines only a "Send" method.  It doesn't even define creation/destruction methods (those are in level two).   

  9. 1 hour ago, ShaunR said:

    You are not using SQLite for this?

    I have an SQLite logger, yes, and the more expert Users do use it.  But even there hard to read error messages are a burden.  Especially the poor first line, as teh first line is what appears in the list of log entries, as in the "Error 63" shown here, which was a failure to find a TCP Service (because the service was not running). 

     

    2022-11-01 13_50_49-10_45_36 from WatchdogEXE.png

  10. I was hoping to get an "easy win" of improving error communication, without the cost of custom code to intercept and translate individual errors into more User-friendly ones.  Of course, custom messages is what one should do for the "expected" errors (such as the User not plugging something in, say, or selecting a file of the wrong type), but you can't anticipate more than a small subset of possible errors.

    I should say my particular use case involves a large set of third-party code that can throw errors (often without error codes!), plus a variety of different categories of "Users", including not just "Operators", but subject-matter experts in the hardware and some of the third-party packages, who need to be able to use error information to debug problems in their areas.  I need to be able to present arbitrary errors in a way that is most helpful to them.

  11. This is a question to ask how people display errors to non-programmer Users.  

    An example of a current Error Mesage that might be displayed to a User of one of my programs is this:

    466796922_2022-10-3110_00_55-Technobabble.viBlockDiagram_.png.4588bdd4f26e8616bcfc71c3cefd15e0.png

    The problem I find is that to a many, if not most, Users, this comes across as "Error N ocurred at blah, blah, blah, I'd better report this to the programmer".  Their eyes have glazed over at the VI name, long before getting to the useful info that might actually help them fix the problem themselves (like realizing that they haven't pointed to the right folder where the file exists).  I tend to get reports like "Error X happened", or even "It didn't work" .   This is particularly bad with Error 1172, a .NET exception, which is full of .NET mumbojumbo like "invocation" and "inner exception".

    I would rather have error dialogs like this:

    1983046712_2022-10-3110_26_33-Technobabble.viBlockDiagram_.png.f1d13091c164045941a69c02faa1a661.png

    Here, the info useful to the User is directly on the first line, followed by clear description not cluttered by techy-sounding fluff.  Details only important to me, the Programmer, are at the back, where I don't care if the User has stopped reading.

    However, I am not sure how to programatically reorder Error dialogs in this way.  The important key phrases such as "File Not Found" are buried in unstructered text.  What have other people done?

  12. 4 hours ago, Rolf Kalbermatter said:

    And together with the SO_EXCLUSIVEADDRUSE flag this makes new requests to create a socket on the same port fail with an according error, since the port is technically still in use by that half dead socket. That socket gets eventually deleted and then a new Create Listener call on that port will succeed, unless someone else was able to grab it first.

    Are Listener ports affected by this "half-dead" issue?  I would have thought this is just and issue of TCP Connections (with a connected remote party) rather than a Listener.

×
×
  • Create New...

Important Information

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