我正在尝试创建一个Windows窗体项目,并使用Kinect和Windows SDK对Kinect进行语音识别。我有
我把它作为命令提示符,因为这是最简单的方法。无论如何,我已经阅读并发现了两件事情。
1)我发现如何在同一个解决方案中同时运行两个项目。
2)我还发现了如何添加引用以从每个项目获取类到另一个项目。
那么,我如何从每个项目中获取变量?只是通过使用项目引用,或什么? P2可以识别语音并将其保存到变量中,如果它对任何事物都有效。
答案 0 :(得分:7)
我把它作为命令提示符,因为这是最简单的方法。
听起来像问题。听起来你真的应该考虑让你的Kinect项目成为一个类库。然后,您可以从Windows窗体应用程序调用该类库。
如果您想要一个“测试床”控制台应用程序,您总是可以编写一个也引用class library的应用程序。
请注意,通常您不应该在项目之间共享变量 - 它们是大多数封装好的系统中的实现细节 - 但是您将创建暴露属性,适当方法等的类型。
答案 1 :(得分:2)
如果我理解你的话,这里有两个选择:
将这些变量作为属性添加到类中
using Solution.MyNamespace;
在使用其他项目的类中
如果您有需要独立的变量,请考虑添加名为Abstract的类库项目或两个项目都引用的项目
我希望这可能有所帮助, 干杯
答案 2 :(得分:0)
另一种方法是使用命名管道进行进程间通信。
MSDN具有使用名称管道API here的引用。
命名管道是.NET框架的一部分,是一种可靠的通信方法,无需担心文件的访问权限。
要沿着静态变量路径运行,您需要运行单个进程并将一个项目转换为dll并手动加载Program Main。
当然,您甚至不需要使用静态变量,但在加载时传入的引用变量上使用同步。如果你不需要运行两个独立的进程,我可能会采用这种方法。
取决于您的目标是让项目分开流程。
答案 3 :(得分: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
。希望这有帮助!