LINUX.ORG.RU

Не знаю как лучше назвать... связано с кодированием/декодиорванием


0

0

Здраствуйте.

не могу сообразить как это сделать...
есть последовательный набор бит в количестве 10 штук.
1 старт бит (всегда 1)
8 бит данных (0 || 1)
1 стоп бит (всегда ноль)

все это дело представлено вот в каком виде:
struct {
  uint high_count;        // количество единиц
  uint time_betwen_high;  // время между единицами
}

время берется от туда, что это последовательный протокол передачи данных
(IrDA, SIR)

как из подобной структуры можно перейти к стандартным 0b1010101110 ?

ЗЫ чувствую, что просто... но сообразить не могу...
anonymous

В каком виде задается время между единицами ? 

А так - посто сдвигом 

uint res =0;

if (hight_count) 
{
    res =1;

    for (; hight_count > 0; hight_count--) 
    {
       for (uint i =0; i<время между j-ой и j-1-ой единицей;i++) res = res << 1;
    }
}

res = res | маска стартового бита
res = res & маска стопового бита 

Алгоритм примерно такой с точностью до направления сдвига и представления времени между единицами

Burbaka ★★
()
Ответ на: комментарий от anonymous

Точно. Двое делом занимается, один звездит бестолку

Burbaka ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.