NPE X1000 - Języki programowania



Podobne dokumenty
Tworzenie oprogramowania

Uruchomienie Raspberry Pi

Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.

Warsztaty AVR. Instalacja i konfiguracja środowiska Eclipse dla mikrokontrolerów AVR. Dariusz Wika

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

1.Wstęp. 2.Generowanie systemu w EDK

oprogramowania F-Secure

Java pierwszy program w Eclipse «Grzegorz Góralski strona własna

WPROWADZENIE DO JĘZYKA JAVA

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Materiały oryginalne: ZAWWW-2st1.2-l11.tresc-1.0kolor.pdf. Materiały poprawione

Informatyka I : Tworzenie projektu

Laboratorium - Poznawanie FTP

Programowanie obiektowe zastosowanie języka Java SE

Programowanie Systemów Czasu Rzeczywistego

Załącznik 1 instrukcje instalacji

Instrukcja instalacji środowiska testowego na TestingCup wersja 1.0

Instrukcja użytkownika Platforma transakcyjna mforex Trader dla systemu Linux

Załącznik 1 instrukcje instalacji

AKTYWNY SAMORZĄD. Instrukcja instalacji, aktualizacji i konfiguracji.

ZSBD ćwiczenie 4. Obiektowe systemy zarządzania bazą danych. Przygotowanie środowiska pracy. Wymagania: ZSBD ćwiczenie 4

Instalacja NOD32 Remote Administrator

WYKONANIE APLIKACJI OKIENKOWEJ OBLICZAJĄCEJ SUMĘ DWÓCH LICZB W ŚRODOWISKU PROGRAMISTYCZNYM. NetBeans. Wykonał: Jacek Ventzke informatyka sem.

LINUX. Instalacja oprogramowania

Instrukcja instalacji oprogramowania dla środowiska Linux

Współpraca z platformą Emp@tia. dokumentacja techniczna

Programowanie obiektowe

INSTRUKCJA INSTALACJI APLIKACJI SEPI W SYSTEMIE LINUX. Dokumentacja zasilania aplikacji SEPI dla systemu Linux

Instrukcja instalacji oprogramowania dla środowiska MacOS

Praca zdalna z poziomu systemu Linux

Rozdział 1. Informacje ogólne

Instrukcja obsługi serwera FTP v

Java jako język programowania

Zaawansowane aplikacje WWW - laboratorium

Pracownia internetowa w każdej szkole (edycja jesień 2005)

Instrukcja instalacji

WPROWADZENIE DO INFORMATYKI

Konfiguracja oprogramowania w systemach MS Windows dla kont z ograniczonymi uprawnieniami

Instrukcja instalacji i konfiguracji bazy danych SQL SERVER 2008 EXPRESS R2. Instrukcja tworzenia bazy danych dla programu AUTOSAT 3. wersja 0.0.

Konfiguracja oprogramowania w systemach MS Windows dla kont z ograniczonymi uprawnieniami

Instalacja i opis podstawowych funkcji programu Dev-C++

Procedura wygenerowania paczki instalacyjnej oprogramowania F-Secure

cmt + CODESYS, oraz zdalne wejścia/ wyjścia

System. Instalacja bazy danych MySQL. Autor : Piotr Zielonka tel Piotrków Tryb., sierpień 2018r.

IBM SPSS Statistics - Essentials for R: Instrukcje instalacji dla Linux

Instrukcja instalacji oprogramowania dla środowiska MacOS

Instalacja i konfiguracja serwera IIS z FTP

Pobieranie edytora CodeLite

Spis treści. FAQ: /PL Data: 30/06/2015. Instalacja polskiej wersji LOGO! Soft Comfort. 1 Pobranie pliku 2

SYSTEMY OPERACYJNE I SIECI KOMPUTEROWE. Tryb konsolowy ćwiczenie b

MentorGraphics ModelSim

IBM SPSS Statistics Wersja 23. Konfigurowanie ułatwień dostępu

PORADNIK KORZYSTANIA Z SERWERA FTP ftp.architekturaibiznes.com.pl

Kopiowanie i instalowanie pliku w systemie Windows CE

BACKUP BAZ DANYCH FIREBIRD

Programowanie proceduralne w języku C++ Podstawy

Projektowanie baz danych za pomocą narzędzi CASE

Pracownia internetowa w szkole ZASTOSOWANIA

Tworzenie maszyny wirtualnej

Poradnik cz.1 Użycie połączenia SSH

Instrukcja instalacji oprogramowania dla środowiska Linux

Zaawansowane aplikacje internetowe - laboratorium Architektura CORBA.

Db4o obiektowa baza danych wersja.net

Zdalny dostęp SSL. Przewodnik Klienta

Najczęściej występujące problemy z instalacją i konfiguracją i ich rozwiązania.

Podstawy technologii WWW

Ćwiczenie 1. Przygotowanie środowiska JAVA

Currenda EPO Instrukcja Konfiguracji. Wersja dokumentu: 1.3

Konfiguracja klientów SSH - PuTTY i WinSCP

KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED

Uruchamianie bazy PostgreSQL

Bezpieczne uruchamianie apletów wg

Books. by HansaWorld. Przewodnik instalacji. wersji 6.2

Instalacja i konfiguracja serwera SSH.

Usługi sieciowe systemu Linux

Instrukcja instalacji oprogramowania dla środowiska MacOS

Testowanie I. Celem zajęć jest zapoznanie studentów z podstawami testowania ze szczególnym uwzględnieniem testowania jednostkowego.

Architektury Usług Internetowych. Laboratorium 2. Usługi sieciowe

PROJEKTOWANIE APLIKACJI INTERNETOWYCH

Instrukcja instalacji serwera bazy danych Microsoft SQL Server Express 2014

Instrukcja instalacji programu ARPunktor wraz z serwerem SQL 2005 Express

WINDOWS Instalacja serwera WWW na systemie Windows XP, 7, 8.

Zdalny podgląd wizualizacji z panelu XV100 przez przeglądarkę internetową (WebServer)

Projektowanie aplikacji internetowych laboratorium

