Coder Social home page Coder Social logo

ctu-fee-b0b35apo-semestral-project's Introduction

Zadání

Semestrální práce bude rozdělena do 3 jednotlivých programů vypracovaných pro MZAPO. Hlavní z nich bude průzkumník souborů, ve kterém bude možné procházet celý kořenový souborový systém a také externí zařízení. Průzkumník bude umět základní operace jako kopírování, přesouvání a mazání souborů. Dále spouštět spustitelné soubory a pro obrázky, resp. pro textové soubory otevřít prohlížeč obrázků, resp. textových souborů.

Prohlížeč obrázků je druhý program, který bude umět otevřít formáty jpeg, png a ppm. Přes rotační enkodery bude zařízen pohyb kurzoru po obrázku a následně se půjde na jednotlivé části obrázku přibližovat, aby obrázek nebyl moc malý.

Prohlížeč textových souborů je poslední program, ten bude umět otevírat kterékoliv soubory, ale korektně bude zobrazovat jen ty textové. Půjde se v něm pohybovat za pomoci rotačních enkoderů.

Vstup bude zařízen standardním vstupem pro ovládání na dálku a rotačními enkodery pro ovládání přímo. Standardní výstup bude použit k logování hlášek o tom, co program právě dělá nebo v jakém chybovém stavu se nachází.

Pro rychlejší ladění bude možnost programy spouštět na osobním počítači, kde se jako displej využije SDL okno.

Zhodnocení splnění zadání

U průzkumníku souborů jsem bohužel nestihl implementovat základní operace jako přesouvání, mazání nebo kopírování souborů. Stejně tak průzkumník souborů neumí sám namountovat externí zařízení jak bylo v plánu. Průzkumník tak umí pouze procházet složky, otevírat soubory v příslušném programu (podle mime typu). Na druhou stranu z prohlížeče textových souborů i obrázků se mi podařilo implementovat vše ze zadání jak pro ovládání přes rotační enkodery nebo přes standardní vstup.

Program na rychlejší lazení se mi povedlo vytvořit tak, že z většiny simuluje reálnou nízkou úroveň periferií. V kódu je tak potřeba minimum změn, aby místo na MZAPO běžel na osobních počítačích, je potřeba pouze změnit inicializaci programu, mapovací funkci nahradit vlastní mapovací funkcí a změnit posílání dat a příkazů displeji. Ovládání RGB LEDek i LED pásku zůstává stejné, není potřeba žádný zásah do kódu. Šlo by i jednoduše implementovat rotační enkodery po odchycení SDL eventů.

Manuál

Průzkumník souborů

Funkce

Program slouží na procházení kořenového systému souborů. Dokáže spouštět soubory a otevírat obrázky nebo textové soubory. Lze vyvolat kontextové menu, ve kterém lze otevřít kterýkoliv soubor v prohlížeči textu.

Program obsahuje jednoduchý návod k obsluze, ke kterému se jde dostat v hlavním menu.

(Virtuální) okna

Program se skládá z oken, mezi kterými se přepíná.

Výchozí menu

Ve výchozím menu lze otevřít průzkumník souborů nebo si přečíst, jak se program ovládá.

Průzkumník souborů

Průzkumník souborů zobrazuje, v jaké složce se zrovna člověk nachází a soubory v ní. Lze se navigovat mezi složkami, zobrazit kontextové menu nebo spouštět soubory.

Kontextové menu

V kontextovém menu lze soubor spustit nebo ho zobrazit v prohlížeči textu.

Dialog

Dialogové okno se typicky ukáže při chybě. Je v něm zachycená chyba, která nastala.

Spouštění

Program nepřijímá žádné argumenty, ty jsou ignorovány.

Použití: ./file-browser

LED pásek

Na LED pásku se ukazuje vertikální pozice v průzkumníku souborů, aby bylo poznat, kolik souborů je ještě potřeba projít do konce složky.

Chybové stavy

