Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Циклический буфер на С++
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Jurdens
Кто ни будь писал функцию
циклического буфера на EС++
в иаре в виде класса?
на С у меня есть такая функция
там буфер(массив) создавался макросом.
а затем я использовал ф-ии чтения записи
Хотелось бы тоже самое на С++ но без макроса
а при вызове конструктора с параметром чтоб сразу обьявлялся массив
нужного размера.
CicleBufer(0x24);
как то это можно сделать?
IgorKossak
Скачайте scmRTOS.
Там есть в точности то, что Вам нужно, и ещё много полезного.
GxOST
Есть старинный проект под мегу103 для UART (cм. аттач). Там использовался кольцевой буфер. Может, пригодится...
Evgeny_CD
Цитата(Jurdens @ Dec 15 2005, 13:32) *
на С у меня есть такая функция
там буфер(массив) создавался макросом.
а затем я использовал ф-ии чтения записи
А можно код на С сюда? Для моего общего развития biggrin.gif
Jurdens
Вот си код
Evgeny_CD
Цитата(Jurdens @ Dec 15 2005, 16:26) *
Вот си код
Спасибо! a14.gif
dxp
Вот код шаблона кольцевого буфера. Пользоваться, например, так:

Код
ring_buffer<int, 8> IntBuf8; // буфер на 8 интов

ring_buffer<float, 11> FltBuf11; // буфер на 11 флоатов

struct TStruct {...};

ring_buffer<TStruct, 4> StructBuf4; // буфер на 4 структуры

В последнем случае особенно надо прявлять осторожность - тут легко раздуть код и загасить быстродействие - элементы буфера непосредственным образом копируются. Возможно, в ряде случаев более разумным будет являться использование не самих структур, а указателей на них:
Код
struct TStruct {...};

ring_buffer<TStruct*, 4> pStructBuf4; // буфер на 4 указателя на струтуру типа TStruct
Jurdens
А IAR поддерживает шаблоны?
dxp
Цитата(Jurdens @ Dec 16 2005, 17:42) *
А IAR поддерживает шаблоны?

Для AVR начиная с версий 4.хх.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.