2017-01-12 6 views
0

Ich bin neu in C# und kann etwas falsch machen!Emotiv in C# - Fehler einschließlich Bibliothek

Ich habe es angeschlossen und mit EmotivXavier Control Panel arbeiten. Ich habe einen Code geschrieben, um die Rohdaten in csv aus dem EEG Emotiv zu bekommen.

Ich habe das Community SDK von Emoticon GitHub heruntergeladen. Dort konnte ich die DotNetEmotivSDK.dll finden. Zusammen mit vielen anderen: enter image description here

Ich habe alle diese Dateien in meinem Projekt „/ bin“ -Ordner und versucht, alle von ihnen in der Visual Studio zu verweisen. Nur ein arbeitete

enter image description here

Dennoch Ich verwende die Emotiv Klasse in C#, nur mit dieser einzigen DLL enthalten könnte.

Aber, wenn ich meinen Code ausführen, zeigt dieser Fehler auf:

enter image description here

Der Fehler sagt:

Unbehandelte Ausnahme: System.DllNotFoundException: Kann nicht edk‘DLL laden. dll ': Das angegebene Modul konnte nicht gefunden werden. (Ausnahme von HRESULT: 0x8007007E) bei Emotiv.EdkDll.Unmanged_IEE_EmoEngineEventCreate() bei Emotiv.EdkDll.IEE_EmoEngineEventCreate() in C: \ Benutzer \ Becchi-PC \ Dokumente \ EEG \ community-sdk-master \ Beispiele \ C# \ DotNetEmotivSDK \ EdkDll.cs: Zeile 756 bei Emotiv.EmoEngine..ctor() in C: \ Benutzer \ Becchi-PC \ Dokumente \ EEG \ Community-SDK-Master \ Beispiele \ C# \ DotNetEmotivSDK \ EmoEngine.cs: Zeile 393 bei Emotiv.EmoEngine.get_Instance() in C: \ Benutzer \ Becchi-PC \ Dokumente \ EEG \ community-sdk-master \ Beispiele \ C# \ DotNetEmotivSDK \ EmoEngine.cs: Zeile 418 bei EEG.EEG_Logger..ctor() in C: \ Benutzer \ Becchi-PC \ Dokumente \ EEG \ EEG_v2 \ Programme.cs: Zeile 21 bei EEG.EEG_Logger.Main (String [] args) in C: \ Benutzer \ Becchi-PC \ Dokumente \ EEG \ EEG_v2 \ Programm.cs: Zeile 97

Die fehlende DLL (Edk.dll) ist eine von denen konnte ich nicht verweisen.

Das ist mein voller Code:

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); 
      } 

     } 

    } 
} 

Bitte um Hilfe!

Antwort

0

Zunächst sollten Sie die DLLs nicht in den Ordner "bin" Ihres Projekts platzieren, da dies der Ort ist, an den die referenzierten DLLs nach dem Build kopiert werden, nicht der Ort, von dem aus sie referenziert werden sollen. Eine Option wäre also, die angeforderten DLLs an einen Speicherort in Ihrem Projekt zu kopieren und von dort aus auf sie zu verweisen (z. B. einen Lib-Ordner).

Zweitens finden Sie das Emotiv SDK auf github, und es gibt auch eine Lösung mit Beispielen, die mehrere Projekte enthalten: https://github.com/Emotiv/community-sdk/tree/master/examples/C%23. Wie Sie feststellen werden, verweisen diese Projekte auf das DotNetEmotivSDK-Projekt. Dies wäre also Ihre andere Möglichkeit, Ihr Problem zu lösen.

Verwandte Themen