Paso 8: Solución de problemas
Doble buffer
Usé el doble búfer para resolver problema de operación en tiempo real,
Como se puede ver la imagen,
Un buffer es recogida mientras está procesando el otro buffer de datos.
Cambiar el tamaño de los datos
Velocidad de reloj del dispositivo dos es diferente y la velocidad de comunicación es diferente cada vez.
Tan recibir dispositivo debe necesitar cambiar el tamaño de la cuenta de datos.
Ex) imagen explicar este caso
Suponga que TX dispositivo enviará 1024 bytes en cada 100usec.
Dispositivo RX puede jugar sólo 1000 bytes antes de que lleguen nuevos datos.
O aparato de RX jugar datos todos recibidos (2014 bytes) y tiempo antes de que lleguen nuevos datos.
Para resolver este problema,
Cuando el reloj del dispositivo RX es más rápido que el dispositivo de TX, RX dispositivo debe necesita añadir los últimos datos.
if (i == MAX_BUF_SIZE) i = MAX_BUF_SIZE - 1;
Cuando el reloj del dispositivo RX es más lento que el dispositivo de TX, RX dispositivo debe necesita librar siguen siendo datos.
if (buf_sel) buf_sel = 0; else buf_sel = 1; i = 0; // buffer index change to 0 as force.
Después sonido jugado se diferencian de sonido original.
Pero es bueno escuchar.
Para este caso, el menor tamaño del búfer es mejor.