2011-04-29 36 views
2

我需要製作一個WPF應用程序,該應用程序有兩個窗口,它的UI將由兩個單獨的用戶同時使用。 它需要在具有雙顯示器的單臺PC上運行,以便每個UI屏幕都顯示在其自己的顯示器上。該應用程序適用於我們正在構建的機器的工業控制接口 。帶有兩個UI線程的WPF應用程序,每個線程都在它自己的監視器上運行?

機器描述:該系統是泵製造商的測試臺。他們希望有兩名操作員在該站上工作。因此它需要能夠同時測試兩臺泵,但不能同步測試(每個操作員在不同時間開始測試)。該系統將測試泄漏,振動,流量,壓力和馬達電流。有數百種不同的型號,其中不同的測試參數以及不同的測試程序都有所不同。希望有一臺PC和一臺PLC作爲控制硬件。 PC將具有雙觸摸屏顯示器(每個操作員一個),兩個條碼掃描器(每個操作員一個)和兩個Zebra標籤打印機 (每個操作員一個)。 PC將通過EtherNet I/P與Allen Bradley Compact Logix PLC連接。 PLC將被編程爲控制機器上所有執行器和傳感器的 。在PLC將適當的參數寫入PLC後,PC將命令PLC執行各種測試序列。 PLC將在測試序列中收集數據,PC應用程序將檢索該數據並將其寫入永久性存儲器 。

應用程序描述:應用程序將使用SQL Express數據庫來存儲所有泵型號的測試參數以及測試期間爲每個泵所收集的數據。該應用程序將提供具有相同功能但具有彼此獨立操作能力的雙用戶界面。該應用程序將具有用於輸入和編輯所有不同泵的參數的UI屏幕,用於查看針對給定泵收集的數據的另一屏幕以及將顯示當前被測泵信息的主屏幕,例如 參數正在使用的測試進程和實時傳感器數據。使用場景如下:操作員收到一批泵 ,它附帶一份工單,他/她掃描工作訂單上的條形碼,應用程序解碼掃描並提取型號,然後 檢索測試參數並在屏幕上顯示信息,在操作員確認後,它寫入參數並測試序列到PLC。操作員將泵加載到測試室並關閉安全門。在PLC確認泵存在且安全門關閉後,向操作員 呈現「開始測試」按鈕。操作員按下「開始測試」按鈕,PC和PLC'互相通話 以執行測試程序,同時PC更新UI以使操作員瞭解序列每個步驟的進度和結果。 測試完成後,PC爲泵生成GUID,並將鏈接到GUID的測試數據存儲在數據庫中,並打印條形碼 使用GUID編碼的標籤以及合格/失敗狀態代碼。安全門解鎖第二站的操作員執行相同的任務 ,但具有不同的工作指令,可以是不同的模型泵,因此在另一個站上的測試完全相互獨立。

我的問題是:是否有可能讓單個WPF應用程序在單獨的監視器上實例化兩個單獨的UI線程 ,以便兩個UI窗口似乎同時具有焦點。如果是的話,你是如何做到的。 幾個其他點的處理是:每個監視器將是一個觸摸屏,以便兩個單獨的鼠標輸入需要處理和 每個用戶將有一個條形碼掃描器所以兩個USB或串行掃描儀將需要輸入要被監視。

回答

0

我不確定您是否可以一次在WPF應用程序中擁有兩個焦點(焦點?),但它聽起來像會很快變得雜亂無章。在我看來,更簡潔的解決方案是運行兩個獨立的應用程序實例。

+0

我不認爲這有助於。無論是其中一個應用程序還是其他應用程序都會有重點,但我懷疑這兩個應用程序都會擁有它。 – HCL 2011-04-29 20:10:16

+0

這是一個很好的觀點。 – 2011-04-29 20:14:29

0

Windows一次只能將觸摸輸入發送到一個窗口。你無能爲力。 '解決方法'將處理一個窗口內的所有輸入,做一些命中測試,然後做出相應的反應。

1

不管有多少個線程在使用中,您都不能同時擁有兩個窗口焦點的窗口。最好的解決方案是隻用一個巨大的窗口創建一個標準的WPF應用程序 - 這將允許你做你想做的事。

1

聽起來你用2臺機器會更好,每個機器上運行一個實例。

其他人已經提出了焦點問題,但你也有兩倍的傳感器/等管理。

你既可以花$$上寫一個超級複雜的應用程序,違反了大多數的規則,規定一組輸入+焦點,或者花同樣taht $$獲得另一臺機器上運行的應用程序?

1

正如其他答案所述,一次只能有一個窗口有焦點。 來自任一用戶的輸入將會到達最後聚焦的窗口。

考慮創建一個服務器應用程序和兩個與服務器通信的遠程UI應用程序。 這樣,你有一個應用程序運行邏輯,但有兩個遠程應用程序將它輸入到單獨的機器。 (一個輸入設備也可以作爲服務器的機器。)

你也可以有相互直接通信(在不同的機器),兩個桌面應用程序 沒有服務器的應用程序,但是這將是一個實施起來有點麻煩。

相關問題