Stap 8: Trouble shooting
Dubbele buffer
Ik gebruikte dubbele buffer real-time operatie probleem, op te lossen
Zoals u van de foto zien kunt,
Een buffer is gegevens verzamelen terwijl de andere buffer is verwerkt.
Gegevens vergroten/verkleinen
Kloksnelheid van twee apparaat is anders en communicatiesnelheid is elke keer anders.
Zo ontvangen apparaat moet om het formaat van de telling van de gegevens.
Ex) foto verklaren dit geval
Ga ervan uit dat de TX apparaat 1024 byte in elke 100usec stuurt.
RX-apparaat kan spelen slechts 1000 byte voordat nieuwe gegevens komen.
Of RX apparaat alle ontvangen gegevens (2014 byte) spelen en blijven duren voordat nieuwe gegevens komen.
Voor oplossen zulks werkstuk,
Wanneer RX apparaat klok sneller dan TX apparaat is, moet RX apparaat laatste gegevens toe te voegen.
if (i == MAX_BUF_SIZE) i = MAX_BUF_SIZE - 1;
Wanneer RX apparaat klok langzamer dan TX apparaat is, RX-apparaat moet moeten bevrijden blijven gegevens.
if (buf_sel) buf_sel = 0; else buf_sel = 1; i = 0; // buffer index change to 0 as force.
Afgespeelde geluid is dan afwijken van origineel geluid.
Maar is het ok om te luisteren.
Voor dit geval is lagere buffergrootte beter.