Буфер FIFO v1.1
Очередь обработки данных
.
- FIFO V1.1.jpg (7.25 КБ) 2157 просмотров
.
Обсуждение на форуме:
viewtopic.php?p=78899#p78899
Буфер FIFO подобен СТЕК. Основное отличие в очереди извлечения данных. Если СТЕК работает по принципу "первый пришел - последний ушел", то у FIFO принцип работы - "первый пришел - первый ушел"
С помощью данного блока FIFO v1.1 осуществляется запись переменных в массив и извлечения этих переменных в порядке прямой очереди.
Ассоциативный пример применения
Первый сотрудник (группа сотрудников) вводит номер очередного заказа и кнопкой
Insert ставит его в очередь.
Второй сотрудник в процессе отработки заказов, в соответствии с очередью, нажимает кнопку
Extract получает номер следующего заказа.
Так же на табло (с помощью выхода
Volum ) выводится количество клиентов находящихся в очереди.
Принцип и логика работы:
1. В настройках выставляем размер буфера (массива) - параметр size_fifo. Он определяет сколько переменных сможет вместить блок.
2. Подачей единицы на вход Insert записываем очередную переменную со входа In в буфер (в конец очереди)
3. Подачей единицы на вход Extract извлекаем первую по очереди переменную из буфера (очереди) на выход Out.
4. Подача единицы на вход Clean очищает буфер.
5. По умолчанию при очистке буфера, последняя переменная извлеченная из буфера остается на выходе Out.
6. Для обнуления выхода Out в момент очистки буфера надо установить параметр ResetOut в True.
7. Если в буфере пусто, то на выходе Empty - единица и больше ничего из очереди не извлекается.
8. Если буфер полон то на выходе Full - единица и ничего в очередь больше не ставится.
9. На выход Volum выводится текущее количество переменных хранящихся в буфере. С помощью этого выхода удобно следить за заполненностью буфера.
10. Тип данных буфера можно изменить на (int, long int, unsigned long int, float, char). Для этого требуется изменить тип данных в трех местах - вход In, выход Out, а также в SetupSection.
Входы блока:
Insert - Запись переменной In в буфер
Extract - Извлечение переменной из буфера на выход Out
Clean - Очистка буфера
In -Выход FIFO
Выходы блока:
Full - Индикатор полного буфера
Empty - Индикатор пустого буфера
Volum - Текущее количество переменных в буфере
Out - Выход FIFO
Параметры пользователя:
size_fifo - Размер буфера
ResetOut - Сброс выхода Out в "0" при очистке буфера: (True - сбрасывается, False - не сбрасывается.)
Данный блок не корректно работает с переменными типа String.
Для работы со строками рекомендую это: viewtopic.php?f=85&t=7884