Napisałem w Javie strumieniowanie pliku muzycznego bajt po bajcie przez port szeregowy z komputera do AVR.
Fragment kodu odpowiedzialny za strumieniowanie tutaj:
Wszystko działa ok dopóki w strumieniu nie pojawi się bajt o wartości 0x00. Wtedy po drugiej stroni transmisji przez port szeregowy dostaję jakieś dziwne wartości wyjściowe.
Przykładowe działanie:
Przykład dobrego działanie:
Wysyłam sekwencję: 2e 73 6e 64 1 1 1 18 1 1 b1 67 1 1 1 1 1 1 1f 4c
Na wyjściu otrzymuję sekwencję: 2e 73 6e 64 01 01 01 18 01 01 b1 67 01 01 01 01 01 1 1f 4c
czyli wszystko jest w OK,
ale
Przykład błędnego działania:
Wysyłam sekwencję: 2e 73 6e 64 1 0 1 18 1 1 b1 67 1 1 1 1 1 1 1f 4c
Na wyjściu otrzymuję sekwencję: 2e 73 6e 64 01 00 00 00 10 00 00 00 11 00 00 00 A8 35 be 09
I tak zawsze przy wysłaniu bajtu o wartości 0 pojawia się jakieś niespodziwane (przynajmniej dla mnie) wyjście.
Czy ktoś potrafi mi wyjaśnić dlaczego tak się dzieje? Może ktoś ma jakiś sposób jak sobie z tym poradzić? Albo może cociaż ktoś potrafi mi wytłumaczyć dlaczego w tym drugim przypadku dostaję taką właśnie wartość sekwencji wyjściowej.
Z góry dzięki za każdą pomoc
Fragment kodu odpowiedzialny za strumieniowanie tutaj:
RandomAccessFile file = new RandomAccessFile(streamingFileWithPath,"r");
BinaryFile bin=new BinaryFile(file);
int fileSize = (int)file.length();
int bytesSize = fileSize;
short bytes = 0;
int i = 0;
while (true) {
try {
bytes = bin.readByte();
if(bytes == 0) bytes++;
System.out.print(Integer.toHexString(bytes)+" ");
if(i==5)
outputStream.write(0);
else
outputStream.write(bytes);
i++;
if(i==bytesSize)
break;
}
catch (EOFException eof) {
System.out.println ("End of File");
break;
}
}
Wszystko działa ok dopóki w strumieniu nie pojawi się bajt o wartości 0x00. Wtedy po drugiej stroni transmisji przez port szeregowy dostaję jakieś dziwne wartości wyjściowe.
Przykładowe działanie:
Przykład dobrego działanie:
Wysyłam sekwencję: 2e 73 6e 64 1 1 1 18 1 1 b1 67 1 1 1 1 1 1 1f 4c
Na wyjściu otrzymuję sekwencję: 2e 73 6e 64 01 01 01 18 01 01 b1 67 01 01 01 01 01 1 1f 4c
czyli wszystko jest w OK,
ale
Przykład błędnego działania:
Wysyłam sekwencję: 2e 73 6e 64 1 0 1 18 1 1 b1 67 1 1 1 1 1 1 1f 4c
Na wyjściu otrzymuję sekwencję: 2e 73 6e 64 01 00 00 00 10 00 00 00 11 00 00 00 A8 35 be 09
I tak zawsze przy wysłaniu bajtu o wartości 0 pojawia się jakieś niespodziwane (przynajmniej dla mnie) wyjście.
Czy ktoś potrafi mi wyjaśnić dlaczego tak się dzieje? Może ktoś ma jakiś sposób jak sobie z tym poradzić? Albo może cociaż ktoś potrafi mi wytłumaczyć dlaczego w tym drugim przypadku dostaję taką właśnie wartość sekwencji wyjściowej.
Z góry dzięki za każdą pomoc