Chyby se hlásí přes dialogové okno.

Ovládání

Standardní vstup

  • h, j, k, l - pohyb pohledu po souboru (doleva, dolů, nahoru, doprava)
  • y, i, o, p - pohyb o celou obrazovku pro rychlejší navigaci (doleva, dolů, nahoru, doprava)
  • z, x - přiblížení a oddálení textu
  • n - vrácení pohledu na začátek seznamu souborů
  • m - pohled na konec seznamu souborů
  • e - ukončení programu
  • c - kontextové menu souboru
  • v - potvrzení výběru (spuštění souboru / přepnutí složky)

Rotační enkodery

  • První (červený) - horizontální posun pohledu
  • Druhý (zelený) - vertikální posun pohledu
  • Třetí (modrý) - přiblížení nebo oddálení textu
  • Tlačítko prvního enkoderu - ukončení programu / pohyb zpět
  • Tlačítko druhého enkoderu - kontextové menu souboru
  • Tlačítko třetího enkoderu - potvrzení výběru (spuštění souboru / přepnutí složky)

Prohlížeč textových souborů

Funkce

Program zobrazí na LCD displeji text z textového souboru, lze se po něm pohybovat rotačními enkodery. Pokud program nedostane textový soubor, je možné, že ho nezobrazí korektně.

Spouštění

Program nelze bez argumentů spustit, je vždy potřeba spustit s cestou k souboru s textem. Jinak program skončí s chybovým stavem vyobrazeným na RGB LEDkách.

./text-viewer [cesta-k-souboru]

LED pásek

Na LED pásku se ve fázi načítání ukazuje kolik dat je již načtených. Po načtení se zobrazuje vertikální pozice v souboru podle toho, jak moc je soubor posunutý.

Chybové stavy

Pokud se program nespustí správně, jedna z RGB LEDek se rozsvítí červeně.

Levá RGB LED znamená, že nebyl předán žádný argument. Pravá RGB LED znamená, že soubor se nepodařilo načíst, neexistuje nebo k němu nejsou přístupová práva. Konkrétní chybová hláška se objeví na standardním výstupu.

Ovládání

Standardní vstup

  • h, j, k, l - pohyb pohledu po souboru (doleva, dolů, nahoru, doprava)
  • y, i, o, p - pohyb o celou obrazovku pro rychlejší navigaci (doleva, dolů, nahoru, doprava)
  • z, x - přiblížení a oddálení textu
  • n - vrácení pohledu na začátek souboru
  • m - pohled na konec souboru
  • e - ukončení programu

Rotační enkodery

  • První (červený) - horizontální posun pohledu
  • Druhý (zelený) - vertikální posun pohledu
  • Třetí (modrý) - přiblížení nebo oddálení textu
  • Tlačítko prvního enkoderu - ukončení programu
  • Tlačítko druhého enkoderu - vrácení pohledu na začátek souboru
  • Tlačítko třetího enkoderu - pohled na konec souboru

Prohlížeč obrázků

Funkce

Program zobrazí na LCD displeji přeškálovaný obrázek, který se dá přibližovat pomocí rotačních enkoderů nebo standardního vstupu. Při spuštění programu je obrázek oddálený tak, aby se vešel celý na obrazovku.

Spouštění

Program nelze bez argumentů spustit, je vždy potřeba spustit s cestou k souboru s obrázkem. Jinak program skončí s chybovým stavem vyobrazeným na RGB LEDkách.

Použití: ./image-viewer [cesta-k-souboru]

Podporované formáty

  • jpg
  • png
  • ppm

Formáty se rozlišují podle jejich hlaviček, koncovky se nerozlišují

LED pásek

Na LED pásku se ve fázi načítání ukazuje kolik dat je již načtených. Po načtení se zobrazuje horizontální pozice kurzoru na obrázku pro snazší orientaci při větším zvětšení.

Chybové stavy

Pokud se program nespustí správně, jedna z RGB LEDek se rozsvítí červeně.