Instrukcja instalacji oprogramowania dla środowiska Windows

Instrukcja instalacji systemu. CardioScan 10, 11 i 12

Programowanie Urządzeń Mobilnych. Laboratorium nr 7, 8

Instrukcja instalacji oprogramowania dla środowiska Linux

*Wersja dla przeglądarki Internet Explorer. Instrukcja instalacji czytnika kart chipowych* dla Windows 7 (Konto korporacyjne) SGBe-kdbs

Programowanie I. O czym będziemy mówili. Plan wykładu nieco dokładniej. Plan wykładu z lotu ptaka. Podstawy programowania w językach. Uwaga!

Zaawansowane aplikacje internetowe - laboratorium

OpenGL Embedded Systems

INSTRUKCJA WGRYWANIA OPROGRAMOWANIA DO URZĄDZENIA PARROT CK3100 LCD

Język JAVA podstawy. wykład 1, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Informacje o aktualizacji oprogramowania

INSTALACJA SERWERA LOKALNEGO TYPU WAMP NA PRZYKŁADZIE PAKIETU KRASNAL SERV 2.7

Mirror Tool.

INSTRUKCJA UŻYTKOWNIKA Instalacja KS - EDE w systemie KS - ZSA ISO 9001:2008 Dokument: Wydanie: 1 Waga: 90

Problemy techniczne. Jak uruchomić program Optivum dla wybranej licencji w przypadku, gdy jednostka posiada dwie licencje na używanie programu?

Transkrypt:

Niniejszy dokument zawiera krótki opis języków programowania obsługiwanych przez platformę NPE X1000 wraz z przykładami tworzenia prostej aplikacji Hello World. Obecną wersję rozszerzono o opis obsługi wejść/wyjść za pomocą wymienionych języków oprogramowania wraz z przykładowym kodem aplikacji. Komunikacja przez FTP Aby umieścić gotowy program na urządzeniu można skorzystać z oprogramowania WinSCP dostępnego pod adresem http://winscp.net/download/winscp515.zip. Po uruchomieniu programu należy kliknąć New i ustawić kolejno: File protocol: FTP Encryption: No encryption Host name: <adres_ip_npex1000> (domyślnie 192.168.0.101) Port number: 21 User name: root Password: techbase Następnie kliknąć Save i nadać dowolną nazwę dla danej konfiguracji np. X1000FTP. Po dwukrotnym kliknięciu na utworzoną konfigurację zostanie nawiązane połączenie. Następnie należy wybrać lokalizację, w której znajduje się skompilowany program oraz lokalizację na, do której zostanie on przesłany. 1/41

TECHBASE (C) 2/41 Po przeciągnięciu pliku powinno pojawić się okno ze ścieżką docelową na urządzeniu. Należy zatwierdzić przyciskiem copy. Pliki należy kopiować w trybie binarnym. W przypadku kopiowania plików bezpośrednio z systemu Windows może być konieczne zastosowanie konwersji przy użyciu następującego polecenia: sudo dos2unix nazwa_pliku Komunikacja przez SSH W celu uzyskania dostępu do terminala modułu NPE X1000 można wykorzystać aplikację Putty, dostępną pod adresem http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Po uruchomieniu w miejsce Host Name(or IP address) należy wpisać adres IP urządzenia. Connection type ustawić jako SSH. Konfigurację należy zatwierdzić przyciskiem open. login as: root password: techbase 2/41

TECHBASE C) 3/41 Java - Hello World Wprowadzenie do języka Java to język programowania i platforma do tworzenia oprogramowania komputerowego wprowadzona przez firmę Sun Microsystems. Jest to podstawowa technologia wykorzystywana w najwyższej klasy programach, w tym narzędziach, grach i aplikacjach biznesowych. Java jest zainstalowana na ponad 850 milionach komputerów osobistych i miliardach urządzeń na całym świecie, w tym urządzeniach przenośnych i telewizorach. Źródło: http://www.java.com/pl/download/faq/whatis_java.xml Organizacja Środowiska Do tworzenia aplikacji w języku java można skorzystać ze środowiska Eclipse, dostępnego na stronie http://www.eclipse.org/downloads/ Po uruchomieniu środowiska Eclipse należy utworzyć nowy projekt. 3/41

TECHBASE (C) 4/41 Następnym krokiem jest nazwanie projektu oraz wybór środowiska JRE. W celu uruchomienia aplikacji na NPE X1000 należy wybrać JavaSE-1.6. Zatwierdzenie przyciskiem Finish. W celu dodania nowego pliku/klasy należy kliknąć PPM na katalog src w oknie projektu i wybrać new class. 4/41

TECHBASE C) 5/41 Następnie należy nazwać tworzoną klasę. Nowo utworzona klasa powinna pojawić się w oknie projektu w katalogu src, aby edytować zawartość pliku wystarczy dwuktrotnie kliknąć LPM na jego nazwę. Aplikacja HelloWorld.java Kod przykładowej aplikacji wypisującej Hello World! na ekranie komputera: public class Hello{ public static void main(string[] args){ System.out.print("Hello World!"); } } 5/41

TECHBASE (C) 6/41 Deployment Aby przetestować działanie napisanej aplikacji należy wybrać Run(ctrl+F11) z menu Run lub klinąć ikonę białej strzałki w zielonym kółku. W celu utworzenia wykonywalnego pliku należy wybrać File Export, a następnie wybrać z menu Java Runnable JAR file. 6/41

TECHBASE C) 7/41 Po kliknięciu Next pojawi się okno, w którym należy wybrać konfigurację oraz nazwa i miejsce zapisu pliku wynikowego. Otrzymany plik jest gotowy do uruchomienia na urządzeniu docelowym. Weryfikacja działania Najpierw należy uzyskać dostęp do terminala modułu NPE X1000 Następnie należy odszukać lokalizację naszej aplikacji oraz nadać jej uprawnienia wykonywania poleceniem: sudo chmod +x HelloWorld.jar oraz uruchomić ją poleceniem java -jar HelloWorld.jar Działanie programu: 7/41

