Есть ли какой-то способ проверки того, что 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?
Комментарий