Levá RGB LED znamená, že nebyl předán žádný argument. Pravá RGB LED znamená, že soubor se nepodařilo načíst, neexistuje, není správný formát nebo k němu nejsou přístupová práva. Konkrétní chybová hláška se objeví na standardním výstupu.

Ovládání

Program má kurzor, podle kterého se určuje, kam se přibližuje. Kurzor se zobrazí, když se s ním hýbe a chvilku potom.

Standardní vstup

  • h, j, k, l - ovládání kurzoru nebo posunu po celém obrázku v závislosti na módu, viz klávesa m (doleva, dolů, nahoru, doprava)
  • z, x - přiblížení a oddálení obrázku (do místa, kde je kurzor)
  • r - vrácení do původního stavu (oddálí obrázek a nastaví kurzor doprostřed obrázku)
  • m - přepnutí mezi módy pohybu po obrázku nebo pohybu kurzorem (při módu pohybu po obrázku svítí RGB LEDky zeleně)
  • e - ukončení programu

Rotační enkodery

  • První (červený) - posun kurzoru horizontálně nebo posun horizontálně celého obrázku (viz tlačítko druhého enkoderu)
  • Druhý (zelený) - posun kurzoru vertikálně nebo posun vertikálně celého obrázku (viz tlačítko druhého enkoderu)
  • Třetí (modrý) - přiblížení a oddálení
  • Tlačítko prvního enkoderu - ukončení programu
  • Tlačítko druhého enkoderu - přepnutí mezi módy pohybu po obrázku nebo pohybu kurzorem
  • Tlačítko třetího enkoderu - vrácení do původního stavu přiblížení

Kompilace, instalace, spouštění

Na kompilaci je použit Makefile.

Křížová kompilace pro MZAPO

Pro křížovou kompilaci je zapotřebí arm-gnueabihf-gcc a dynamické knihovny libjpeg verze 62, libpng verze 16 a libmagic verze 1 pro MZAPO.

Soubory se po kompilaci uloží do složky bin, pro spuštění je potřeba je překopírovat na MZAPO.

Překopírování jde realizovat pomocí ssh, lze použít make, konkrétně TARGET_IP=[ip-addr] make copy-executable kde za ip-addr je potřeba dosadit ip adresu MZAPO. V základním režimu se počítá s tím, že je použit SSH tunel a mzapo-root-key (SSH klíč pro mzapo) se nachází na cestě ``/.ssh/mzapo-root-key. Pro změnu základního nastavení stačí změnit konfiguraci v Makefile` v kořenu projektu. Možné konfigurace jsou zakomentované na řádcích začínajících `SSHOPTIONS`

Pro spuštění lze využít sériového portu nebo ssh. Případně pomocí make, na spuštění průzkumníku souborů: TARGET_IP=[ip-addr] make run případně pro spuštění prohlížeče obrázků run-image-viewer a pro spuštění prohlížeče textových souborů run-text-viewer. Pro předání argumentu slouží environment proměnná ARG

Například lze použít TARGET_IP=[ip-addr] ARG=/path/to/image make run-image-viewer nebo TARGET_IP=[ip-addr] ARG=/path/to/image make run-text-viewer

Program je třeba spouštět s cwd ve složce, kde se nachází binární soubory.

Kompilace na osobní počítač

Pro lepší ladění je možnost program zkompilovat pro osobní počítač, kde je displej simulován pomocí SDL okna.

Pro kompilaci pro počítač lze využít environment proměnné COMPUTER. Lze pak využít COMPUTER=1 make

Po kompilaci jsou soubory ve složce bin v kořenu projektu. Lze je spustit napřímo s potřebnými parametry viz Manuál.

Je potřeba překopírovat soubory ze složky copy/ do složky bin/ a program spouštět s cwd ve složce, kde se nachází všechny binární soubory

ctu-fee-b0b35apo-semestral-project's People

Contributors

rutherther avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.