Использование сенсорного экрана RPi в качестве основного дисплея, как отображать изображение на HDMI?

Я использую RPi 3 и сенсорный экран RPi в качестве основного дисплея.

Я хотел бы вывести изображение на дисплей HDMI, который будет отображаться в течение х секунд (для проецирования изображения для 3D-принтера). Выход HDMI:

  • только изображение
  • ему не нужен звук, или мышь и т. д. ... просто простое изображение.
  • Изображение HDMI отличается от изображения, отображаемого на сенсорном экране (т. е. зеркальное отображение не будет достаточным)
  • Возможно, мне нужно запустить события на RPi между изображениями

Из моих исследований, похоже, что запуск двойного дисплея на RPi сложный (/невозможно - я новый). Но поскольку я только хочу запустить только изображение на HDMI, есть ли способ, который может это сделать?

Я очень гибко изучаю новые языки программирования, чтобы достичь этого.

Большое спасибо ...

4 голоса | спросил Neex 16 PMpSun, 16 Apr 2017 16:12:06 +030012Sunday 2017, 16:12:06

2 ответа


3

Резюме. Наконец, мое решение использовало Kivy . Kivy - графическая структура для Python и, критически для моего приложения, имеет возможность выводить на LCD-сенсор RPG и HDMI. Kivy может сделать много подтяжки UI, я смог построить богатую панель управления на сенсорном ЖК-дисплее, которая служила отличным интерфейсом для машины.

Попробуйте выполнить следующие шаги, чтобы получить базовую демонстрацию:

  1. Поместите Kivy на Pi. Самый простой способ - использовать образ KivyPie , чтобы начать с чистого и легкого распространения с уже настроенной Kivy.

  2. Создайте эти 2 файла в одном каталоге и запустите «dualoutput_main.py»:

dualoutput_main.py

# Using Kivy Framework, this example module provides a basic touchscreen interface 
# on official RasPi 3 touchscreen.
# A button press runs a separate python app (dualoutput_sub.py)
# which is configured to run through RasPi HMDI output.
# It is important to note that both instances are unconnected - this is an undesirable
# sideffect of trying to get 2 different results on 2 different outputs on the RasPi 3.
# Comms between the two instances, if needed, is a separate topic ;-)

from kivy.config import Config
Config.set('graphics', 'width', '800')
Config.set('graphics', 'height', '440')
import os
os.environ["KIVY_BCM_DISPMANX_ID"] = "4" #LCD 

from  kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen
from kivy.base import runTouchApp
import subprocess


Builder.load_string("""

<TouchScreen>:

    BoxLayout:
        orientation: 'vertical'
        padding: 30
        spacing: 30
        Label:
            text: 'Click button to run HDMI app'
        Button:
            text: 'Run HDMI output'
            on_release: root.hdmi_go()

""")

class TouchScreen(Screen):

    def hdmi_go(self):
        print 'opening projector sequence'
        subprocess.Popen("python dualoutput_sub.py", stdout=subprocess.PIPE, shell=True)

runTouchApp(TouchScreen())

dualoutput_sub.py

# Example app to demonstrate kivy output on RasPi 3 HDMI
# Simple label counter ticks up to infinity

import os
os.environ["KIVY_BCM_DISPMANX_ID"] = "5" #HDMI 

from  kivy.app import App
from kivy.lang import Builder
from kivy.uix.screenmanager import Screen
from kivy.base import runTouchApp
from kivy.clock import Clock
from kivy.properties import NumericProperty # @UnresolvedImport (for Eclipse users)


Builder.load_string("""

<HDMITestScreen>:

    Label:
        font_size: 50
        text: str(root.label_number)                    

""")

class HDMITestScreen(Screen):

    label_number = NumericProperty(0)

    def __init__(self, **kwargs):
        super(HDMITestScreen, self).__init__(**kwargs)
        Clock.schedule_interval(self.increment_label_number, 1)

    def increment_label_number(self, dt):
        self.label_number += 1

runTouchApp(HDMITestScreen())

Примечания:

  • KivyPie - полезный легкий дистрибутив для разработчиков.
  • Я запускал экземпляр LCD в качестве основной программы, которая называлась подпроцессом для отдельного экземпляра HDMI.
  • Изучение Python (из Java), и я нашел этот сайт полезным.
  • Обучение Kivy сложно, но стоит изучить, начать здесь .
  • Как noob, все это сложно, но результаты определенно стоили (Kivy очень мощный для такого интерфейса), и я буду использовать этот подход для будущих машин.
  • Мне еще предстоит найти лучшее решение!
ответил Neex 12 J0000006Europe/Moscow 2017, 01:41:04
2

Я согласен с тем, что общий экран с двойным экраном не поддается решению, я тоже боролся с этим (вы можете отразить, если это помогает).

Возможно использование HDMI для вывода видео при использовании ЖК-дисплей для рабочего стола.

Итак, вы пытались воспроизвести свое изображение в виде видеоклипа и использовать omxplayer для его воспроизведения (например, например, http://linuxcommando.blogspot.com.au/2014/06/create-slide-show-from-pictures-part-1.html )

ответил Christopher Biggs 21 AMpFri, 21 Apr 2017 04:50:50 +030050Friday 2017, 04:50:50

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132