TECHBASE (C) 8/41 Java wejścia/wyjścia Istnieje możliwość sterowania wejściami i wyjściami wykorzystując język Java, szczegółowy opis dostępu do wejść/wyjść znajduje się w rozdziale Dostęp do GPIO. Obsługa wejść/wyjść w Java Poniżej przedstawiono kod przykładowej aplikacji pozwalającej na odczytanie wartości konfigurowalnego wejścia/wyjścia cyfrowego GPIO, w tym celu zaprezentowano sposób odczytania wartości na wejściu cyfrowym DINOUT16, któremu odpowiada adres gpio72. W celu ustawienia wartości GPIO należy wykonać szereg czynności: 1. 2. 3. 4. 5. 6. 7. 8. Dodanie adresu gpio do pliku /sys/class/gpio/export Ustawienie kierunku gpio na in poprzez dopisanie in do pliku /sys/class/gpio/gpio72/direction Dodanie adresu gpio106 odpowiedzialnego za kierunek do pliku /sys/class/gpio/export Ustawienie kierunku gpio106 na out poprzez dopisanie out do pliku /sys/class/gpio/gpio106/direction Ustawienie wartości 0 powyższego gpio (1 dla out, 0 dla in) Dodanie adresu gpio odpowiadającego zegarowi przerzutników (gpio128) Ustawienie kierunku gpio128 jako out Zatrzaśnięcie wartości opadającym zboczem zegara przerzutników, poprzez dopisanie wartości 1, a następnie 0 do pliku /sys/class/gpio/gpio128/value 9. Odczytanie wartości DINOUT16, poprzez odczytanie zawartości pliku /sys/class/gpio/gpio72/value Kod aplikacji package npe_demo; import java.io.*; public class npe_demo { static int value; public static void main(string[] args) { FileWriter filewriter = null; try{ File export = new File("/sys/class/gpio/export"); filewriter = new FileWriter(export); filewriter.write("72"); filewriter.close(); }catch(ioexception ie){}; try{ File gpio72dir = new File("/sys/class/gpio/gpio72/direction"); filewriter = new FileWriter(gpio72dir); filewriter.write("in"); filewriter.close(); }catch(ioexception ie){}; try{ File export = new File("/sys/class/gpio/export"); filewriter = new FileWriter(export); filewriter.write("106"); filewriter.close(); }catch(ioexception ie){}; try{ 8/41

TECHBASE C) 9/41 File gpio106dir = new File("/sys/class/gpio/gpio106/direction"); filewriter = new FileWriter(gpio106dir); filewriter.write("out"); filewriter.close(); }catch(ioexception ie){}; try{ File gpio106val = new File("/sys/class/gpio/gpio106/value"); filewriter = new FileWriter(gpio106val); filewriter.write("0"); filewriter.close(); }catch(ioexception ie){}; try{ File export = new File("/sys/class/gpio/export"); filewriter = new FileWriter(export); filewriter.write("128"); filewriter.close(); }catch(ioexception ie){}; try{ File gpio128dir = new File("/sys/class/gpio/gpio128/direction"); filewriter = new FileWriter(gpio128dir); filewriter.write("out"); filewriter.close(); }catch(ioexception ie){}; try{ File gpio128val = new File("/sys/class/gpio/gpio128/value"); filewriter = new FileWriter(gpio128val); filewriter.write("1"); filewriter.close(); }catch(ioexception ie){}; try{ File gpio128val = new File("/sys/class/gpio/gpio128/value"); filewriter = new FileWriter(gpio128val); filewriter.write("0"); filewriter.close(); }catch(ioexception ie){}; try{ File gpio72val = new File("/sys/class/gpio/gpio72/value"); FileReader fr = new FileReader(gpio72val); value = (char)fr.read(); fr.close(); }catch(ioexception ie){}; System.out.println("Value is: "+(char)value); } } Weryfikacja działania Film przedstawiający działanie aplikacji odczytującej stan DINOUT16: http://screencast.com/t/pr977toee 9/41

TECHBASE (C) 10/41 Python - Hello World Wprowadzenie do języka Python jest językiem programowania starającym się zawrzeć w sobie najlepsze rozwiązania i intencje innych języków programowania, które pojawiły się i były udoskonalane w przeciągu ostatniego dwudziestolecia. Jest on interpretowanym, obiektowym, wysokopoziomowym językiem co ułatwia jego testowanie i stosowanie w sposób interaktywny. Python to oprogramowanie typu Open-Source zarządzany przez Python Software Foundation, działające na wielu platformach, takich jak: GNU/Linux, Mac OS czy Windows. Źródło: http://pl.python.org/o,jezyku,python.html Organizacja Środowiska Należy upewnić się, że na urządzeniu znajduje się aktualna paczka Python. Listę dostępnych pakietów można wyświetlić poleceniem: softmgr list W celu pobrania i zainstalowania aktualnej paczki należy użyć polecenia: softmgr update python Aplikacja HelloWorld.py Do utworzenia skryptu w języku Python wystarczy dowolny edytor tekstu. Kod przykładowej aplikacji wypisującej Hello, World! na ekranie komputera: #!/usr/bin/python print "Hello, World!"; Plik z kodem należy zapisać z rozszerzeniem.py. Otrzymany plik jest gotowy do uruchomienia na urządzeniu docelowym. 10/41

TECHBASE C) 11/41 Weryfikacja działania Najpierw należy uzyskać dostęp do terminala modułu NPE X1000 Następnie należy odszukać lokalizację naszej aplikacji oraz nadać jej uprawnienia wykonywania poleceniem: sudo chmod +x HelloWorld.py oraz uruchomić ją poleceniem python HelloWorld.py Działanie programu: 11/41

