Hello everyone,
I am working on a labview program that uses parallel execution, and I am running into a possible problem. Please bear with me, as sometimes it is difficult to explain things happening in Labview in text alone. :) This application reads data from a server that we have in one of our labs via an ActiveX component. This server is known as a TIU server. The server contains various data including part numbers, serial numbers etc. It sends this data out in three different signals. A sequence count, an ASCII high, and an ASCII low. The sequence counter sends data in the following manner. When the sequence count is 0 and both ASCII high and low are NULL, then a new part number sequence is about to begin. When the count sequence changes to "1", then the next two string charaters listed under ASCII high and ASCII low represent a number that is a "Function ID". There are several of these, and each function ID contains different information either a part number, a serial number, etc. Once this is read, and it is determined that you are looking at the correct Function ID, the next Count shows how many charaters are to follow, and then you read each set of two ASCII characters and concatenate them together until you build the entire ASCII sequence as one variable and the sequence is complete.
There are several equipment cards attached to this TIU server, and each card is free wheeling it's data out. As soon as power is applied, it will continue to send out all of its function ID's sequentially (Function ID 0-9) in order, in a circular fashion at a 1 Hz. rate. A really strange system to be sure, but it is a limitation that I have to deal with. So now that I have laid a bit of the background on this, here is the problem. Occasionally, (maybe one out of 20 trys), the data seems to get slightly corrupted. For example, in the enclosed code, I ran it 40 times, reading the same part number each time. In theory, it should always be the same result. But it is not. I am wondering if there is an issue with running the "READ TIU SERVER.vi" in PreAllocated clone reentrant execution mode? Perhaps on occasion, one of the instances does not fully close, before another instance begins, and a few bits get flipped around? I suppose it is possible that occasionally the TIU server is actually putting out erroneous data (and I am actually reading everything perfectly), but it is a fairly mature system, and I have not gone down that path yet. I have included the .vi that I am using to read the server data "test.vi", and the "Read TIU Server.vi" that is set to Preallocated clone reentrant execution. In this example, the "test.vi" is only a single instance, but in the actual program, I am running 20-30 of these, as Preallocated clone reentrant execution as well. As there are 20-30 cards on each TIU server to get information from. I am hoping that this makes sense, and that I have laid it out in a logical fashion. Sort of hard to explain in text sometimes. Thanks for the help....