2012-10-16 12 views
14

Potrzebuję używać monitora jako "prywatnego" urządzenia do mojej specjalnej aplikacji, chcę użyć go jako latarki sortowania i narysować na nim specjalne wzory pełny ekran. Nie chcę, aby ten monitor był rozpoznawany przez system operacyjny (Windows 7) jak zwykły monitor. To znaczy. użytkownik nie powinien móc przenosić myszy do tego monitora, zmieniać jej rozdzielczości ani uruchamiać na nim wygaszacza ekranu. Ale chcę mieć możliwość interakcji z nim z mojej aplikacji. Monitor jest podłączany za pomocą kabla HDMI do karty graficznej (najprawdopodobniej nVidia).Ukrywanie monitora z okien, praca z nim z mojej aplikacji tylko

Jaki jest najprostszy sposób to zrobić? Wszystkie rozwiązania są doceniane, w tym zakup dodatkowych adapterów lub prostych kart wideo lub innych specjalnych urządzeń. Jedynym rozwiązaniem, jakie mogę sobie teraz wyobrazić, jest podłączenie monitora do innego komputera, uruchomienie demona na tym komputerze, podłączenie go do mojego komputera przez Ethernet lub cokolwiek innego, komunikowanie się z tym demonem z mojego komputera. Jest dość brzydki i wymaga dodatkowego komputera. Ale muszę rozwiązać ten problem.

+0

Zastanawiam się, czy istnieje sposób na uzyskanie wirtualnego środowiska, aby użyć go bezpośrednio? –

+0

Masz na myśli wykorzystanie VM jako dodatkowego komputera z mojego rozwiązania? Nie wiem, czy możliwe jest ukrywanie monitora przed systemem operacyjnym, ale żeby było widoczne dla VM. – Mikhail

+1

Prawdopodobnie będziesz musiał zrobić to na odwrót - uruchom system operacyjny "użytkownika" wewnątrz maszyny wirtualnej i aplikację poza nią. W ten sposób powinieneś być w stanie ograniczyć system VM do jednego z monitorów, podczas gdy ty masz dostęp do obu tych systemów. Oczywiście ma to swoją cenę - wirtualizacja nadal nie jest doskonała, a jeśli użytkownik musi wykonywać intensywne prace na GPU, prawdopodobnie zostaniesz spieprzony. – Luaan

Odpowiedz

2

Opierając własnego pomysłu przy użyciu zewnętrznego komputera i komentarz Marka na użyciu VM jako tej „zewnętrznej” urządzenia:

Można kupić zewnętrzną kartę wideo USB-VGA jak jedna z nich, około. USD40:

USB-to-VGA adapter

http://www.newegg.com/USB-Display-Adapters/SubCategory/ID-3046

Prawie każde oprogramowanie VM obsługuje jakiegoś trybu Przez USB. VirtualBox jest świetnym przykładem. Tylko maszyna wirtualna widzi urządzenie USB, host ignoruje je całkowicie. Tak więc następujące kroki:

  1. Kup wymieniony adapter USB-na-VGA.
  2. Skonfiguruj cienką maszynę wirtualną i ugotuj małe narzędzie do odbierania obrazów, które będą wyświetlane na ekranie przez sieć.
  3. Skonfiguruj VirtualBox, aby podłączyć adapter USB-VGA bezpośrednio do maszyny wirtualnej.
+0

Haha, niezła sztuczka! Nie musisz martwić się o sprzęt, kiedy możesz go emulować. Wadą jest to, że musisz skonfigurować i uruchomić maszynę wirtualną przed uruchomieniem aplikacji, ale z drugiej strony nie musisz konfigurować połączenia ethernetowego z drugim komputerem i nie musisz czekać na jego uruchomienie. – Steed

+1

@Steed Yeah!Ponadto, VirtualBox ma ładny interfejs wiersza poleceń, który pozwala na sesje Headless, sesje tylko dla konsoli - więc powinieneś być w stanie uruchomić maszynę wirtualną z wnętrza aplikacji i ukryć ją przed użytkownikiem - z wyświetlaczem USB nadal działa. To jest trochę pracy, ale możesz uczynić to całkowicie przejrzystym. – NothingsImpossible

+0

Zawsze podejrzewałem, że VB powinien mieć tryb konsoli, ale nigdy go nie wypróbowałem, dziękuję. Pozostaje tylko znaleźć adaper USB-do-VGA (-DVI/-HDMI) ze sterownikiem Linuxa, aby uniknąć kupowania kolejnej licencji Windows. Myślę, że sobie z tym poradzimy;) – Steed

1

Oto kolejny proste rozwiązanie do monitora aplikacji.

Twoja aplikacja powinna zapewnić obsługę monitora API, służył jako HTTP na dowolnym porcie chcesz (np http://{userip}:{port}/{appname}/monitor).

Twoja aplikacja monitoruje się, przechowując dane monitorowania w pamięci, w lokalnym pliku lub bazie danych, ukryte przed użytkownikiem. Interfejs API monitora udostępnia te dane każdemu urządzeniu, które ma przeglądarkę (tablet, telefon, netbook, mini-komputer z Androidem, tanie urządzenie linuxowe, dowolny komputer PC lub dowolny system operacyjny ... z Internetu, sieci LAN lub bezpośrednie połączenie z Internetem). komputer hostujący aplikację).

Plusy:

  • Dane do monitorowania są zbierane (serwowane) w ramach aplikacji: tylko jeden wykonywalny
  • Wyświetlacz można wykonać zdalnie: z dowolnego!
  • Dostęp bezpieczeństwo łatwo zrobić za pomocą standardowego protokołu HTTP mecanisms uwierzytelniania
  • można monitorować kilka aplikacji (czyli kilka URL monitoring)
  • Jesteś swobodnie korzystać dowolną przeglądarkę do monitorowania (nawet lokalną przeglądarkę okno na sam PC dla celów testowych)
  • monitor z jakiegokolwiek sprzętu i OS chcesz
  • Proste i elastyczne!

Wady:

  • Istnieje kilka, ale powiedz mi ...

Wybór tego rozwiązania zależy od tego, jakie dane trzeba monitorować (tekst, obrazy, wideo ...), a także na temat oczekiwanej częstotliwości odświeżania w zależności od konfiguracji sieci systemowej.

Nadzieja to pomaga :)

+0

Dziękuję za trud! Twoje rozwiązanie rozwija tę samą koncepcję na temat oddzielnego urządzenia i dodatkowo sugeruje użycie protokołu HTTP (strony internetowej) do przesyłania moich obrazów. Niestety, nie musimy monitorować naszej aplikacji - musimy narysować wzory na monitorze (wyświetlaczu). Proces ten musi być kontrolowany przez aplikację, a nie przez kogoś odświeżającego stronę internetową (i to w dość wysokiej liczbie klatek na sekundę). To sprawia, że ​​rozwiązanie przeglądarki jest zupełnie nieistotne: ( Przepraszam, ja i Mikhail powinniśmy to wyraźniej wyrazić w pytaniu: – Steed

6

Aby to zrobić, należy odłączyć monitor od komputera. Odłączenie monitora od pulpitu uniemożliwia systemowi Windows korzystanie z niego w normalnym interfejsie użytkownika.

Przykładowy kod do podłączania i odłączania monitorów to in this KB article. Gdy to zrobisz, możesz use the monitor as an independent display.

+0

A my mamy zwycięzcę! :( – NothingsImpossible

+0

Drodzy @NothingsImpossible, chętnie nagrodzę nagrodę 50 za odpowiedź , ale nie mogę zaoferować innej nagrody o wartości mniejszej niż 200; ( – Steed