Ne - chyba je ve funkci ReadData v řádku
i = 0;
uvnitř smyčky for ( j … ). V každý smyčce nuluješ i, tak se nemůžeš divit, že na výstupu dostáváš jenom poslední bit. Tam to nemá co dělat. To musí zůstat jenom před smyčkou.
Ten řádek
i|= (1 << (7 - j)); //Nastaví bit do 1
dělá následující :
vezme jedničku a posune ji na pozici (7 - j) - tedy 7,6,5,…,0 (0x80,0x40,0x20, … ,0x01) a pokaždé ji logicky přičte do i. Jenže na začátku cyklu si vždy i vynuluješ, což je chyba …
Není tam i=(1<<(7-j));, ale i|=(1<<(7-j)); totéž jako i := i or 2^(7-j)
Snad jsem ten Pascalovskej zápis nezpackal.
Když s Cčkem začínáš, tak :
A+=2; odpovídá A = A + 2;
A<<=1; odpovídá A = A << 1;
A=7;* odpovídá A = A * 7;
atd.