elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


  Mostrar Mensajes
Páginas: 1 2 3 4 5 [6] 7 8 9 10 11 12 13 14 15 16 17 18
51  Programación / Programación C/C++ / Re: Problema de tiempo con memcpy. en: 24 Julio 2014, 19:08 pm
En realidad, al final, la salida será una sola imagen .raw (escrita en disco) generada a partir de las 'x' imágenes anteriormente mencionadas. Esta es una de las "piezas" del programa final si.
No se como se hará, pero se tiene que poder creo yo porque la cámara trae su propio software de captura, y me imagino que lo hará bien. (El motivo por el cual no usar ese software es porque hay que sincronizar el funcionamiento de una cámara con otra de otro fabricante)

Entonces lo que sugieres es que en lugar de añadir un delay capture todas las imágenes a tope y luego descarte las que sobren. Solo hay un problema y es que si elimino por completo el delay, el programa copia cientos de veces la misma captura, es decir: Ahora mismo la cantidad máxima de imágenes que puedo coger es 1024 (por un parámetro). Bien, si quito el delay la cámara en 3 segundos tendrá unas 95*3 imágenes, yo en memoria tengo 1024, es decir muchas repetidas.

Entonces como se cual quitar y cual no, porque además:

Pensad que la cantidad de imágenes que yo "cojo" ya no viene determinada por la cantidad de fps que tiene la cámara, si no por la velocidad del PC, y cuando alcanzo el tamaño máximo de mi buffer dejo de coger imágenes. Entonces puede ser que coja las 1024 imágenes en los primeros 1.5 segundos y luego nada.

PD:
Entonces una pregunta, si yo hago Sleep(10), esa función no me GARANTIZA que el proceso va a retomar su ejecución en 10 milisegundos ¿cierto?
Y esto es porque al suspender la ejecución de un hilo, otros entran a la CPU y la dejarán libre no se sabe cuando ¿correcto?
52  Programación / Programación C/C++ / Re: Problema de tiempo con memcpy. en: 24 Julio 2014, 18:50 pm
Ok, el problema es:

Tengo una cámara híper-espectral que hace fotos de una resolución 240x360 píxels, a 2 bytes por píxel.

Se supone que, como máximo, funciona a 100 fps pero en realdiad va a unos 95-96.

El caso es que (y esto lo he hablado con el fabricante), una vez se le da la orden de capturar (cam->StartCapture()) se pone a capturar imágenes al máximo de lo que puede (100 fps teóricos)

A mí me piden, entre otras cosas, regular los fps que da la cámara, para ello lo que hago es copiar desde la memoria de la cámara a la del pc (con memcpy) cada cierto tiempo (Sleep() ).

Y ese es el problema.

Saludos.
53  Programación / Programación C/C++ / Re: Problema de tiempo con memcpy. en: 24 Julio 2014, 18:41 pm
Entonces lo que trato de hacer es imposible ¿cierto?.

Supongo que lo único que podría hacer es buscar la manera de ajustar el valor del Sleep() (reduciéndolo) para llegar al valor que necesito, pero tiene pinta de ser muy complicado, porque unas veces serán 10 milis, otras 30, otras 50... además, por lo que entiendo, no puedo preveer cuantos procesos estarán activos en el sistema etc. así que no puedo saber como ajustar ese valor, ¿me equivoco?

¿Hay alguna manera mejor de hacerlo que con Sleep()?

Grcias y saludos.

EDITO: he probado a cambiar el while() por un for() pero me da la misma cantidad de operaciones. Gracias de todas formas.
54  Programación / Programación C/C++ / Problema de tiempo con memcpy. en: 24 Julio 2014, 18:16 pm
Hola a todos.

Estoy intentando desarrollar un programa que básicamente lo que tiene que hacer es un memcpy() cada cierto tiempo (tiempo muy bajo, 10 milis por ej.). La cantidad de memcpy() que hago la controlo con un contador, y el tiempo entre uno y otro con Sleep(). Siempre copio exactamente la misma cantidad de datos a memoria.

He comprobado que un memcpy() (junto con incrementar el contador) concreto cuesta hacerlo "0". Lo he probado con la librería <ctime>. Hago clock antes y después y, al imprimir la diferencia, da 0. También he imprimido los dos instantes (antes y después del memcpy y el incremento) y los dos son iguales.

Entonces por ej. si quiero que se realice dicho memcpy() cada 10 milis, en 3 segundos deberían hacerse 300 (o muy cerca de 300), pues a mí me salen 260.

No entiendo por qué pasa esto, ¿alguien puede ayudarme?

Gracias y saludos.

