# ?? Guía de Pruebas sin Sensor SR-X300W

## Estado Actual
? **La variable `Globals.debug = true` ya está activada** en `Globals.cs`

## ¿Cómo Funciona el Modo Debug?

### 1. **Flujo de Ejecución con Debug Activado**

Cuando presionas el botón **"Ejecutar Lectura"** (`TgrBtn_Click`):

```
???????????????????????????????????????????????????????????????
? Botón "Ejecutar Lectura" ? TgrBtn_Click()                   ?
???????????????????????????????????????????????????????????????
                       ?
                       ?
         ???????????????????????????????????
         ? ¿Se encontró sensor? (reader_found) ?
         ???????????????????????????????????
                    ?
         ???????????????????????
         ?                     ?
      SÍ (real)            NO (debug)
         ?                     ?
         ?                     ?
   Conecta a    ???????????????????????????
   sensor real  ? ¿Globals.debug = true?  ?
   Envía LON    ???????????????????????????
        ?                  ?
        ?           ???????????????
        ?           ?             ?
        ?          SÍ             NO
        ?           ?             ?
        ?           ?             ?
        ?    Usa datos    (No hace nada)
        ?    simulados        
        ???????????????????????????
                 ?
                 ?
         ReceivedDataWrite()
         (Procesa datos igual que
          si vinieran del sensor real)
```

### 2. **Datos de Prueba Disponibles**

En `Globals.cs` tienes definido:

```csharp
private static string codigo = "0037613825";    // 30 lentes

public static string testdata = codigo + ":001," +
    codigo + ":002," +
    codigo + ":003," +
    // ... hasta
    codigo + ":030";
```

**Esto significa:** Se simula una lectura de 30 lentes, todos con el código `0037613825`.

---

## ?? Pasos para Hacer Pruebas

### **Paso 1: Verificar que Debug esté Activado**

Abre `Globals.cs` y confirma:

```csharp
public static Boolean debug = true;  // ? Debe estar en true
```

### **Paso 2: Asegúrate que el Sensor NO se Encuentra**

Cuando inicies el programa:
- Si el sensor está en la red, se conectará automáticamente
- Si el sensor NO está disponible:
  - La etiqueta `sr2000w_ip_lbl` mostrará `0.0.0.0` en rojo
  - El botón "Ejecutar Lectura" estará deshabilitado EN MODO AUTOMÁTICO
  - ? **Esto es correcto para debug**

### **Paso 3: Cambiar a Modo Manual**

1. Haz clic en el botón **"Cambiar Modo"** 
2. Selecciona **"Manual"**
3. El botón "Ejecutar Lectura" ahora se habilitará

### **Paso 4: Ejecutar la Prueba**

1. Haz clic en **"Ejecutar Lectura"**
2. **En la consola de Visual Studio verás:**
   ```
   Ejecutando: BLOAD,1 en la linea XXX
   Ejecutando: LON en la linea XXX
   ```
3. El programa usará `Globals.testdata` en lugar del sensor

### **Paso 5: Espera los Resultados**

En el textbox "Data" verás:
```
0037613825:001,0037613825:002,0037613825:003,...,0037613825:030
```

**Resultados esperados:**
- ? **30 lentes OK** (todos el mismo código)
- El contador mostrará: **OK: 30, NOK: 0, Questionable: 0**
- Se guardará en CSV (si aplica)
- Se imprimirá en la etiqueta (si la impresora está habilitada)

---

## ?? Cómo Modificar los Datos de Prueba

### **Cambiar el Código de Prueba**

En `Globals.cs`, busca esta línea:

```csharp
private static string codigo = "0037613825";    // 30 lentes
```

Cámbialo al código que desees probar:

```csharp
private static string codigo = "0123456789";    // Tu código
```

### **Cambiar la Cantidad de Lentes**

Actualmente simula 30 lentes (posiciones 001 a 030).

Para cambiar a 45 lentes, modifica:

```csharp
public static string testdata = codigo + ":001," +
    codigo + ":002," +
    // ... agrega más líneas hasta :045
    codigo + ":045";
```

### **Simular Errores (Códigos Incorrectos)**

Para probar cómo reacciona el programa ante códigos incorrectos:

```csharp
public static string testdata = codigo + ":001," +
    codigo + ":002," +
    // ...
    "0199170978" + ":015," +  // ?? Código diferente en posición 15
    // ...
    codigo + ":030";
```

**Resultado esperado:**
- OK: 29, NOK: 1
- El programa mostrará **"X"** en la posición 15 con fondo rojo

### **Simular Lectura con Error**

```csharp
public static string testdata = "ERROR," +  // Fuerza un error
    codigo + ":001," +
    // ... resto de datos
```

