C#中的情感 - 包含库

时间:2017-01-12 12:32:37

标签: c# .net visual-studio dll

我是C#的新手,可能做错了什么!

我已将其连接并与EmotivXavier控制面板配合使用。 我编写了一个代码来从EEG Emotiv获取csv中的原始数据。

我从Emotiv GitHub下载了社区SDK。 在那里,我可以找到DotNetEmotivSDK.dll。 与许多其他人一起: enter image description here

我将所有这些文件添加到我的项目" / bin"文件夹并尝试在Visual Studio中引用它们。只有一个人工作

enter image description here

尽管如此,我还是可以在C#中使用Emotiv类,只使用这个单独的dll。

但是,当我运行我的代码时,会出现此错误:

enter image description here

错误说:

  

未处理的异常:System.DllNotFoundException:无法加载DLL' edk.dll':找不到指定的模块。 (来自HRESULT的异常:0x8007007E)      在Emotiv.EdkDll.Unmanged_IEE_EmoEngineEventCreate()      在C:\ Users \ Becchi-PC \ Documents \ EEG \ community-sdk-master \ examples \ C#\ DotNetEmotivSDK \ EdkDll.cs中的Emotiv.EdkDll.IEE_EmoEngineEventCreate():第756行      在Emotiv.EmoEngine..ctor()中的C:\ Users \ Becchi-PC \ Documents \ EEG \ community-sdk-master \ examples \ C#\ DotNetEmotivSDK \ EmoEngine.cs:第393行      在C:\ Users \ Becchi-PC \ Documents \ EEG \ community-sdk-master \ examples \ C#\ DotNetEmotivSDK \ EmoEngine.cs中的Emotiv.EmoEngine.get_Instance():第418行      在C:\ Users \ Becchi-PC \ Documents \ EEG \ EEG_v2 \ Program.cs中的EEG.EEG_Logger..ctor():第21行      at EEG.EEG_Logger.Main(String [] args)在C:\ Users \ Becchi-PC \ Documents \ EEG \ EEG_v2 \ Program.cs:第97行

缺少的dll(Edk.dll)是我无法参考的那个。

这是我的完整代码:

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

        }

    }
}

请帮忙!

1 个答案:

答案 0 :(得分:0)

首先,您不应该将dll放在项目的bin文件夹中,因为这是在构建之后将引用的dll复制到的位置,而不是您应该引用它们的位置。因此,一种选择是将请求的dll复制到项目中的某个位置并从那里引用它们(例如:一个Lib文件夹)。

其次,您可以在github上找到Emotiv SDK,还有一个包含多个项目的示例解决方案:https://github.com/Emotiv/community-sdk/tree/master/examples/C%23。 正如您将注意到的那样,这些项目引用了DotNetEmotivSDK项目,因此这将是您解决问题的另一种选择。