EDITO:
Un dato: ahora tengo el bucle para que, como máximo, haga 1024 veces memcpy(). Bien, si quito todo el delay (borro el Sleep()) llega a los 1024.
Y si le pongo Sleep(10) solo 260. No tiene sentido.
55  Programación / .NET (C#, VB.NET, ASP) / Dudas con Timer como sustituto de Sleep -- por precisión del tiempo en: 24 Julio 2014, 17:36 pm
Hola a todos.

Tengo un problema con la función Sleep() y es que el argumento que se le pasa solo puede ser un 'int', y yo necesito "programar" una tarea con más precisión en el tiempo.
Por ello he pensado en usar System::Timers::Timer.

He leído y probado un ejemplo en el que imprimo por pantalla un "HOLA" cada 3.12 segundo. El problema es que la tarea que yo necesito hacer cada 'x' tiempo recibe 3 argumentos y esta es la parte que no se hacer.

¿Alguien me ayuda por favor?

EDITO:
Ya he conseguido hacerlo mediante atributos de clase pero ahora tengo otro problema.

Programo el Timer para que haga su tarea cada 10 milisegundos (Timer.interval=10), y lo pongo a trabajar durante 3 segundos. Es decir, tendría que realizar dicha tarea un total de 300 veces pero solo llega a 260. Con Sleep conseguía hace muchas mas.
¿Alguien saber por qué pasa esto y/o sabe que puedo hacer?

Gracias.
56  Foros Generales / Dudas Generales / Re: Problema con un dll en: 21 Julio 2014, 22:29 pm
Es de una empresa llamada National Instruments, ya he intentado poniendome en contacto con ellos pero como yo no estoy usando directamente su software, si no que uso una API que necesita esa dll, me dicen que no me dan soporte.

Saludos.
57  Foros Generales / Dudas Generales / Problema con un dll en: 21 Julio 2014, 18:03 pm
Hola a todos.

He buscado por todas partes el archivo 'imaq.dll', hasta con buscadores rusos y chinos, y no hay manera de conseguirlo.

¿Puede compartirlo alguien que lo tenga por favor? Gracias y saludos.
58  Sistemas Operativos / Windows / Re: Problema con un dll en: 18 Julio 2014, 19:14 pm
Ok, gracias.

Si alguien puede compartir (si lo tiene) el nipalu.dll lo agradeceré mucho.
Ya que en TODAS las webs que veo en lugar de dejarte descargar el nipalu directamente, te ponen a descargar su pu.. mier... de "fixer" de dlls.

Saludos.
59  Sistemas Operativos / Windows / Problema con un dll en: 18 Julio 2014, 15:33 pm
Hola a todos.

Estoy intentando ejecutar una aplicacióm y me da error porque no encuentra "nipalu.dll".

He estado buscando mucho, en dll-files no está. Me he bajado bastantes programas de estos que "reparan dlls" y nada. Con google no encuentro nada mas que gente con el mismo problema pero nadie con solución.

¿Alguien tiene esa librería o sabe donde cosneguirla?

Gracias, saludos.
60  Programación / .NET (C#, VB.NET, ASP) / Problema al abrir puerto serie virtual con .NET en: 17 Julio 2014, 18:25 pm
Hola a todos.

Estoy trabajando con una cámara que se conecta al PC mediante una tarjeta y un puerto FrameLink. Dicho puerto trae un software que permite emular un puerto serie para comunicarse con la cámara.

El caso es que abrir este puerto con .NET (clase SerialPort, método Open())  causa una IOException, más abajo adjunto el StackTrace.
Se qué el puerto "virtual" funciona porque lo he probado con HyperTerminal, además he probado "SerialPort::GetPortNames()" y aparece mi puerto serie "virtual".
Sé que el programa detecta que existe el puerto serie virtual porque, si no, la excepción sería distinta (comprobado).

Con HyperTerminal me conecto con los siguientes parámetros:
Bits/segundo = 2400; Bits de datos = 8; Paridad = Ninguno; Bits de parada = 1; Control de flujo: Hardware.

¿Alguien puede ayudarme por favor?

Gracias y saludos.

Adjunto la excepción (quitando el try..catch del código):
Código:

Excepción no controlada: System.IO.IOException: El parámetro no es correcto.

   en System.IO.Ports.InternalResources.WinIOError(Int32 errorCode, String str)
   en System.IO.Ports.InternalResources.WinIOError()
   en System.IO.Ports.SerialStream.set_DtrEnable(Boolean value)
   en System.IO.Ports.SerialStream..ctor(String portName, Int32 baudRate, Parity
 parity, Int32 dataBits, StopBits stopBits, Int32 readTimeout, Int32 writeTimeou
t, Handshake handshake, Boolean dtrEnable, Boolean rtsEnable, Boolean discardNul
l, Byte parityReplace)
   en System.IO.Ports.SerialPort.Open()
   en main(String[] args) en c:\documents and settings\administrador\escritorio\
dan\src\appcamarasmotor_v2\appcamarasmotor_v2\appcamarasmotor_v2.cpp:línea 20
   en mainCRTStartupStrArray(String[] arguments) en f:\dd\vctools\crt_bld\self_x
86\crt\src\mcrtexe.cpp:línea 309

Adjunto el StackTrace (caputrando la excepción y imprimiendo el StackTrace):
Código:
TargetSite: Void WinIOError(Int32, System.String)

StackTrace:
   en System.IO.Ports.InternalResources.WinIOError(Int32 errorCode, String str)
   en System.IO.Ports.InternalResources.WinIOError()
   en System.IO.Ports.SerialStream.set_DtrEnable(Boolean value)
   en System.IO.Ports.SerialStream..ctor(String portName, Int32 baudRate, Parity
 parity, Int32 dataBits, StopBits stopBits, Int32 readTimeout, Int32 writeTimeou
t, Handshake handshake, Boolean dtrEnable, Boolean rtsEnable, Boolean discardNul
l, Byte parityReplace)
   en System.IO.Ports.SerialPort.Open()
   en main(String[] args) en c:\documents and settings\administrador\escritorio\
dan\src\appcamarasmotor_v2\appcamarasmotor_v2\appcamarasmotor_v2.cpp:línea 27

y el código:
Código:
int main(array<System::String ^> ^args)
{
try{

SerialPort ^sp=gcnew SerialPort("COM2",9600,Parity::None,8,StopBits::One);
if(sp->IsOpen){
Console::WriteLine("Ya está abierto");
sp->Close();
}
sp->Open();
if(sp->IsOpen){
Console::WriteLine("OK");
sp->Close();
}else{
Console::WriteLine("PUERTO CERRADO");
}
}catch(System::IO::IOException ^ioe){
Console::WriteLine(ioe->TargetSite+"\n\n");
Console::WriteLine(ioe->StackTrace);
}
}
Páginas: 1 2 3 4 5 [6] 7 8 9 10 11 12 13 14 15 16 17 18
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines