UWP / C # / IoT / RPi: доступ к USB-устройству (флешке) из Win IoT на RPi и копирование в KnownFolders - PullRequest
0 голосов
/ 03 октября 2018

Вот мой вызов:

  • IoT для Windows в Raspi, C # UWP-App
  • При загрузке или клик ...
    • Перечисление подключенных USB-устройств
    • Выберите USB-флешку
    • Перечислить файлы и папки на флешке
    • Если определенное имя папки найдено, скопируйте папку как есть в KnownFolders.Documents

Удивительно, что в Интернете есть много полурешетов, но ни одно из них вряд ли работает.

Некоторые вещи, которые я пробовал:

var removableDeviceList = await KnownFolders.RemovableDevices.GetFoldersAsync();
            if (removableDeviceList.Count > 0)
            {
                StorageFolder targetDevice = removableDeviceList.FirstOrDefault();
                ListBox.Items.Add(targetDevice.Name);
}

Работает до сих пор, но потом застрял.

И да, такие функции, как библиотека изображений, определения файлов, съемные устройства, активируются вманифест.Я не могу поверить, что эта основная вещь действительно такая трудная задача, чтобы решить?

1 Ответ

0 голосов
/ 03 октября 2018

Есть пример, который я тестирую на Raspberry Pi 3 с Windows 10 IoT Core.Меня устраивает.

Исходная папка : тестовая папка в корневом каталоге USB-накопителя (E: \ test).Существует три файла: hello.txt, welcome1.png, welcome3.jpg.

Папка назначения : корневая папка KnownFolders.DocumentsLibrary.

Следующий код завершает копирование файловв тестовой папке в корневую папку KnownFolders.DocumentsLibrary.

   public async void USBDriveCopyFolder()
    {
        var targetFolderName = "test";

        var removableDevice = (await KnownFolders.RemovableDevices.GetFoldersAsync()).FirstOrDefault();
        if (null == removableDevice)
        {
            System.Diagnostics.Debug.WriteLine("removableDevice is null !");
            return;
        }
        System.Diagnostics.Debug.WriteLine(removableDevice.Name + ":\n");

        var sourceFolder = await removableDevice.GetFolderAsync(targetFolderName);
        if (null == sourceFolder)
        {
            System.Diagnostics.Debug.WriteLine(targetFolderName + " folder is not found !");
            return;
        }
        System.Diagnostics.Debug.WriteLine(sourceFolder.Name + ":\n");

        var destFodler = KnownFolders.DocumentsLibrary;
        if (null == destFodler)
        {
            System.Diagnostics.Debug.WriteLine("KnownFolders.DocumentsLibrary folder get failed !");
            return;
        }

        var files = await sourceFolder.GetFilesAsync();

        foreach (var file in files)
        {
            System.Diagnostics.Debug.WriteLine(file.Name + "\n");
            await file.CopyAsync(destFodler);
        }

    }

Возможности устройства в package.appxmanifest:

  <Applications>

    ...
    ...

    <Application>
      <Extensions>
        <uap:Extension Category="windows.fileTypeAssociation">
          <uap:FileTypeAssociation Name="txt">
            <uap:SupportedFileTypes>
              <uap:FileType>.txt</uap:FileType>
            </uap:SupportedFileTypes>
          </uap:FileTypeAssociation>
        </uap:Extension>
        <uap:Extension Category="windows.fileTypeAssociation">
          <uap:FileTypeAssociation Name="jpg">
            <uap:SupportedFileTypes>
              <uap:FileType>.jpg</uap:FileType>
            </uap:SupportedFileTypes>
          </uap:FileTypeAssociation>
        </uap:Extension>
        <uap:Extension Category="windows.fileTypeAssociation">
          <uap:FileTypeAssociation Name="png">
            <uap:SupportedFileTypes>
              <uap:FileType>.png</uap:FileType>
            </uap:SupportedFileTypes>
          </uap:FileTypeAssociation>
        </uap:Extension>
      </Extensions>
    </Application>
  </Applications>
  <Capabilities>
    <uap:Capability Name="picturesLibrary" />
    <uap:Capability Name="removableStorage" />
    <uap:Capability Name="documentsLibrary" />
  </Capabilities>
...