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 - Timerlux

#11
CitarDespués unicamente cojes el byte que quieras enviar, y lo envías junto con la posición en la que se encuentra en tu archivo

Esa es otra cosa que todavía no se como sera la mejor manera de Hacerlo

- Un array de 2 dimensiones?
  Cambios(posicion, byte)
  que tal se llevan los arrays de 2 dimensiones con Winsock?

- Un array de string
  Cambios("23#45") 

Teniendo en cuenta que la mi prioridad es la rapidez, no se que hacer

;D ;D
#12
La historia es que yo no uso ningun archivo, me ahorro ese paso.

Ni si quiera uso una Picturebox en el servidor para contener la imagen capturada, en su lugar uso las APIS  "CreateCompatibleDC", "CreateCompatibleBitmap".

No obtengo el "Byte Array" de un archivo previamente guardado, lo obtengo directamente de la imagen capturada.

El dilema ahora es que para usar el metodo de comparar cambios en imagenes , necesito comparar diferencias entre 2 "Byte arrays" y me tarda mucho Milisegundos entre (100 y 400), parece mentira pero puede que me no compense hacer comparaciones, si bien en la velocidad de transmision de datos ganare mucho, en el procesamiento de la imagenes perdere mucho, necesito encontrar un codigo rapido que haga las comparaciones arrays y me de otro array con los cambios, ahora estoy con eso solo he encontrado un codigo que me puede resolver la papeleta pero tengo que depurarlo y entenderlo muy bien.

Saludos  ;D ;D ;D

#13
Hendrix se puede hacer de forma cutre, si cojes el array de bytes del bitmap con 4 bits (16 colores) u 8 (256) bits de definicion ,si te coinciden muchisimos pixel pero pierdes mucha calidad.

Con "color real" 24 , 32 bits el minimo e inapreciable cabio de luz , cambia todos los pixels, nigun fotograma es igual al anterior aunque lo parezca, te lo digo por experiencia
#14
Si señor ,no se me habia ocurrido, asi los datos por cada fotograma a enviar son muchisimo menores.

Lympex me puedes decir de donde sabes tu eso, conoces algun Link, Manual, Codigo o algo.

Me gustaria saber como de forma simple y limpia, Comparando 2 Byte Array, le mando informacion al cliente de los "Bytes Cambiados" y la "Posicion", a primera vista se me ocurre un Array de 2 dimensiones, pero eso ya no me gusta y se me podria complicar el tema .

Gracias Lympex  ;D ;D ;D
#15
Otro esquemilla:

Do While Parar = False
   BitBlt Pic1.hdc, 0, 0, Screen.Width, Screen.Height, DK_DC, 0, 0, vbSrcCopy
   Pic1.Refresh
   MyGetDIBits     '-----Procedimiento que crea el Array
   DoEvents
Loop

Private Sub MyGetDIBits()
  Bla, Bla,Bla
  CompressByteArray  XArray  '-----------Aqui se llama para comprimir el Array
  EnviaByteArray XArray          '-----Procedimiento que parte y Envia
End Sub


Private Sub EnviaByteArray()
Bla,Bla, Bla     '------Se envia
End Sub


Voy a probar a meter DoEvents por todas partes por que ademas hay otro pequeño fallo en elcual cada 1 o 2 segundos aveces me llega 1 fotograma defectuoso , como si le faltara un color al televisor, se ve o rojizo o verdoso y eso es porque el Byte Array no se recompone corretamente  y le faltan algunos datos y estoy casi seguro que es porque va a toda ostia (1 fotograma cada 60 milisegundos  o 200 milisegundos en el peor de los casos "Medido en Local") y no le da tiempo a hacer todos los pasos  que tiene correctamente, si pongo DoEvents por todas partes para que termine cada paso a lo mejor lo soluciono, o si hago lo de que el cliente confirme la receppcion tambien


Saludos !!!!!





#16
Bueno he de decir que: 

Acabo de terminar un sencillo proyecto para pruebas sobre esta idea y es la primera prueba que hago, supongo que se podra mejorar, hay es donde quiero que me aconsejeis.
La question es esa, se puede Optimizar sin perder velocidad o no mucha y rebajar uso CPU.

Lo he probado en Local con lo que mi PC hace las veces de Cliente y Servidor, aunque no creo que haciendo solo de servidor se reduzca el uso de CPU.

Lympex:
Citarmejor que limitar el uso de cpu, revisa el código de tu programa, y optimízalo

Esa es la question , se podra optimizar sin perder velocidad, si lo optimizo para que me mande un fotograma por segundo o dos, pues ya no tiene gracia.



Hendrix:
CitarSi lo que estas aplicando tu es un bucle que capture frames peus asi es normal que consuma mucho CPU, si estas utilizando un bucle, intercala en ese bucle la instrucción DoEvents, para que no consuma tanta CPU

Si Hendrix, era la primera prueba y no me he complicado, le he puesto un DO,DoEvents,LOOP simplemente para ver si me funcionaba, y funciono entre ""

Lo que dice Tughack me da buena espina, en un pricipio pensaba que tendria que hacerlo asi para que funcionara, pero funciono sin que el cliente confirmara la imagen recibida, me sorprendi de que funcionara sin esto, pense que se produciria un Caos y un Desfase entre cliente y servidor. tal vez haciendo esto  y quitando el DO LOOP consiga algo.

Un esquema:
----------------------
SERVER:
1 Captura de pantalla
2 GetDiBits - crea "Array de Bytes" con la informacion de la imagen
3 Comprime Array
4 Extrae Trozo y Envia,  Extrae Trozo y Envia,  Extrae Trozo y Envia ..............

CLIENT:
1 Va juntando,  Va juntando, Va juntando .................
2 Descomprime Array
3 SetDiBits - Muestra la imagen

Bueno ya os contare, y si teneis mas sugerencias !!!


:D :D  ::) :D :D


#17
Hola !!!

Pues bien he hecho un sistema de captura de pantalla bastante rapido, el problema es que en la aplicacion servidor se dispara el uso de CPU al 100%,
y eso no me gusta nada, hay alguna manera de limitar el uso de CPU para una aplicacion de Visual Basic, estaria mejor que estubiera al 80% por ejemplo.

Alguien me da una respuesta? gracias


Un saludo  :rolleyes: :rolleyes: :rolleyes:

#18
Voto a Eon o Hendrix
#19
A mi me gustaria ser Merodeador  ;D ;D ;D
Prefiero permanezer en la sombra, de todas maneras tenia menos posibilidades de ganar estas elecciones, que Zapatero las siguientes generales.

Saludos gente !!!!!!  ;D ;D ;D ;D ;D
#20
Ya se que se puede hacer asi, la verdad es que no es un problema muy grave, tengo esa opcion que es la normal.

Pero estoy dejando el codigo bonito comentado y entendible, y queria que me quedasen arriba ya con su valor , con los comentarios de que es cada cosalos valores esque estoy, y dejar los procedimientos menos cargados de codigo.

Por cierto lo habeis probado vosotros, ya es por curiosidad, os a funcionado o el MSDN debe estar equibocado?

Dim startingAmount As Long = 500  'va o no va?


;D ;D ;D