IBCBiomech / insolesibc

Prototipo de aplicación para plantillas
0 stars 1 forks source link

Reestructuración MVVM de la UI #25

Closed ivanjimenez closed 1 year ago

ivanjimenez commented 1 year ago

El problema principal con la aplicación antigua es que no está bien estructurada porque no deja de ser una aplicación simple de registro. Para añadir flujo hay que cambiarla a un patrón de diseño más elocuente que permita hacer pruebas unitarias más simples y la evolución de la aplicación permita que no sea tan complicado hacer un cambio sin romper algo.

Pasamos de aplicación en código "spaguetti"

Image

A algo con más estructura utilizando patrón de diseño MVVM:

Image

Es un código mucho más mantenible y legible.

ivanjimenez commented 1 year ago

Image

ivanjimenez commented 1 year ago
bernatDiaz commented 1 year ago

Priorizar la grabación de una sóla cámara con configuración de resolución y fps Si cambio la resolucion va muy lento. Si cambio los fps a 60 graba la mitad y a 120 un cuarto. Si grabas a 30 fps y 640x480 va bien (la resolucion la he dejado asi por defecto)

En esta funcion del fichero CamaraService.cs: public void OpenCamera(int index, int fps, System.Drawing.Size resolution) Esta linea no cambia la resolucion, va bien cameraStreams.Add(new CameraStreamService(index, fps, this)); Esta linea si que la cambia y va muy lento cameraStreams.Add(new CameraStreamService(index, fps, resolution, this)); Dejar una de las 2 comentada

ivanjimenez commented 1 year ago

Al escanear no me salen los sensores en la tabla

bernatDiaz commented 1 year ago

Sale este Trace? Trace.WriteLine("Scan from ApiService");

ivanjimenez commented 1 year ago

of devices: 2

ivanjimenez commented 1 year ago

Necesito saber cuando puedas cómo grabar al menos el video, ya que no me sale nada al hacer "click" en Capture, aquí debería grabar?

bernatDiaz commented 1 year ago

Scan Click derecho en la camara -> Open Camera Record (iniciar grabacion) Stop (parar grabacion)

bernatDiaz commented 1 year ago

Lo he probado y va sin IMUs El codigo donde se guardan en la tabla es este, es muy raro porque con IMUs falsos va bien

apiService.ScanReceived += (List<InsoleScan> insolesReceived) =>
            {
                Insoles.Clear();
                for (int i = 0; i < insolesReceived.Count; i++)
                {
                    InsoleScan insole = insolesReceived[i];
                    InsoleModel insoleModel = new(i, insole.name, insole.MAC, this);
                    Insoles.Add(insoleModel);
                }
            };

En RegistroVM.cs

ivanjimenez commented 1 year ago

Ok, no me ha comprobado los cambios ahora lo ha hecho.

Al seleccionar una cámara, la primera o segunda, me sale este error

image

bernatDiaz commented 1 year ago

Hay que ponerlo dentro de un Dispatcher, he subido un commit

ivanjimenez commented 1 year ago

Vale, la cámara graba.

Ahora me salen los sensores pero no registra en la gráfica ni CSV

Image

No obstante, por ahora puedo probar los videos.

bernatDiaz commented 1 year ago

Para que stremeen los sensores primero tienes que darle click derecho -> connect A cualquiera se conectan todos los escaneados

ivanjimenez commented 1 year ago

Vale, ahora todo bien gracias.

Voy a probar videos a 60fps, voy a intentar ver algunas cosas para la grabación.

Gracias por todo, Bernat.

Mañana comienza más tarde si quieres.

Ya hablamos mañana.

Un saludo.

ivanjimenez commented 1 year ago

He grabado un video a 60fps a 640 x 480 cronometrado y sale bien el tiempo para un video de:

20s

image

y otro de 1.30s

image

Salen clavados, eso sí, lo he hecho con un ivcam de pago, un teléfono con webcam wifi,

ivanjimenez commented 1 year ago

Esto lo cierro porque por ahora no aporta nada más