Есть ли какой-то способ проверки того, что USB-накопитель смонтирован?
Согласно документации флешка монтируется в "/run/media/sda". И действительно, смотрю с помощью WinSCP, втыкаю USB-накопитель, в "/run/media" появляется папка "sda". Соответственно вынимаю накопитель - папка пропадает.
Сделал небольшую программу определения наличия папки на виртуальном контроллере (CODESYS Control Win V3), используя библиотеку CAA File и на основе примеров оттуда.
На виртуальном контроллере данный код сработал. Чётко определяется наличие/отсутствие 'c:/TestDirectory'.
Перенёс данный код на "Agava PLC-40/50 TV+WV". И тут уже проверяю наличие/отсутствие '/run/media/sda'. Вставляю USB-накопитель - DirectoryExists=TRUE. Вынимаю USB-накопитель - '/run/media/sda' не пропадает. Снова вставляю флешку, появляется папка '/run/media/sdb' с содержимым флешки. Такое впечатление, что папка "удерживается" DirectoryOpen. Пробовал делать DirectoryClose - не помогло, да и логика программы сильно усложнилась.
Собственно вопрос в начале топика. Есть ли более простой способ (библиотека) проверки наличия смонтированного USB-накопителя, как это сделано у OWEN?
Согласно документации флешка монтируется в "/run/media/sda". И действительно, смотрю с помощью WinSCP, втыкаю USB-накопитель, в "/run/media" появляется папка "sda". Соответственно вынимаю накопитель - папка пропадает.
Сделал небольшую программу определения наличия папки на виртуальном контроллере (CODESYS Control Win V3), используя библиотеку CAA File и на основе примеров оттуда.
Код:
PROGRAM DirectoryExists
VAR
xDirInit: BOOL := FALSE;
sDirNewName: CAA.FILENAME:='c:/TestDirectory';//'/run/media/sda';
DirectoryOpen: FILE.DirOpen;
DirectoryOpenDone: BOOL;
DirectoryExists: BOOL;
END_VAR
IF NOT xDirInit THEN
DirectoryOpen( xExecute:=FALSE);
xDirInit:=TRUE;
DirectoryOpenDone := FALSE;
ELSE
IF NOT DirectoryOpenDone THEN
DirectoryOpen.sDirName:=sDirNewName;
DirectoryOpen( xExecute:=TRUE);
IF DirectoryOpen.xDone THEN
DirectoryOpenDone := TRUE;
DirectoryExists := TRUE;
END_IF
IF DirectoryOpen.xError THEN
DirectoryOpenDone := TRUE;
DirectoryExists := FALSE;
END_IF
END_IF
IF DirectoryOpenDone THEN
xDirInit := FALSE;
END_IF
END_IF
Перенёс данный код на "Agava PLC-40/50 TV+WV". И тут уже проверяю наличие/отсутствие '/run/media/sda'. Вставляю USB-накопитель - DirectoryExists=TRUE. Вынимаю USB-накопитель - '/run/media/sda' не пропадает. Снова вставляю флешку, появляется папка '/run/media/sdb' с содержимым флешки. Такое впечатление, что папка "удерживается" DirectoryOpen. Пробовал делать DirectoryClose - не помогло, да и логика программы сильно усложнилась.
Собственно вопрос в начале топика. Есть ли более простой способ (библиотека) проверки наличия смонтированного USB-накопителя, как это сделано у OWEN?

Комментарий