LabWindows/CVI

cancel
Showing results for 
Search instead for 
Did you mean: 

datasocket queue error

Hallo,
I have datasocket running on two machine connected with a crossover lan cable.
One  dsp connection is opened as:
DS_check = DS_OpenEx (dsUrl, DSConst_WriteAutoUpdate, ClientEvent, NULL, DSConst_EventModel, DSConst_Asynchronous, &dsClientDataHandle);
 
 
When the program flow is in the acquisition loop in one computer :
do
 {
     check=Oo_win_ip_acq(0,0);                                                        //data are taken here and save in the global array spectrum
    DS_check = DS_SetAttrValue (dsClientDataHandle, "slaveSpectrum", CAVT_DOUBLE | CAVT_ARRAY, spectrum, sizeof (spectrum) / sizeof (spectrum[0]), 0);
 } while (comm.slaveLoop == 1); 
 
the program does not pass any more in DS callabck.  How can I make it pass without a brute-force call?
After a while I get this error:
NON-FATAL RUN-TIME ERROR:   Unknown source position, thread id 0x00000EF0:   Library function error (return value == -117 [0xffffff8b]). The deferred callback queue is full
 
Thanks in advance for the help,
regards,
Michele
 
 
0 Kudos
Message 1 of 3
(3,076 Views)
Hi Michele,

The DataSocket callbacks are not called asynchronously.  As events occur, calls to your callback function are queued (in the deferred callback queue) so they can later be processed when your program calls ProcessSystemEvents (or is executing the RunUserInterface call). To solve your problem, just add a call to ProcessSystemEvents in your loop.

Hope this helps.

Mert A.
National Instruments
0 Kudos
Message 2 of 3
(3,070 Views)

Hi Mert,

thanks for you kind help. The problem was solved as you suggested.

Regards,

Michele

0 Kudos
Message 3 of 3
(3,051 Views)