interpretPrinterStatus method

void interpretPrinterStatus(
  1. int statusByte
)

Función sencilla para interpretar el byte de estado de la impresora 3nStart RPT008

Implementation

void interpretPrinterStatus(int statusByte) {
  // Convertir a representación binaria para facilitar el análisis
  String bits = statusByte.toRadixString(2).padLeft(8, '0');

  log('\n==== ESTADO DE LA IMPRESORA 3NSTART RPT008 ====');
  log('Byte recibido: 0x${statusByte.toRadixString(16).padLeft(2, "0")} ($statusByte)');
  log('Representación binaria: $bits');

  // Analizar cada bit individualmente
  bool error = (statusByte & 0x80) != 0; // Bit 7
  bool paperFeed = (statusByte & 0x40) != 0; // Bit 6
  bool coverOpen = (statusByte & 0x20) != 0; // Bit 5
  bool sensorBit = (statusByte & 0x10) != 0; // Bit 4 (específico del modelo)
  bool offline = (statusByte & 0x08) != 0; // Bit 3
  bool drawer1 = (statusByte & 0x04) != 0; // Bit 2
  bool drawer2 = (statusByte & 0x02) != 0; // Bit 1
  //bool reserved = (statusByte & 0x01) != 0; // Bit 0

  // Imprimir interpretación
  log('\nInterpretación:');
  log('- Estado Online/Offline: ${offline ? "OFFLINE" : "ONLINE"}');
  log('- Tapa: ${coverOpen ? "ABIERTA" : "CERRADA"}');
  log('- Error: ${error ? "SÍ" : "NO"}');
  log('- Gaveta: ${(drawer1 || drawer2) ? "ABIERTA" : "CERRADA"}');
  log('- Alimentación manual: ${paperFeed ? "ACTIVA" : "INACTIVA"}');
  log('- Sensor especial (bit 4): ${sensorBit ? "ACTIVO" : "INACTIVO"}');

  // Para el caso específico de 0x16 (22)
  if (statusByte == 22) {
    log('\nResumen para 0x16 (22):');
    log('La impresora está ONLINE, con la tapa CERRADA y sin errores.');
    log('La gaveta parece estar ABIERTA (bits 1 y 2 activados).');
    log('El bit 4 está activo, que podría indicar un estado específico');
    log('del sensor de papel u otra función específica del modelo.');
  }

  log('\nDiagrama de bits:');
  log('+---+---+---+---+---+---+---+---+');
  log('| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | Posición');
  log('+---+---+---+---+---+---+---+---+');
  log('| ${bits[0]} | ${bits[1]} | ${bits[2]} | ${bits[3]} | ${bits[4]} | ${bits[5]} | ${bits[6]} | ${bits[7]} | Valor');
  log('+---+---+---+---+---+---+---+---+');
  log('| E | F | C | S | O | D1| D2| R | Significado');
  log('+---+---+---+---+---+---+---+---+');
  log(' E=Error, F=Feed, C=Cover, S=Sensor, O=Offline, D=Drawer, R=Reserved');

  log('\n========================================');
}