2

我正在尝试创建一个 Windows 窗体项目,并使用 Kinect 到 Windows SDK 的 Kinect 语音识别。我有

  • 表格申请项目 (p1) 和
  • Kinect 语音项目 (p2),它是一个命令提示符。

我把它做成了命令提示符,因为它是最简单的做事方式。无论如何,我已经阅读并发现了两件事。

1)我发现了如何在同一个解决方案中同时运行两个项目。

2)我还发现了如何添加引用以从每个项目中获取类。

那么,我如何从每个项目中获取变量?只是通过使用项目引用,还是什么?P2 可以识别语音并将其保存到变量中,如果这很重要的话。

4

4 回答 4

7

我把它做成了命令提示符,因为它是最简单的做事方式。

这听起来像问题。听起来你真的应该考虑让你的 Kinect 项目成为一个类库。然后,您可以从 Windows 窗体应用程序调用该类库。

如果你想要一个“测试床”控制台应用程序,你总是可以编写一个也引用类库的应用程序。

请注意,通常您不应该在项目之间共享变量- 它们是大多数封装良好的系统中的实现细节 - 但您将创建公开属性、适当方法等的类型。

于 2012-06-15T06:00:33.770 回答
2

如果我理解正确,这里有几个选项:

  1. 然后将这些变量作为属性添加到您的类中

    using Solution.MyNamespace; 在使用另一个项目的类中

  2. 如果您有需要独立的变量,请考虑添加一个名为 Abstract 的类库项目或两个项目都引用的东西

我希望这可能会有所帮助,干杯

于 2012-06-15T05:49:36.077 回答
0

另一种方法是使用命名管道进行进程间通信。

MSDN 提供了使用名称管道 API 的参考资料

命名管道是 .NET 框架的一部分,是一种可靠的通信方法,无需担心文件的访问权限。

要走静态变量路径,您需要运行单个进程并将一个项目转换为 dll 并手动加载 Program Main。

当然,您甚至不需要使用静态变量,而是在加载时传入的引用变量上使用同步。如果您不需要运行两个单独的进程,我可能会采用这种方法。

仅取决于您将项目分开的目标是什么。

于 2012-06-15T05:58:12.737 回答
0

就像@JonSkeet 说的,创建一个类库,然后你可以像这样保存信息:

    public class SpeechRecognizer
    {
        public List<string> SpeechRecognized = new List<string>
        {

        };

        public void SaveRecognizedSpeech(string foundSpeech)
        {
            SpeechRecognized.Add(foundSpeech);
        }
    }

在代码中:

        SpeechRecognizer sr = new SpeechRecognizer();
        sr.SaveRecognizedSpeech("blah blah");
        sr.SaveRecognizedSpeech("BLAH BLAH");
        Console.WriteLine("{0}, {1}", sr.SpeechRecognized[0], sr.SpeechRecognized[1]);
        Console.Read();

哦,让你的整个程序知道变量(我希望它们都在同一个解决方案中!)制作它们public。希望这可以帮助!

于 2012-06-15T15:13:53.923 回答