我需要制作一个WPF应用程序,它的UI有两个窗口,将由两个单独的用户同时使用。它需要在具有双显示器的单台PC上运行,以便每个UI屏幕都显示在自己的显示器上。该应用程序是为我们正在建造的机器的工业控制界面。
机器描述:该系统是泵制造商的试验台。他们希望有两个操作员在车站工作。因此,它需要能够同时测试两个泵,但不能同步(每个操作员可以在不同的时间开始测试)。该系统将测试泄漏、振动、流量、压力和电机电流。有数百种不同的模型,它们都有不同的测试参数以及不同的测试程序。希望有一台PC机和一台PLC作为控制硬件。PC将配备双触摸屏显示器(每个操作员一个)、两个条形码扫描仪(每个操作员一个)和两个斑马标签打印机(每个操作员一个)。PC将通过EtherNet I/P与Allen Bradley Compact Logix PLC接口。PLC将被编程为控制机器上的所有执行器和传感器。在将适当的参数写入PLC后,PC将命令PLC执行各种测试序列。PLC将在测试序列期间收集数据,PC应用程序将检索数据并将其写入永久存储器。
应用程序描述:该应用程序将使用SQL Express数据库来存储所有泵模型的测试参数以及在测试期间为每个泵收集的数据。该应用程序将提供具有相同功能但能够相互独立操作的双UI。该应用程序将有一个UI屏幕,用于输入和编辑所有不同泵型号的参数,另一个屏幕用于查看为给定泵收集的数据,主屏幕将显示当前正在测试的泵的信息,如正在使用的参数、测试进度和实时传感器数据。使用场景如下:操作员收到一批泵,并收到一张工作单,他/她扫描工作单上的条形码。应用程序解码扫描并提取型号,然后从数据库中检索测试参数并在屏幕上显示信息,在操作员确认后,将参数和测试序列写入PLC。操作员将泵装入试验室并关闭安全门。PLC确认泵存在且安全门关闭后,操作员会看到一个"Begin Test“(开始测试)按钮。操作员按下"Begin Test“(开始测试)按钮,PC和PLC相互对话以执行测试序列,同时PC更新UI,使操作员随时了解序列中每个步骤的进度和结果。当测试完成时,PC为泵生成GUID,并将链接到GUID的测试数据存储在数据库中,并打印用GUID编码的条形码标签和通过/失败状态代码。安全门解锁第二个工作站的操作员正在执行相同的任务,但具有不同的工作顺序,可以是不同型号的泵,因此在另一个工作站上的测试是完全独立的。
我的问题是:是否有可能让单个WPF应用程序在不同的监视器上实例化两个单独的UI线程,以便两个UI窗口看起来同时具有焦点。如果是这样的话,你怎么做呢?其他要处理的几点是:每个监视器将是一个触摸屏,因此需要处理两个单独的鼠标输入,并且每个用户将拥有一个条形码扫描器,因此需要监视两个USB或串行扫描器以进行输入。
发布于 2011-04-30 04:12:51
无论有多少线程在使用中,都不能同时有两个窗口具有窗口焦点。最好的解决方案是用一个巨大的窗口创建一个标准的WPF应用程序--这将允许你做你想做的事情。
发布于 2011-04-30 04:22:31
听起来你最好有两台机器,每台机器上运行一个实例。
其他人已经提出了焦点问题,但您也需要管理两倍的传感器/etc。
你可以花$$写一个超级复杂的应用程序,它违反了关于一组inputs+focus的大多数规则,或者花同样的$$让另一台机器运行应用程序?
发布于 2011-04-30 04:46:02
正如其他答案所述,一次只能有一个窗口具有焦点。来自任一用户的输入将到达最后一个聚焦窗口。
考虑创建一个服务器应用程序和两个与服务器通信的远程UI应用程序。这样,您有一个运行逻辑的应用程序,但有两个远程应用程序为它提供输入,从到单独的机器。(其中一台输入机也可以用作服务器的机器。)
你也可以有两个桌面应用程序,它们直接相互通信(在不同的机器上),没有服务器应用程序,但这将是一个有点棘手的实现。
https://stackoverflow.com/questions/5836774
复制相似问题