TECHBASE (C) 12/41 Python wejścia/wyjścia Istnieje możliwość sterowania wejściami i wyjściami wykorzystując język Python, szczegółowy opis dostępu do wejść/wyjść znajduje się w rozdziale Dostęp do GPIO. Obsługa wejść/wyjść w Python Poniżej przedstawiono kod przykładowej aplikacji pozwalającej na odczytanie wartości konfigurowalnego wejścia/wyjścia cyfrowego GPIO, w tym celu zaprezentowano sposób odczytania wartości na wejściu cyfrowym DINOUT16, któremu odpowiada adres gpio72. W celu ustawienia wartości GPIO należy wykonać szereg czynności: 1. 2. 3. 4. 5. 6. 7. 8. Dodanie adresu gpio do pliku /sys/class/gpio/export Ustawienie kierunku gpio na in poprzez dopisanie in do pliku /sys/class/gpio/gpio72/direction Dodanie adresu gpio106 odpowiedzialnego za kierunek do pliku /sys/class/gpio/export Ustawienie kierunku gpio106 na out poprzez dopisanie out do pliku /sys/class/gpio/gpio106/direction Ustawienie wartości 0 powyższego gpio (1 dla out, 0 dla in) Dodanie adresu gpio odpowiadającego zegarowi przerzutników (gpio128) Ustawienie kierunku gpio128 jako out Zatrzaśnięcie wartości opadającym zboczem zegara przerzutników, poprzez dopisanie wartości 1, a następnie 0 do pliku /sys/class/gpio/gpio128/value 9. Odczytanie wartości DINOUT16, poprzez odczytanie zawartości pliku /sys/class/gpio/gpio72/value Kod aplikacji #!/usr/bin/python try: file = open('/sys/class/gpio/export', 'w') file.write('72') file.close() except: pass file=open("/sys/class/gpio/gpio72/direction", "w") file.write("in") file.close() try: file = open("/sys/class/gpio/export", "w") file.write("106") file.close() except: pass file = open("/sys/class/gpio/gpio106/direction", "w") file.write("out") file.close() file = open("/sys/class/gpio/gpio106/value", "w") file.write("0") file.close() try: file = open("/sys/class/gpio/export", "w") file.write("128") file.close() except: 12/41

TECHBASE C) 13/41 pass file = open("/sys/class/gpio/gpio128/direction", "w") file.write("out") file.close() file = open("/sys/class/gpio/gpio128/value", "w") file.write("1") file.close() file = open("/sys/class/gpio/gpio128/value", "w") file.write("0") file.close() file = open("/sys/class/gpio/gpio72/value", "r") value = file.read() file.close() print("value is: " + value) Weryfikacja działania Film przedstawiający działanie aplikacji odczytującej stan DINOUT16: http://screencast.com/t/6ejhvl4o6cc 13/41

TECHBASE (C) 14/41 Ruby - Hello World Wprowadzenie do języka Ruby jest językiem starannie dobranej równowagi. Jego twórca, Yukihiro Matz Matsumoto, połączył części jego ulubionych języków (Perla, Smalltalka, Eiffel, Ady i Lispa) by uformować nowy język, który zbalansował programowanie funkcjonalne wraz z programowanie imperatywnym. Źródło: http://www.ruby-lang.org/pl/about/ Organizacja Środowiska * Należy upewnić się, że na urządzeniu znajduje się aktualna paczka Ruby. Listę dostępnych pakietów można wyświetlić poleceniem: softmgr list Paczkę Ruby pobrać oraz zainstalować używając polecenia: softmgr update ruby Poprawna instalacja zakończy się komunikatem: Aplikacja HelloWorld.rb Do utworzenia skryptu w języku Ruby wystarczy dowolny edytor tekstu. Kod przykładowej aplikacji wypisującej Hello, World! na ekranie komputera: #!/usr/bin/ruby puts 'Hello, World!'; Plik z kodem należy zapisać z rozszerzeniem.rb. Otrzymany plik jest gotowy do uruchomienia na urządzeniu docelowym. 14/41

TECHBASE C) 15/41 Weryfikacja działania Najpierw należy uzyskać dostęp do terminala modułu NPE X1000. Następnie należy odszukać lokalizację naszej aplikacji oraz nadać jej uprawnienia wykonywania poleceniem: sudo chmod +x HelloWorld.rb oraz uruchomić ją poleceniem ruby HelloWorld.rb Działanie programu: 15/41

TECHBASE (C) 16/41 Ruby wejścia/wyjścia Istnieje możliwość sterowania wejściami i wyjściami wykorzystując język Ruby, szczegółowy opis dostępu do wejść/wyjść znajduje się w rozdziale Dostęp do GPIO. Obsługa wejść/wyjść w Ruby Poniżej przedstawiono kod przykładowej aplikacji pozwalającej na odczytanie wartości konfigurowalnego wejścia/wyjścia cyfrowego GPIO, w tym celu zaprezentowano sposób odczytania wartości na wejściu cyfrowym DINOUT16, któremu odpowiada adres gpio72. W celu ustawienia wartości GPIO należy wykonać szereg czynności: 1. 2. 3. 4. 5. 6. 7. 8. Dodanie adresu gpio do pliku /sys/class/gpio/export Ustawienie kierunku gpio na in poprzez dopisanie in do pliku /sys/class/gpio/gpio72/direction Dodanie adresu gpio106 odpowiedzialnego za kierunek do pliku /sys/class/gpio/export Ustawienie kierunku gpio106 na out poprzez dopisanie out do pliku /sys/class/gpio/gpio106/direction Ustawienie wartości 0 powyższego gpio (1 dla out, 0 dla in) Dodanie adresu gpio odpowiadającego zegarowi przerzutników (gpio128) Ustawienie kierunku gpio128 jako out Zatrzaśnięcie wartości opadającym zboczem zegara przerzutników, poprzez dopisanie wartości 1, a następnie 0 do pliku /sys/class/gpio/gpio128/value 9. Odczytanie wartości DINOUT16, poprzez odczytanie zawartości pliku /sys/class/gpio/gpio72/value Kod aplikacji #!/usr/bin/ruby File.open("/sys/class/gpio/export", 'w') { file file.write("72") } File.open("/sys/class/gpio/gpio72/direction", 'w') { file file.write("in") } File.open("/sys/class/gpio/export", 'w') { file file.write("106") } File.open("/sys/class/gpio/gpio106/direction", 'w') { file file.write("out") } File.open("/sys/class/gpio/gpio106/value", 'w') { file file.write("0") } File.open("/sys/class/gpio/export", 'w') { file file.write("128") } File.open("/sys/class/gpio/gpio128/direction", 'w') { file file.write("out") } File.open("/sys/class/gpio/gpio128/value", 'w') { file file.write("1") } File.open("/sys/class/gpio/gpio128/value", 'w') { file file.write("0") } File.open("/sys/class/gpio/gpio72/value", 'rb') { file $value=file.gets} puts "Value is: #$value" Weryfikacja działania Film przedstawiający działanie aplikacji odczytującej stan DINOUT16: http://screencast.com/t/xox0afsukljl 16/41

