Cómo enviar bytes sin firmar a través de un serial desde arduino

0

Estoy utilizando el siguiente boceto para enviar los bytes de la pantalla de la memoria intermedia de cuadros. Pantalla de 1536 bytes a la computadora a través de la comunicación en serie. El resultado de ello para mi programa java es una matriz de bytes con valores entre 127 y -128. El resultado que estoy buscando en el programa java es una matriz de bytes con valores entre 0 y 1. ¿Cómo puedo declarar que el valor de i es un byte sin signo?

#include <TVout.h>
#include <video_gen.h>
#include <SoftwareSerial.h>

#define BAUD (9600)
#define W 128
#define H 96
#define compute ((TV.hres()/8) * TV.vres())

TVout TV;

SoftwareSerial Sserial(0, 1);

void setup() {
  Sserial.begin(BAUD);  
  delay(1000);
  TV.begin(PAL, W, H);
  initOverlay();
  initInputProcessing();
}  

void initOverlay() {
  TCCR1A = 0;
  TCCR1B = _BV(CS10);  
  TIMSK1 |= _BV(ICIE1);
  EIMSK = _BV(INT0);
  EICRA = _BV(ISC11);
}

void initInputProcessing() {
  ADCSRA &= ~_BV(ADEN); 
  ADCSRB |= _BV(ACME); 
  ADMUX &= ~_BV(MUX0); 
  ADMUX |= _BV(MUX1);
  ADMUX &= ~_BV(MUX2);
  ACSR &= ~_BV(ACIE);  
  ACSR &= ~_BV(ACIC); 
}

ISR(INT0_vect) {
  display.scanLine = 0;
}

void loop() {
  delay(1000);
  TV.capture();
  for (int i=0; i<compute; i++)
    {
      Sserial.write(display.screen[i]);
    }
  delay(3000);
}
    
pregunta Zuss

1 respuesta

2

Depende del programa receptor interpretar los datos como una fracción de 8 bits.

En el cable, los datos son solo ocho bits; no hay una señal inherente o un punto binario implícito (o cualquier otra interpretación). Tu programa java tendrá que interpretar el byte como una fracción sin signo, si eso es lo que necesitas, algo como [pseudo-código]: frac = (float)(unsigned)b/256.; .

    
respondido por el JRobert

Lea otras preguntas en las etiquetas