**Resultado esperado:**
- OK: 29, NOK: 0, Questionable: 1

---

## ?? Monitorizar Ejecución

### **Ver Mensajes en Consola**

En Visual Studio:
1. **Debug ? Windows ? Output** (o `Ctrl + Alt + O`)
2. Verás todos los comandos ejecutados:
   ```
   [TCP] Conectando a 192.168.100.100:9004...
   ERROR: IpAddress no configurada  (esperado en modo debug)
   Ejecutando: BLOAD,1 en la linea 456
   Ejecutando: LON en la linea 458
   ```

### **Ver Datos Procesados**

En el textbox etiquetado **"Data"** (arriba a la izquierda):
- Muestra los datos recibidos en bruto
- Se actualiza automáticamente

### **Ver Resultados**

Los contadores en la pantalla:
- **OK:** Lentes que coinciden con el código master
- **NOK:** Lentes con código incorrecto
- **Questionable:** Lecturas con error

---

## ?? Flujo Completo de Prueba

```
1. Inicia ScanBox
   ?? Busca sensor en la red
   ?? No lo encuentra ? sr2000w_ip_lbl = 0.0.0.0 (rojo)

2. Cambias a "Modo Manual"
   ?? Botón "Ejecutar Lectura" se habilita

3. Haces clic en "Ejecutar Lectura"
   ?? Verifica reader_found = false
   ?? Entra al bloque: if (Globals.debug)
   ?? Llama: ReceivedDataWrite(Globals.testdata)

4. ReceivedDataWrite procesa testdata
   ?? Divide por comas
   ?? Extrae código y posición
   ?? Compara con "master code"
   ?? Marca OK o NOK

5. Actualiza pantalla
   ?? Muestra contadores
   ?? Dibuja etiquetas (OK en verde, X en rojo)
   ?? Guarda en CSV si aplica
   ?? Imprime etiqueta si está habilitado

6. El programa está listo para otra lectura
```

---

## ?? Notas Importantes

1. **Debug solo funciona sin sensor:**
   - Si conectas un sensor real, el programa lo usará
   - Para forzar debug, comenta la búsqueda de sensores

2. **El código debe existir en la base de datos:**
   - Si el código en `testdata` no está en `data.json`, mostrará error
   - Verifica que `0037613825` exista en tu `data.json`

3. **La cantidad de lentes debe coincidir con la configuración:**
   - En `App.config`: `program1_OPCcodes = 1` (para 1 lente)
   - Si `testdata` tiene 30 lentes, necesita un programa con 30+ lentes

4. **Cada lectura limpia los datos:**
   - El textbox "Data" se borra después de 5 segundos (configurable)
   - Los contadores se reinician

---

## ?? Ejemplo Práctico

### **Escenario: Probar con 3 códigos incorrectos en 30**

Modificar `Globals.cs`:

```csharp
private static string codigo = "0037613825";

public static string testdata = codigo + ":001," +
    codigo + ":002," +
    codigo + ":003," +
    "9999999999" + ":004," +  // ? Código incorrecto
    codigo + ":005," +
    codigo + ":006," +
    "1111111111" + ":007," +  // ? Código incorrecto
    codigo + ":008," +
    // ... más líneas ...
    "2222222222" + ":030";    // ? Código incorrecto
```

**Resultado esperado:**
- OK: 27
- NOK: 3
- Fondo rojo ? "Uno o más códigos son incorrectos"
- Opción para repetir o guardar

---

## ?? Casos de Prueba Recomendados

| Caso | Modificación en testdata | Resultado Esperado |
|------|--------------------------|-------------------|
| **OK Completo** | Todos con mismo código | OK: 30, NOK: 0, Questionable: 0 |
| **Parcial OK** | 15 OK, 15 NOK | OK: 15, NOK: 15, Questionable: 0 |
| **Con Error** | Agregar "ERROR," | OK: 29, NOK: 0, Questionable: 1 |
| **Código Incorrecto** | Cambiar código en posición 15 | OK: 29, NOK: 1, Questionable: 0 |
| **Caja Vacía** | "ERROR," solo | OK: 0, NOK: 0, Questionable: 1 |

---

## ? Checklist para Empezar

- [ ] Verificar `Globals.debug = true`
- [ ] Verificar que el sensor NO esté disponible
- [ ] Verificar que el código en `testdata` existe en `data.json`
- [ ] Cambiar a "Modo Manual"
- [ ] Hacer clic en "Ejecutar Lectura"
- [ ] Ver resultados en pantalla
- [ ] Revisar la consola de Visual Studio para detalles

---

**¡Ya tienes todo lo necesario para hacer pruebas sin sensor!** ??