TECHBASE C) 17/41 Lua - Hello World Wprowadzenie do języka Lua jest lekkim językiem skryptowym, którego głównym przeznaczeniem jest osadzanie w innych programach celem rozszerzenia ich możliwości. Największą zaletą Lua jest prostota. Język został napisany w ANSI C, można go skompilować na wiele różnych platform (także bare-metal). Lua znajduje swoje miejsce tam, gdzie nie zmieści się Perl, Ruby czy Python. Źródło: http://caladan.jogger.pl/2011/01/09/lua-lekki-jezyk-skryptowy/ Organizacja Środowiska Należy upewnić się, że na urządzeniu znajduje się aktualna paczka Lua. Listę dostępnych pakietów można wyświetlić poleceniem: softmgr list W celu pobrania i zainstalowania aktualnej paczki należy użyć polecenia: softmgr update lua Poprawna operacja aktualizacji paczki powinna zakończyć się komunikatem: Aplikacja HelloWorld.lua Do utworzenia skryptu w języku Lua wystarczy dowolny edytor tekstu. Kod przykładowej aplikacji wypisującej Hello, World! na ekranie komputera: #!/usr/bin/lua print ("Hello World!") Plik z kodem należy zapisać z rozszerzeniem.lua. Otrzymany plik jest gotowy do uruchomienia na urządzeniu docelowym. 17/41

TECHBASE (C) 18/41 Weryfikacja działania Najpierw należy uzyskać dostęp do terminala modułu NPE X1000. Następnie należy odszukać lokalizację naszej aplikacji oraz nadać jej uprawnienia wykonywania poleceniem: sudo chmod +x HelloWorld.lua oraz uruchomić ją poleceniem lua HelloWorld.lua Działanie programu: 18/41

TECHBASE C) 19/41 Lua wejścia/wyjścia Istnieje możliwość sterowania wejściami i wyjściami wykorzystując język Lua, szczegółowy opis dostępu do wejść/wyjść znajduje się w rozdziale Dostęp do GPIO. Obsługa wejść/wyjść w Lua Poniżej przedstawiono kod przykładowej aplikacji pozwalającej na odczytanie wartości konfigurowalnego wejścia/wyjścia cyfrowego GPIO, w tym celu zaprezentowano sposób odczytania wartości na wejściu cyfrowym DINOUT16, któremu odpowiada adres gpio72. W celu ustawienia wartości GPIO należy wykonać szereg czynności: 1. 2. 3. 4. 5. 6. 7. 8. Dodanie adresu gpio do pliku /sys/class/gpio/export Ustawienie kierunku gpio na in poprzez dopisanie in do pliku /sys/class/gpio/gpio72/direction Dodanie adresu gpio106 odpowiedzialnego za kierunek do pliku /sys/class/gpio/export Ustawienie kierunku gpio106 na out poprzez dopisanie out do pliku /sys/class/gpio/gpio106/direction Ustawienie wartości 0 powyższego gpio (1 dla out, 0 dla in) Dodanie adresu gpio odpowiadającego zegarowi przerzutników (gpio128) Ustawienie kierunku gpio128 jako out Zatrzaśnięcie wartości opadającym zboczem zegara przerzutników, poprzez dopisanie wartości 1, a następnie 0 do pliku /sys/class/gpio/gpio128/value 9. Odczytanie wartości DINOUT16, poprzez odczytanie zawartości pliku /sys/class/gpio/gpio72/value Kod aplikacji #!/usr/bin/lua file = io.open("/sys/class/gpio/export", "w") file:write("72") file:close() file=io.open("/sys/class/gpio/gpio72/direction", "w") file:write("in") file:close() file=io.open("/sys/class/gpio/export", "w") file:write("106") file:close() file=io.open("/sys/class/gpio/gpio106/direction", "w") file:write("out") file:close() file=io.open("/sys/class/gpio/gpio106/value", "w") file:write("0") file:close() file=io.open("/sys/class/gpio/export", "w") file:write("128") file:close() file=io.open("/sys/class/gpio/gpio128/direction", "w") file:write("out") file:close() file=io.open("/sys/class/gpio/gpio128/value", "w") file:write("1") 19/41

TECHBASE (C) 20/41 file:close() file=io.open("/sys/class/gpio/gpio128/value", "w") file:write("0") file:close() file=io.open("/sys/class/gpio/gpio72/value", "r") value=file:read() print("value is: \n".. value) file:close() Weryfikacja działania Film przedstawiający działanie aplikacji odczytującej stan DINOUT16: http://screencast.com/t/chspbxtjg1iv 20/41

TECHBASE C) 21/41 Perl - Hello World Wprowadzenie do języka Perl jest interpretowanym językiem programowania, świetnie nadającym się do przeszukiwania i wydobywania informacji z plików tekstowych a następnie do generowania raportów na podstawie zebranych danych. Jego autorem jest Larry Wall. Jest to język łatwy, bardzo elastyczny, posiadający wiele cech innych języków, m. in. języka C. Jest on także często wykorzystywany do tworzenia skryptów CGI obsługujących interakcję z użytkownikiem strony WWW. Źródło: http://wieluk.republika.pl/s/operlu.html Organizacja Środowiska Należy upewnić się, że na urządzeniu znajduje się aktualna paczka Perl. Listę dostępnych pakietów można wyświetlić poleceniem: softmgr list W celu pobrania i zainstalowania aktualnej paczki należy użyć polecenia: softmgr update perl Poprawna operacja aktualizacji paczki powinna zakończyć się komunikatem: Aplikacja HelloWorld.pl Do utworzenia skryptu w języku Perl wystarczy dowolny edytor tekstu. Kod przykładowej aplikacji wypisującej Hello, World! na ekranie komputera: #!/usr/bin/perl print "Hello, World!\n"; Plik z kodem należy zapisać z rozszerzeniem.pl Otrzymany plik jest gotowy do uruchomienia na urządzeniu docelowym. 21/41

