Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 复合WPF GUI共享串行端口(PRISM/MEF)_C#_Wpf_Serial Port_Mef_Prism 4 - Fatal编程技术网

C# 复合WPF GUI共享串行端口(PRISM/MEF)

C# 复合WPF GUI共享串行端口(PRISM/MEF),c#,wpf,serial-port,mef,prism-4,C#,Wpf,Serial Port,Mef,Prism 4,我确实有以下情况: 我有一个shell和两个模块(moduleA.dll,moduleB.dll通过引导程序包含),这是我使用PRISM4创建的 ModuleA读取数据库,并从中打开一个串行端口。该模块还提供通过串行连接发送命令的功能 ModuleB还可以向相同的串行连接发送数据,moduleA已经打开。此外,moduleB应包含一个绘图,用于绘制来自串行端口的数据 例如: 模块A发送“设置1,设置2” ModuleB发送“启动” -->模块B接收数据(->绘图数据) ModuleB发送“停止”

我确实有以下情况: 我有一个shell和两个模块(moduleA.dll,moduleB.dll通过引导程序包含),这是我使用PRISM4创建的

ModuleA读取数据库,并从中打开一个串行端口。该模块还提供通过串行连接发送命令的功能

ModuleB还可以向相同的串行连接发送数据,moduleA已经打开。此外,moduleB应包含一个绘图,用于绘制来自串行端口的数据

例如: 模块A发送“设置1,设置2” ModuleB发送“启动” -->模块B接收数据(->绘图数据) ModuleB发送“停止”

因此,据我所知,他们应该以某种方式共享这个串行端口实例。你知道如何设置这个场景吗


提前感谢。

您最初的模块/课程设置似乎有误。模块的概念主要用于可插拔的可选功能,而不是您在这里描述的功能:似乎没有ModuleA,ModuleB就不可能存在(因为它需要端口A,并且可能需要先发送设置等),反之亦然,只有ModuleA而没有ModuleB也没有任何意义(仅发送设置,不进行数据通信)


如果你的设置真的和你写的一样简单,只需使用一个模块进行所有串行端口通信。然后,你可以做的是,将数据库抽象成一个单独的模块,并最终进行绘图。然后,如果你切换到另一个数据库,你只需提供一个新的模块。绘图也是如此。(请注意,这只是您可以做的一个示例,绝不意味着这是您特定问题的解决方案)。对于“抽象”部分,您使用MEF/Unity的依赖项注入:在一个公共项目中创建接口,在一个模块中导出接口的实现,然后在另一个模块中导入。

+1首先,感谢您快速而有用的响应。我现在看到,构建模块不是最佳选择。我确实有还有一个问题。你能给我一个例子吗?我是prism的新手,如果moduleA中的数据立即更新,我找不到一个更新moduleB中数据的例子。你应该更具体一点,并可能为此创建一个单独的问题。但原则如下所示: