Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - SARGE553413

#61
Muchas gracias, una respuesta muy completa.

Saludos.
#62
Hola a todos.

Tengo que desarrollar un programa para controlar una cámara que se comunica con el PC mediante un puerto FrameLink. Para ello la cámara trae un .dll para poder trabajar con este puerto. Sin embargo no trae ni .h, ni .lib, ni documentación ni nada.

Mi pregunta es primero, como poder usarla desde un proyecto de c++/cli en visual studio.

Saludos.


PD. : La otra pregunta es si dentro del .dll puede haber algo que me ayude a saber que métodos hay y como usarlos
#63
Ok, gracias, ya he entendido.

Saludos.
#64
Ok gracias por las respuestas.

Lo que se me pide es que la cámara haga unas 30 fotos por segundo. El problema ahora es que la API de la cámara solo trae una función que escribe directamente en disco cada fichero BMP que genera, con lo que consigo unas 108 imágenes pero en varios segundos, 5 o así. No se que haré, pero eso ya está fuera del tema de este hilo.

He estado trabajando con estas máquinas y si que es verdad que son muchísimo mas lentas que el portátil que uso ( y éste es mas viejo que cagar), así que pasar de lo que sea a char* no va a ser un problema.

Gracias y saludos.
#65
Hola a todos.

Mi pregunta es: si tengo un método inline en una clase A, y lo utilizo desde otra clase B, ¿lo que ocurre literalmente es que se incrusta el código escrito en dicho método en donde hago la llamada? ¿Evito entonces la llamada a la pila?


class A{
  ...
  inline string read(){
    return algo->read();
  }

};



int main(){
  A a();
  string aux=a.read();
  while(aux==""){
    aux=a.read();
  }
}

//¿Es equivalente a?:
int main(){
  A a();
  string aux=a.read();
  while(aux==""){
    aux=(a.algo)->read();
  }
}


Gracias y saludos.
#66
Hola a todos, tengo problemas para conseguir interrumpir la ejecución de un hilo que está "sleeping" y no entiendo por qué, adjunto el código:
Código (C++) [Seleccionar]

void pr2(void){
try{
                       Object ^o=gcnew Object();
ParameterizedThreadStart ^ths=gcnew ParameterizedThreadStart(prueba2);
Thread th(ths);
th.Start(o);
th.Interrupt();
}catch(ThreadInterruptedException ^the){
//Hacer algo
}
}

void prueba2(Object ^o){
try{
Monitor::Enter(o);
for(int i=0;i<5;i++){
Thread::Sleep(1000);
}
}catch(ThreadInterruptedException ^thi){
throw gcnew ThreadInterruptedException();
}finally{
Monitor::Exit(o); //<==¿Esto está bien aquí?
}
}

El problema mas grave es que despues de "interrumpir" el hilo, el programa sigue en ejecución, lo tengo que terminar con el admin. de tareas.

El segundo problema es que en prueba2() capturo la excepción y la vuelvo a lanzar, pero pr2() no se entera y no entiendo por qué.

¿Qué es lo que hago mal?

Además, entiendo que lo de Monitor::Enter() es como el sychronized() de java, ¿me equivoco?.

En tal caso, para poder interrumpir la ejecución de un hilo sin que haya error, el hilo tiene que haber hecho Monitor::Enter() antes?

Gracias y saludos.
#67
Ok, gracias.
#68
Hola a todos.

Tengo un bloque 'try' dentro del cual hay 5 llamadas a metodos que lanzan InvalidOperationException.
Me gustaría saber, en el bloque 'catch', cuál de los 5 métodos ha lanzado la excepción, para imprimir el nombre del método por pantalla.

¿Cómo puedo saber que método ha lanzado la excepción, si todos lanzan la misma?

Gracias y saludos.
#69
Entendido, muchas gracias.
#70
Cita de: eferion en 10 Julio 2014, 12:46 PM
Cuando tu haces una conversión explícita, lo único que sucede es que le estás diciendo al compilador que sabes que el dato se va a tratar de forma diferente... por lo que evitas la aparición de warnings. Sin embargo la información almacenada en memoria es exactamente la misma.

Gracias por la respuesta.

Pero quiero decir, si unsigned char var de 0 a 255 y char de -128 a 127, podrán cambiar algunos bytes no?
Es decir, si tengo un insigned char c=255 y lo casteo a char, entonces ya no será el byte que era, porque char no llega hasta 255, ¿me equivoco?

EDITO: Lo acabo de comprobar con 255, 120, 122, 130 y no cambia, no lo entiendo.