TECHBASE (C) 22/41 Weryfikacja działania Najpierw należy uzyskać dostęp do terminala modułu NPE X1000. Następnie należy odszukać lokalizację naszej aplikacji oraz nadać jej uprawnienia wykonywania poleceniem: sudo chmod +x HelloWorld.pl oraz uruchomić ją poleceniem perl HelloWorld.pl Działanie programu: 22/41

TECHBASE C) 23/41 Perl wejścia/wyjścia Istnieje możliwość sterowania wejściami i wyjściami wykorzystując język Perl, szczegółowy opis dostępu do wejść/wyjść znajduje się w rozdziale Dostęp do GPIO. Obsługa wejść/wyjść w Perl Poniżej przedstawiono kod przykładowej aplikacji pozwalającej na odczytanie wartości konfigurowalnego wejścia/wyjścia cyfrowego GPIO, w tym celu zaprezentowano sposób odczytania wartości na wejściu cyfrowym DINOUT16, któremu odpowiada adres gpio72. W celu ustawienia wartości GPIO należy wykonać szereg czynności: 1. 2. 3. 4. 5. 6. 7. 8. Dodanie adresu gpio do pliku /sys/class/gpio/export Ustawienie kierunku gpio na in poprzez dopisanie in do pliku /sys/class/gpio/gpio72/direction Dodanie adresu gpio106 odpowiedzialnego za kierunek do pliku /sys/class/gpio/export Ustawienie kierunku gpio106 na out poprzez dopisanie out do pliku /sys/class/gpio/gpio106/direction Ustawienie wartości 0 powyższego gpio (1 dla out, 0 dla in) Dodanie adresu gpio odpowiadającego zegarowi przerzutników (gpio128) Ustawienie kierunku gpio128 jako out Zatrzaśnięcie wartości opadającym zboczem zegara przerzutników, poprzez dopisanie wartości 1, a następnie 0 do pliku /sys/class/gpio/gpio128/value 9. Odczytanie wartości DINOUT16, poprzez odczytanie zawartości pliku /sys/class/gpio/gpio72/value Kod aplikacji #!/usr/bin/perl open file, ">", "/sys/class/gpio/export" or die $!; print file "72"; close file; open file, ">", "/sys/class/gpio/gpio72/direction" or die $!; print file "in"; close file; open file, ">", "/sys/class/gpio/export" or die $!; print file "106"; close file; open file, ">", "/sys/class/gpio/gpio106/direction" or die $!; print file "out"; close file; open file, ">", "/sys/class/gpio/gpio106/value" or die $!; print file "0"; close file; open file, ">", "/sys/class/gpio/export" or die $!; print file "128"; close file; open file, ">", "/sys/class/gpio/gpio128/direction" or die $!; print file "out"; close file; open file, ">", "/sys/class/gpio/gpio128/value" or die $!; print file "1"; 23/41

TECHBASE (C) 24/41 close file; open file, ">", "/sys/class/gpio/gpio128/value" or die $!; print file "0"; close file; open file, "<", "/sys/class/gpio/gpio72/value" or die $!; while (my $value = <file>) { print "Value is: $value"; } ; close file; Weryfikacja działania Film przedstawiający działanie aplikacji odczytującej stan DINOUT16: http://screencast.com/t/ewqsgqm38m 24/41

TECHBASE C) 25/41 PHP - Hello World Wprowadzenie do języka PHP - obiektowy, skryptowy język programowania zaprojektowany do generowania stron internetowych w czasie rzeczywistym. PHP jest najczęściej stosowany do uruchamiania skryptów po stronie serwera WWW, ale może być również używany do przetwarzania danych z poziomu wiersza poleceń, a nawet do pisania programów pracujących w trybie graficznym (np. za pomocą biblioteki GTK+). Implementacja PHP wraz z serwerem WWW Apache oraz serwerem baz danych MySQL określana jest jako platforma AMP (w środowisku Linux - LAMP, w Windows - WAMP). Źródło: http://pl.wikipedia.org/wiki/php Organizacja Środowiska Należy upewnić się, że na urządzeniu znajduje się aktualna paczka PHP. Listę dostępnych pakietów można wyświetlić poleceniem: softmgr list W celu pobrania i zainstalowania aktualnej paczki należy użyć polecenia: softmgr update php -b X1000stable Jeśli wszystko przebiegło poprawnie powinien pojawić się następujący komunikat: 25/41

TECHBASE (C) 26/41 Aplikacja HelloWorld.php Do utworzenia skryptu w języku PHP wystarczy dowolny edytor tekstu. Kod przykładowej aplikacji wypisującej Hello World! na ekranie komputera: <?php Echo "Hello, World!\n";?> Plik z kodem należy zapisać z rozszerzeniem.php. Otrzymany plik jest gotowy do uruchomienia na urządzeniu docelowym. Weryfikacja działania Najpierw należy uzyskać dostęp do terminala modułu NPE X1000 Następnie należy odszukać lokalizację naszej aplikacji oraz nadać jej uprawnienia wykonywania poleceniem: sudo chmod +x HelloWorld.php oraz uruchomić ją poleceniem php HelloWorld.php Działanie programu: 26/41

