2017-01-12 10 views
0

私はC#を初めて使用していますが、何か間違っている可能性があります。Emotiv C# - ライブラリを含むエラー

EmotivXavierコントロールパネルに接続して作業しています。 EEG Emotivからcsvの生データを取得するためのコードを記述しました。

Emotiv GitHubからCommunity SDKをダウンロードしました。 DotNetEmotivSDK.dllが見つかりました。多くの人と一緒に : enter image description here

私は自分のプロジェクト「/ binに」フォルダにこのすべてのファイルを追加し、Visual Studioでそれらのすべてを参照しようとしました。一つだけが

それでも

enter image description here

を働いていた、私は、この単一のDLLを、C#でEmotivクラスを使用含めることができます。私は自分のコードを実行したときに

しかし、このエラーが現れます:

enter image description here

エラーは言う:

未処理の例外:System.DllNotFoundException:DLL「EDKを読み込むことができませんが。 dll ':指定されたモジュールが見つかりませんでした。 (HRESULTからの例外:0x8007007E) (Emotiv.EdkDll.Unmanged_IEE_EmoEngineEventCreate() )Emotiv.EdkDll.IEE_EmoEngineEventCreate()(C:\ Users \ Becchi-PC \ Documents \ EEG \コミュニティ-sdk-master \ examples \ C#\ DotNetEmotivSDK) \ EdkDll.cs:行756 Emotiv.EmoEngine..ctor()(C:¥Users¥Becch-PC¥Documents¥EEG¥community-sdk-master¥examples¥C#¥DotNetEmotivSDK¥EmoEngine.cs):393 EEG.Logger..ctor()のEmotiv.EmoEngine.get_Instance()(C:¥Users¥Becchi-PC¥Documents¥EEG¥community-sdk-master¥examples¥C#¥DotNetEmotivSDK¥EmoEngine.cs:418 ) C:\ Users \ Becchi-PC \ Documents \ EEG \ EEG_v2のCEG:\ Users \ Becchi-PC \ Documents \ EEG \ EEG_v2 \ Program.cs:行21 のEEG.EEG_Logger.Main(文字列[] args) \ Program.cs:行97

欠落しているdll(Edk.dll)は、私が参照できなかったものの1つです。

これは私の完全なコードです:

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Threading; 
using System.Reflection; 

using Emotiv; 


namespace EEG 
{ 
    class EEG_Logger 
    { 
     EmoEngine engine; //Criando a variavel com a Engine 
     int userID = -1; //ID do usuario 
     string filename = "outfile.csv"; //Arquivo de saida 

     EEG_Logger() 
     { 
      //Instanciando a Engine 
      engine = EmoEngine.Instance; 
      engine.UserAdded += new EmoEngine.UserAddedEventHandler(engine_UserAdded_Event); 

      //Conectando ao EEG   
      engine.Connect(); 

      //Criando o Header do CSV 
      WriteHeader(); 
     } 

     void engine_UserAdded_Event(object sender, EmoEngineEventArgs e) 
     { 
      Console.WriteLine("User Added Event has occured"); 

      //Gravando o usuario 
      userID = (int)e.userId; 

      //Permitindo a aquisicao de dados 
      engine.DataAcquisitionEnable((uint)userID, true); 

      //Determinando o tempo do buffer 
      engine.DataSetBufferSizeInSec(1); 

     } 


     public void WriteHeader() 
     { 
      TextWriter file = new StreamWriter(filename, false); 

      string header = "COUNTER,INTERPOLATED,RAW_CQ,AF3,F7,F3, FC5, T7, P7, O1, O2,P8" + 
          ", T8, FC6, F4,F8, AF4,GYROX, GYROY, TIMESTAMP, ES_TIMESTAMP" + 
          "FUNC_ID, FUNC_VALUE, MARKER, SYNC_SIGNAL,"; 

      file.WriteLine(header); 
      file.Close(); 
     } 

     void Run() 
     { 
      // Handle any waiting events 
      engine.ProcessEvents(); 

      // If the user has not yet connected, do not proceed 
      if ((int)userID == -1) 
       return; 

      Dictionary<EdkDll.IEE_DataChannel_t, double[]> data = engine.GetData((uint)userID); 

      if (data == null) 
      { 
       return; 
      } 

      int _bufferSize = data[EdkDll.IEE_DataChannel_t.IED_TIMESTAMP].Length; 

      Console.WriteLine("Writing " + _bufferSize.ToString() + " lines of data "); 

      // Write the data to a file 
      TextWriter file = new StreamWriter(filename, true); 

      for (int i = 0; i < _bufferSize; i++) 
      { 
       //Escrevendo no arquivo 
       foreach (EdkDll.IEE_DataChannel_t channel in data.Keys) 
        file.Write(data[channel][i] + ","); 
       file.WriteLine(""); 
      } 

      file.Close(); 

     } 

     static void Main(string[] args) 
     { 

      EEG_Logger p = new EEG_Logger(); 

      for (int i = 0; i < 10; i++) 
      { 
       p.Run(); 
       Thread.Sleep(100); 
      } 

     } 

    } 
} 

助けてください!

答えて

0

まず、プロジェクトのbinフォルダにdllを置くべきではありません。これは、参照先の場所ではなく、参照されたdllがビルド後にコピーされる場所であるためです。したがって、要求されたdllをプロジェクトのある場所にコピーし、そこから参照することができます(例:Libフォルダ)。

第2に、Emotiv SDKはgithub上にあり、いくつかのプロジェクト:https://github.com/Emotiv/community-sdk/tree/master/examples/C%23を含むサンプルを含むソリューションもあります。 これらのプロジェクトはDotNetEmotivSDKプロジェクトを参照しているため、問題を解決するための他の選択肢になります。

関連する問題