реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Циклический буфер на С++
Jurdens
сообщение Dec 15 2005, 10:32
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 9-07-05
Пользователь №: 6 656



Кто ни будь писал функцию
циклического буфера на EС++
в иаре в виде класса?
на С у меня есть такая функция
там буфер(массив) создавался макросом.
а затем я использовал ф-ии чтения записи
Хотелось бы тоже самое на С++ но без макроса
а при вызове конструктора с параметром чтоб сразу обьявлялся массив
нужного размера.
CicleBufer(0x24);
как то это можно сделать?
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Dec 15 2005, 11:12
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Скачайте scmRTOS.
Там есть в точности то, что Вам нужно, и ещё много полезного.
Go to the top of the page
 
+Quote Post
GxOST
сообщение Dec 15 2005, 11:49
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 58
Регистрация: 6-12-05
Из: Санкт-Петербург
Пользователь №: 11 878



Есть старинный проект под мегу103 для UART (cм. аттач). Там использовался кольцевой буфер. Может, пригодится...
Прикрепленные файлы
Прикрепленный файл  uart_cpp.rar ( 4.21 килобайт ) Кол-во скачиваний: 167
 


--------------------
cul8r!
* #ru_embedded - эмбеддерский чат
Go to the top of the page
 
+Quote Post
Evgeny_CD
сообщение Dec 15 2005, 12:16
Сообщение #4


Гуру
******

Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892



Цитата(Jurdens @ Dec 15 2005, 13:32) *
на С у меня есть такая функция
там буфер(массив) создавался макросом.
а затем я использовал ф-ии чтения записи
А можно код на С сюда? Для моего общего развития biggrin.gif
Go to the top of the page
 
+Quote Post
Jurdens
сообщение Dec 15 2005, 13:26
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 9-07-05
Пользователь №: 6 656



Вот си код
Прикрепленные файлы
Прикрепленный файл  CirclBuffer.txt ( 11.34 килобайт ) Кол-во скачиваний: 356
 
Go to the top of the page
 
+Quote Post
Evgeny_CD
сообщение Dec 15 2005, 13:50
Сообщение #6


Гуру
******

Группа: СуперМодераторы
Сообщений: 2 065
Регистрация: 11-01-05
Из: Москва
Пользователь №: 1 892



Цитата(Jurdens @ Dec 15 2005, 16:26) *
Вот си код
Спасибо! a14.gif
Go to the top of the page
 
+Quote Post
dxp
сообщение Dec 16 2005, 08:33
Сообщение #7


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Вот код шаблона кольцевого буфера. Пользоваться, например, так:

Код
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

Прикрепленные файлы
Прикрепленный файл  ring_buf.rar ( 1.27 килобайт ) Кол-во скачиваний: 93
 


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post
Jurdens
сообщение Dec 16 2005, 11:42
Сообщение #8


Частый гость
**

Группа: Свой
Сообщений: 107
Регистрация: 9-07-05
Пользователь №: 6 656



А IAR поддерживает шаблоны?
Go to the top of the page
 
+Quote Post
dxp
сообщение Dec 16 2005, 12:09
Сообщение #9


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(Jurdens @ Dec 16 2005, 17:42) *
А IAR поддерживает шаблоны?

Для AVR начиная с версий 4.хх.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 08:41
Рейтинг@Mail.ru


Страница сгенерированна за 0.0142 секунд с 7
ELECTRONIX ©2004-2016