TECHBASE C) 27/41 PHP wejścia/wyjścia Istnieje możliwość sterowania wejściami i wyjściami wykorzystując język PHP, szczegółowy opis dostępu do wejść/wyjść znajduje się w rozdziale Dostęp do GPIO. Obsługa wejść/wyjść w PHP Poniżej przedstawiono kod przykładowej aplikacji pozwalającej na odczytanie wartości konfigurowalnego wejścia/wyjścia cyfrowego GPIO, w tym celu zaprezentowano sposób odczytania wartości na wejściu cyfrowym DINOUT16, któremu odpowiada adres gpio72. W celu ustawienia wartości GPIO należy wykonać szereg czynności: 1. 2. 3. 4. 5. 6. 7. 8. Dodanie adresu gpio do pliku /sys/class/gpio/export Ustawienie kierunku gpio na in poprzez dopisanie in do pliku /sys/class/gpio/gpio72/direction Dodanie adresu gpio106 odpowiedzialnego za kierunek do pliku /sys/class/gpio/export Ustawienie kierunku gpio106 na out poprzez dopisanie out do pliku /sys/class/gpio/gpio106/direction Ustawienie wartości 0 powyższego gpio (1 dla out, 0 dla in) Dodanie adresu gpio odpowiadającego zegarowi przerzutników (gpio128) Ustawienie kierunku gpio128 jako out Zatrzaśnięcie wartości opadającym zboczem zegara przerzutników, poprzez dopisanie wartości 1, a następnie 0 do pliku /sys/class/gpio/gpio128/value 9. Odczytanie wartości DINOUT16, poprzez odczytanie zawartości pliku /sys/class/gpio/gpio72/value Kod aplikacji <?php $file = fopen('/sys/class/gpio/export', 'w'); fwrite($file, '72'); fclose($file); $file = fopen('/sys/class/gpio/gpio72/direction', 'w'); fwrite($file, 'in'); fclose($file); $file = fopen('/sys/class/gpio/export', 'w'); fwrite($file, '106'); fclose($file); $file = fopen('/sys/class/gpio/gpio106/direction', 'w'); fwrite($file, 'out'); fclose($file); $file = fopen('/sys/class/gpio/gpio106/value', 'w'); fwrite($file, '0'); fclose($file); $file = fopen('/sys/class/gpio/export', 'w'); fwrite($file, '128'); fclose($file); $file = fopen('/sys/class/gpio/gpio128/direction', 'w'); fwrite($file, 'out'); fclose($file); $file = fopen('/sys/class/gpio/gpio128/value', 'w'); fwrite($file, '1'); fclose($file); 27/41

TECHBASE (C) 28/41 $file = fopen('/sys/class/gpio/gpio128/value', 'w'); fwrite($file, '0'); fclose($file); $file = fopen('/sys/class/gpio/gpio72/value', 'r'); $value = fread($file, 1); fclose($file); Echo "Value is: $value\n"?> Weryfikacja działania Film przedstawiający działanie aplikacji odczytującej stan DINOUT16: http://screencast.com/t/ga67vnkwt 28/41

TECHBASE C) 29/41 ANSI C - Hello World Wprowadzenie do języka Imperatywny, strukturalny język programowania wysokiego poziomu stworzony na początku lat siedemdziesiątych XX w. przez Dennisa Ritchiego do programowania systemów operacyjnych i innych zadań niskiego poziomu. Źródło: https://pl.wikipedia.org/wiki/c_%28j%c4%99zyk_programowania%29 Organizacja Środowiska Należy upewnić się, że system, na którym mamy zamiar przeprowadzić crosscompilację jest 64 bitowy. Można to zrobić przy pomocy polecenia: uname -a Wynik takiej operacji: Kolejnym krokiem jest pobranie odpowiedniego toolchaina. Należy pobrać angstrom-eglibc-x86_64-armv7a-vfp-neon-v2012.12-toolchain.gz z adresu http://www.angstrom-distribution.org/toolchains/ Pobrane archiwum należy rozpakować poleceniem: gunzip angstrom-eglibc-x86_64-armv7a-vfp-neon-v2012.12-toolchain.gz Jeśli wszystko przebiegło poprawnie, pojawił się plik angstrom-eglibc-x86_64-armv7a-vfp-neon-v2012.12-toolchain. Należy nadal mu uprawnienia wykonywania poleceniem: sudo chmod +x angstrom-eglibc-x86_64-armv7a-vfp-neon-v2012.12-toolchain Następnie uruchomić poleceniem:./angstrom-eglibc-x86_64-armv7a-vfp-neon-v2012.12-toolchain Pojawi się pytanie o podanie lokaliazji docelowej dla toolchaina, domyślnie /usr/local/oecore-x86_64, wystarczy zatwierdzić wciskając klawisz enter. Następnie prośba o potwierdzenie instalacji, wystarczy zatwierdzić wciskając klawisz enter lub wpisać y i potwierdzić klawiszem enter. 29/41

TECHBASE (C) Poprawnie przeprowadzona operacja zakończy się komunikatem: Kolejnym krokiem jest pobranie i zainstalowanie oprogramowania Eclipse. Wystarczy użyć polecenia: 30/41 sudo apt-get install eclipse-cdt Należy uruchomić pobrane środowisko poleceniem: eclipse Po uruchomieniu pojawi się okno z wyborem ścieżki, w której przechowywany będzie nasz projekt. Następnie należy wybrać File New Project 30/41

TECHBASE C) W kolejnym kroku wybieramy C/C++ C Project Następnie nadajemy nazwę projektu np. HelloWorld, wybieramy Empty Project oraz CrossGCC i klikamy next. 31/41 31/41

TECHBASE (C) Na kolejnym ekranie klikamy Next. Klikamy Finish i następnie Yes. 32/41 32/41

TECHBASE C) 33/41 W Project Manager klikamy PPM na HelloWorld i wybieramy Build Configurations Manage. W nowym oknie klikamy New. Należy wpisać nazwę np. CrossKompilacja oraz wybrać Existing configuration Debug i zatwierdzić przyciskiem OK. 33/41

TECHBASE (C) 34/41 Ponownie w Project Manager należy kliknąć PPM na HelloWorld i wybrać Properties. W C/C++ Build Setting należy wybrać Cross GCC Compiler i w Command wpisać ścieżkę dostępu do naszego kompilatora: /usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/usr/armv7a-vfp-neon-anstrom-linux -gnueabi/arm-angstrom-linux-gnueabi-gcc 34/41

