Skip to content

illinols/fileFinder

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

fileFinder

Функциональный блок (FB) для 4diac FORTE, который отслеживает появление новых файлов в указанной директории. Обладает возможностью фильтрации файлов по расширению, а также генерацией триггерного событие, когда обнаруживает новый файл.

Входы:

DP (directory path) – Вход, путь к директории, в которой выполняется мониторинг файлов.

FE (file extension) – Вход, фильтр по расширению файлов (например: 'png'). Может быть пустым, при отсутствии значение учитываются все файлы.

Выходы:

LF – Выход, имя последнего обнаруженного файла

Out – Выход, количество найденных файлов

LC – Выход, дата и время последнего добавленного файла.

TR – Выход, флажок появления нового файла


Установка

  1. Склонируйте репозиторий или загрузите содержимое: git clone https://github.com/illinols/fileFinder.git
  2. Создайте проект в 4diac IDE и зайдите в его директорию
  3. Перенесите файл fileFinder.fbt в корневую директорию проекта
  4. Перенесите файл FORTE.exe в удобную вам директорию
  5. В 4diac IDE перейдите в windows -> Preferences -> 4diac IDE -> FORTE preferences и укажите путь к скаченному файлу FORTE.exe
  6. Добавьте все необходимые функциональные блоки в рабочую зону
  7. Перейдите в Debug -> Open Simulated Device Manager -> Launch Local FORTE
  8. Вернитесь к рабочей зоне и выбрав ваш проект в System explorer нажмите Monitoring System, а затем Deploy

При вводе входных данных обязательно использовать одинарные кавычки, 4diac IDE не примет C:\Users\user\Documents\GitHub, необходимо вводить ‘C:\Users\user\Documents\GitHub\fileFinder’. Аналогично с расширением файла, но вводить точку перед расширением не обязательно, можно, например, просто ввести ‘png’. Для зацикленной работы блока стоит подключить к нему стандартный FB E_CYCLE. Частота обновления информации о файлах в директории выставляется через вход DT. Для удобства использования можно добавить FB E_SWITCH, который позволит управлять работой блока без перезапуска FORTE.

image

Схема подключения в `EMB_RES`

Принцип работы:

  1. При каждом запуске (по событию REQ) происходит чтение всех файлов в директории.
  2. Если задан фильтр (расширение), происходит дополнительная фильтрация файлов.
  3. Затем блок сравнивает текущий список файлов с предыдущим previousFileNames и определяет, появился ли новый файл.
  4. Если файл новый — его имя сохраняется в LF, выставляется TR = true, а текущее время записывается в LC.
  5. В конце итерации обновляется previousFileNames для последующего сравнения на следующем цикле.

Тестирование

  1. Ввод фильтра и его удаление в запущенной системе.
  2. Загрузка файлов с типом "Файл".
  3. Загрузка файлов с похожими названиями.
  4. Включение и отключение FB через E_SWITCH.
  5. Отслеживание папки с поддиректориями.

Пример использования

При создании дополнительного FB можно организовать систему которая будет распределять файлы файлы по разным папкам в зависимости от их формата. Либо мониторинг новых файлов с логированием, что возможно реализовать из блоков стандартной палитры 4diac.


Ограничения:

  1. Порядок файлов в массиве определяется в алфавитном порядке, а не по дате создания.
  2. Отслеживается только наличие новых файлов, но не их удаление или изменение.
  3. При сбросе фильтра все файлы не попадавшие под него считываются блоком как новые.
  4. Анализируется только указанная директория, без вложенных папок.

Возможные улучшения

  1. Выводить информацию о удаленных файлах между циклами.
  2. Анализ вложенных папок.
  3. При большом объёме файлов внедрить кэширование.

About

LIMAN

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages