2017-02-01 27 views
0

私は、Pi3(c#、VC 2015を使用)上で合理的に複雑なプロセス制御のバックグラウンドアプリケーションを開発しています。これは、モジュール式(ディスプレイ、ユーザー入力、gpioエクステンダボード、各種センサー、リレー、ネットワーク通信など)で開発され、テストされています。各モジュールは個別のDLLとして構築され、独自のバックグラウンドテストアプリでテストされます。アプリケーション間でファイルを共有

私の問題は、すべてのモジュール、特に一連のアプリケーションパラメータで共通のデータセットを維持する必要があることです。結果とロギングのためのキャッシュとしてのローカルストレージ。したがって、いくつかの異なるアプリケーションが開発中にこのデータにアクセスする必要がありますが、一度に1つしかありません。明らかに最終的なプロジェクトでは、単一のアプリケーションがあるので、問題はありません。

私はWin IoTが単純なファイルに異なるアプリケーションからアクセスできるように見えないことに驚いています。 App Servicesやその他のアプリケーション間通信は、すべてトランザクションレベルにあり、ここでは適切ではないようです。すべてのI/Oを処理するアプリサービス機能を構築することは面倒(最終的には必要ではない)です。

この状況をどのように賢明に管理できるのか、誰でも考えてください。

答えて

2

UWPアプリのFile access permissionsが原因です。ローカルストレージ内のファイルからデータを読み取ることができないようです。

Raspberry Piに接続されているリムーバブルデバイス(外部ストレージ)を使用し、アプリケーションパラメータをテキストファイルなどのファイルに保存し、アプリケーションからデータを読み込む場合は、

デスクトップ上で次のコード(UWPアプリ)をテストし、マルチアプリからデータを正常に読み込みます。私は1つのアプリからRaspberry Piのデータを読むことができると確信していますが、私は複数のアプリをテストしませんでした。試してみることができます。心配があればお気軽にご連絡ください。

 Task.Run(async() => 
     { 
      var removableDevices = KnownFolders.RemovableDevices; 

      var externalDrives = await removableDevices.GetFoldersAsync(); 

      var drive0 = externalDrives[0]; 

      var testFolder = await drive0.GetFolderAsync("test"); 

      var SharedDateFile = await testFolder.GetFileAsync("data.txt"); 

      var data = await FileIO.ReadTextAsync(SharedDateFile); 

      System.Diagnostics.Debug.WriteLine(data); 
     }); 

アプリマニフェストでは、リムーバブルストレージ機能を指定し、少なくとも1つのファイルタイプ関連宣言を登録する必要があります。

UPDATE:publisher folderを使用して

がよりよい解決策です。このようなファイルを読み書きその後

<Extensions> 
    <Extension Category="windows.publisherCacheFolders"> 
    <PublisherCacheFolders> 
     <Folder Name="Folder1"/> 
    </PublisherCacheFolders> 
    </Extension> 
    </Extensions> 

:まず、Package.appxmanifestに次の拡張子を追加

 //Write file 
     var folder = Windows.Storage.ApplicationData.Current.GetPublisherCacheFolder("Folder1"); 
     var file = await folder.CreateFileAsync("settings.txt", Windows.Storage.CreationCollisionOption.OpenIfExists); 
     await FileIO.WriteTextAsync(file,"Hello writen by app1"); 

     //Read file 
     var folder = Windows.Storage.ApplicationData.Current.GetPublisherCacheFolder("Folder1"); 
     var file = await folder.GetFileAsync("settings.txt"); 
     var text = await FileIO.ReadTextAsync(file); 
     System.Diagnostics.Debug.WriteLine(text); 
関連する問題