TECHBASE C) 35/41 Następnie w Cross GCC Compiler należy kliknąć Includes kliknąć przycisk Add i wpisać ścieżkę: /usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/usr/include/ W następnym kroku należy wpisać w Cross GCC Linker w Command ścieżkę: /usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/usr/armv7a-vfp-neon-anstrom-linux -gnueabi/arm-angstrom-linux-gnueabi-gcc 35/41

TECHBASE (C) 36/41 Następnie pod Cross GCC Linker w Libraries w oknie pod Library search path należy kliknąć przycisk Add i podać ścieżkę: /usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/usr/lib/ Kolejnym krokiem jest ustawienie w Cross GCC Assembler w Command ścieżki: /usr/local/oecore-x86_64/sysroots/x86_64-angstromsdk-linux/usr/armv7a-vfp-neon-anstrom-linux -gnueabi/arm-angstrom-linux-gnueabi-as 36/41

TECHBASE C) 37/41 Wszystko należy zatwierdzić przyciskiem OK. Ostatnim krokiem jest kliknięcie PPM na HelloWorld w Project Manager i wybranie Build Configurations Set Active CrossKompilacja. Aplikacja HelloWorld.c Aby dodać nowy plik do projektu w Eclipse należy kliknąć PPM na HelloWorld w Project Manager i wybrać New File. 37/41

TECHBASE (C) Nadajemy nazwę pliku np. hello.c Kod przykładowej aplikacji wypisującej Hello World! na ekranie komputera: 38/41 #include <stdio.h> int main (void) { printf("hello World!"); return 0; } 38/41

TECHBASE C) 39/41 Deployment Aby skompilować program i uzyskać wykonywalny plik wynikowy należy kliknąć Project Build Project. Jeśli wszystko przebiegło poprawnie powinniśmy uzyskać komunikat Build Finished Utworzony plik HelloWorld jest gotowy do umieszczenia na urządzeniu NPE X1000. Weryfikacja działania Najpierw należy uzyskać dostęp do terminala modułu NPE X1000 Następnie należy odszukać lokalizację naszej aplikacji oraz nadać jej uprawnienia wykonywania poleceniem: sudo chmod +x HelloWorld oraz uruchomić ją poleceniem./helloworld Działanie programu: 39/41

TECHBASE (C) 40/41 ANSI C wejścia/wyjścia Aby umożliwić uruchomienie aplikacji napisanej w języku C na urządzeniu NPE należy przeprowadzić operację crosskompilacji. Proces ten został szczegółowo opisany w rozdziale ansi_c_-_hello_world. Natomiast sposób dostępu do wejść/wyjść NPE X1000 został opisany w rozdziale Dostęp do GPIO. Obsługa wejść/wyjść w C Poniżej przedstawiono kod przykładowej aplikacji pozwalającej na odczytanie wartości konfigurowalnego wejścia/wyjścia cyfrowego GPIO, w tym celu zaprezentowano sposób odczytania wartości na wejściu cyfrowym DINOUT16, któremu odpowiada adres gpio72. W celu ustawienia wartości GPIO należy wykonać szereg czynności: 1. 2. 3. 4. 5. 6. 7. 8. 9. Deklaracja zmiennej typu FILE Dodanie adresu gpio do pliku /sys/class/gpio/export Ustawienie kierunku gpio na in poprzez dopisanie in do pliku /sys/class/gpio/gpio72/direction Dodanie adresu gpio106 odpowiedzialnego za kierunek do pliku /sys/class/gpio/export Ustawienie kierunku gpio106 na out poprzez dopisanie out do pliku /sys/class/gpio/gpio106/direction Ustawienie wartości 0 powyższego gpio (1 dla out, 0 dla in) Dodanie adresu gpio odpowiadającego zegarowi przerzutników (gpio128) Ustawienie kierunku gpio128 jako out Zatrzaśnięcie wartości opadającym zboczem zegara przerzutników, poprzez dopisanie wartości 1, a następnie 0 do pliku /sys/class/gpio/gpio128/value 10. Odczytanie wartości DINOUT16, poprzez odczytanie zawartości pliku /sys/class/gpio/gpio72/value Kod aplikacji #include <stdio.h> #include <stdlib.h> #include <string.h> FILE int *file_gpio; value; int main() { file_gpio=fopen("/sys/class/gpio/export", "w"); fprintf(file_gpio, "72"); fclose(file_gpio); file_gpio=fopen("/sys/class/gpio/gpio72/direction", "w"); fprintf(file_gpio, "in"); fclose(file_gpio); file_gpio=fopen("/sys/class/gpio/export", "w"); fprintf(file_gpio, "106"); fclose(file_gpio); file_gpio=fopen("/sys/class/gpio/gpio106/direction", "w"); fprintf(file_gpio, "out"); fclose(file_gpio); file_gpio=fopen("/sys/class/gpio/gpio106/value", "w"); fprintf(file_gpio, "0"); fclose(file_gpio); 40/41

TECHBASE C) 41/41 file_gpio=fopen("/sys/class/gpio/export", "w"); fprintf(file_gpio, "128"); fclose(file_gpio); file_gpio=fopen("/sys/class/gpio/gpio128/direction", "w"); fprintf(file_gpio, "out"); fclose(file_gpio); file_gpio=fopen("/sys/class/gpio/gpio128/value", "w"); fprintf(file_gpio, "1"); fclose(file_gpio); file_gpio=fopen("/sys/class/gpio/gpio128/value", "w"); fprintf(file_gpio, "0"); fclose(file_gpio); file_gpio=fopen("/sys/class/gpio/gpio72/value", "r"); fscanf(file_gpio, "%d", &value); fclose(file_gpio); fprintf(stdout, "Value is: %d\n", value); return 0; } Weryfikacja działania Film przedstawiający działanie aplikacji odczytującej stan DINOUT16: http://screencast.com/t/q30rgglrsvwx 41/41