LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Error Code 1604 - happens when a ring or enum is slected

I am writing a medium sized application which uses a queued state machine to handle user generated events. I am having this issue where when I am running the application and click on an enum with or picture ring, an error is generated. The source of the error is always on an invoke node or property node (disconnected from control and so they use an input reference). I believe the issue is related to open VI references which cannot be reentrant, but I'm having trouble trying to fix it.

 

The error code I usually get is 1604.

 

I know this is a vague description, but maybe someone in this community has seen this issue before?

0 Kudos
Message 1 of 11
(4,582 Views)

Well, the description of the error is fairly clear:

 


LabVIEW:  The Open VI Reference function does not support using the option 0x08 (Prepare for reentrant run) with the asynchronous call by reference options 0x80 (Prepare to call and forget) or 0x100 (Prepare to call and collect).


 

 

 

It's telling you that you're opening a VI ref and feeding into the options input a value which includes both 8 and one of the other two, which is an invalid combination. You need to find where you do this (I would suggest searching for all the instances of the open VI ref function) and then change it. The help for the Open VI Reference function has links to an example which show how to open such references.


___________________
Try to take over the world!
0 Kudos
Message 2 of 11
(4,579 Views)

I do not specifically use the open VI reference function anywhere in my program. Unless it is called as a sub-routine within an invoke node or property node.

 

Error 1604 only happens when there is a mouse down on an enum or ring and a selection is not made. For instance, when I mouse down on a picture ring, but wait to select the picture. There is no code (that I've created) that is executed upon mousing down on the picture ring, or upon selection. It is a control without any connections on the block diagram. The file I've attached shows what the UI looks like after mousing down on the picture ring.

 

The error also only occurs on invoke nodes and property nodes that use a reference to an object in the main VI.

 

So, I understand that it has something to do with a reentrant VI reference, but I don't know how to fix it. There is no way that I can figure out to change the "prepare for call and forget" option for an invoke node or property node. I want to understand what is the root cause here, so that I can fix it the proper way. Why would it only happen while waiting for a selection of a picture ring? What is LabView doing when I mouse down on a picture ring?

 

 

0 Kudos
Message 3 of 11
(4,509 Views)

I can't provide any meaningful answer without at least seeing the code. There is absolutely no reason a property node should return such an error and there's nothing special about the mouse down event. At most, there are things in LV which would make an OVR freeze until you complete them, but this seems to be a very specific error, not a freeze.

 

Show us the code and where the error happens. I want to see either the code itself or screenshots with probes or a video.


___________________
Try to take over the world!
0 Kudos
Message 4 of 11
(4,504 Views)

Ok, so it's been a while since my last post...But I've managed to isolate the error and represent the issue in a small VI. Check out the code that I'm uploading.

 

Why do you think error code 1604 is triggering. And what can I do to prevent this. In my large application, I'm updating cell values in tables fairly often and the user might concurrently be clicking the "tool selector." So I need to figure out a way to solve this issue.

 

Thanks.

0 Kudos
Message 5 of 11
(4,442 Views)

That's interesting...I'd definitely get NI to look at this. Looks like a bug to me. But, in the mean time, you can scrap the property node all together. The table control is an array so just use array functions to add and remove stuff from the table and wire them up to a local variable of the table. It should get you the same effect but get rid of the error. This is assuming this is the only method you get the error with. I tried a couple of others and got no error. Was it happening with other properties and methods also?

0 Kudos
Message 6 of 11
(4,426 Views)

I reported it here. That should be enough for NI to look at it.

 

There is also some more discussion on this topic on LAVA - http://lavag.org/topic/16809-error-1604-generated-on-set-cell-value/#entry102995


___________________
Try to take over the world!
0 Kudos
Message 7 of 11
(4,408 Views)

I was able to reproduce this in 2012 SP1. Reported as CAR 407633. 

 

Thanks for reporting this,

 

Regards,

 

Jeff Peacock 

 

Product Support Engineer | LabVIEW R&D | National Instruments 

0 Kudos
Message 8 of 11
(4,353 Views)

I am getting the same problem in LabVIEW 2017, in my case when I am in the Value Change event for an enum ring and set the Visibility property on another (different) ring. Is it meant to have been fixed?

 

[Edit] no it hasn't been fixed, the VI supplied by boochbrain still shows the problem in 2017.

0 Kudos
Message 9 of 11
(3,245 Views)

Still seeing this issue with 2020.  What's worse is that it's happening with a regular ring, containing only strings...

 

(The workaround I'm going with, although inefficient, is just to read the full table value, update the cell in the array, and then to write again.)

Message 10 of 11
(2,591 Views)