el 03-16-2013 05:34 AM
Despues de varios test, la apliacion se queda colgada, sin dar ningun error en depuración
Cuando hago el "break" de la ejecucion, el punto siempre es el mismo, la aplicación espera la ejecucion de un DS_GetDataValue que no llega.
Ejemplo:
void OPCCallback(DSHandle localDSHandle,int event, void *pUserData)
{
// variables locales
HRESULT hr = S_OK;
double value;
switch (event)
{
case DS_EVENT_DATAUPDATE:
// busco el localDSHandle
// localDSHandle == OpcHandle[i]
// Entonces
hr = DS_GetDataValue(OpcHandle[i],CAVT_FLOAT,&value,1,NULL,NULL);
// Otras sentencias a las cuales no llega a entra porque no finaliza el DS_GetDatValue
break;
}
}
Despues del "Break", pulso GO para continuar y no entra en las siguientes sentencias por que no finaliza el DS_GetDataValue,....
¿Por que puede estar ocurriendo esto?
el 03-19-2013 12:47 AM
Bueno, no tengo experiencia en DataSocket u OPC por lo que estas son simplemente consideraciones muy generales. Si embargo creo que deberías controlar el valor de OpcHandle[i] cuando entras en la función: en el código que has mostrado 'i' no está definido y no se ve qué valor tiene, deberías chequear que no haya errores en esta parte averiguando que el valor actual sea el mismo de cuando almacenas el handle en la variable. Por el otro lado, creo que cuando entras en la función ya tienes el handle del componente DS que la ha llamado en la variable 'localDSHandle' y podrías utilizar éste y ver si el problema se presenta de la misma manera.