Specjalność studiów I i II stopnia
Oferta dydaktyczna IAiR

Programowanie niskopoziomowe

Cel

Poszerzenie wiedzy studentów w zakresie programowania z wykorzystaniem niskopoziomowych funkcji systemu Windows. Zaprezentowanie wybranych zagadnień języka asemblerowego w tym rozkazów technologii MMX oraz SSE.

Opis

Obsługa portów zewnętrznych RS-232 oraz USB. Konfigurowanie połączeń, pobieranie informacji o urządzeniu, przesyłanie danych z i do komputera. Wykorzystanie sieci komputerowej do transmisji danych za pomocą protokołów UDP oraz TCP. Kamera cyfrowa. Przechwytywanie obrazów w systemach ich analizy bazujące na dedykowanym SDK kamery. Wykorzystanie biblioteki DirectX do pobierania i dekodowania strumienia danych wideo w zastosowaniach multimedialnych. Podstawowe informacje na temat budowy procesorów rodziny x86. Struktura stosu, konwencje wywołania funkcji, wybrane rozkazy asemblera. Technologie MMX i SSE, najważniejsze instrukcje. Pamięć fizyczna, pamięć wirtualna, zarządzanie jej zasobami. Mapowanie plików w pamięci. Współdzielenie danych pomiędzy procesami. Rola sterowników urządzeń w systemie Windows. Opis ich budowy oraz działania.

Wymagania

Znajomość programowania w języku C++

Bibliografia

  1. Andrzej Daniluk, „RS 232C – praktyczne programowanie. Od Pascala i C++ do Delphi i Buildera”,wydanie III, Helion
  2. Andrzej Daniluk, „USB Praktyczne programowanie z Windows API w C++”,Helion, 2009
  3. Rob Scrimger, Paul LaSalle, Clay Leitzke, Mridula Parihar, Meeta Gupta, „TCP/IP. Biblia”, Helion, 2002
  4. Stanisław Kruk, „Kurs programowania w języku Asembler - dla średnio zaawansowanych”, MIKOM, 2001

Metody oceny

Ostateczna ocena liczona jest jako średnia ważona z ocen cząstkowych, przy założeniu, że uzyskane oceny składowe są pozytywne.
Wykład: Ocena ze sprawdzianu kończącego wykład. Waga: 0.4
Projekt: Ocena z wykonanego zadania projektowego. Waga: 0.6

Szczegółowy rozkład zajęć

Nr Temat Opis Wymiar
0

Inicjalizacja wpierającej standard IIDC kamery firewire. Pobranie informacji takich jak numer seryjny czy model podpietej kamery. Ustawienie odpowiednich parametrów pracy. Rozpoczęcie pracy, pobranie serii obrazów oraz zakończenie pracy.

Wykorzystanie biblioteki DirectX do akwizycji i dekodowania strumienia danych wideo w zastosowaniach multimedialnych. Pokazanie jak korzystając z odpowiednich filtrów można stworzyć uniwersalny program, który będzie współpracował z kamerami, dla których ich producent opracował odpowiedni filtr wejściowy.    

0
0

Inicjalizacja wpierającej standard IIDC kamery firewire. Pobranie informacji takich jak numer seryjny czy model podpietej kamery. Ustawienie odpowiednich parametrów pracy. Rozpoczęcie pracy, pobranie serii obrazów oraz zakończenie pracy.

Wykorzystanie biblioteki DirectX do akwizycji i dekodowania strumienia danych wideo w zastosowaniach multimedialnych. Pokazanie jak korzystając z odpowiednich filtrów można stworzyć uniwersalny program, który będzie współpracował z kamerami, dla których ich producent opracował odpowiedni filtr wejściowy.    

0
0 0
1 Komunikacja zewnętrzna

Komunikacja zewnętrzna z wykorzystaniem protokołu RS-232. Utworzenie połączenia w tym standardzie, jego konfiguracja, przesłanie danych do urządzenia oraz odbiór danych wysłanych przez to urządzenie. Użycie konwertera RS-232 <=> USB, FT232R, pokazanie możliwości, jakie daje skorzystanie z jego SDK.  Interfejs USB, wykorzystanie dostępnych z poziomu kodu użytkownika funkcji Windows DDK ( Driver Development Kit ) z rodziny HidD_ do identyfikacji podłączonego do systemu urządzenia USB. Transmisja danych poprzez sieć z użyciem protokołów UDP oraz TCP. Pokazanie jak od strony serwera i klienta wygląda nawiązanie połączenia, wymiana danych oraz zakończenie połączenia.

W 5
2 Przechwytywanie obrazu wideo

Inicjalizacja wpierającej standard IIDC ( Instrumentation & Industrial Digital Camera ) kamery firewire. Pobranie informacji takich jak numer seryjny czy model podpiętej kamery. Ustawienie odpowiednich parametrów pracy. Rozpoczęcie pracy, pobranie serii obrazów oraz zakończenie pracy. Wykorzystanie biblioteki DirectX do akwizycji i dekodowania strumienia danych wideo w zastosowaniach multimedialnych. Pokazanie jak korzystając z odpowiednich filtrów można stworzyć uniwersalny program, który będzie współpracował z kamerami, dla których producent opracował odpowiedni filtr wejściowy.

W 3
3 Obliczenia z wykorzystaniem instrukcji MMX oraz SSE Podstawowe informacje na temat budowy procesorów rodziny x86. Struktura stosu, konwencje wywołania funkcji, wybrane rozkazy asemblera. Pokazanie asemblerowych wersji podstawowych pętli znanych z języka C++.  Zaprezentowanie technologii MMX oraz SSE w tym przedstawienie najważniejszych instrukcji z technologiami tymi skojarzonych. W 3
4 Operacje na pamięci roboczej oraz masowej Pamięć fizyczna, pamięć wirtualna, zarządzanie jej zasobami. Określanie ilości dostępnej pamięci w systemie. Alokowanie, zatwierdzanie bloków pamięci oraz ich zwalnianie w obszarze wirtualnej pamięci. Tworzenie dodatkowych stert oraz ich zwalnianie.  Mapowanie plików w pamięci. Współdzielenie poprzez pamięć danych pomiędzy procesami. W 3
5 Sterowniki urządzeń w systemie Windows, podstawowe informacje Rola sterowników urządzeń w systemie Windows. Opis ich budowy oraz działania. Pakiety IRP, sterownik szyny oraz sterownik funkcyjny. Przedstawienie struktury sterownika urządzenia bazującego na bibliotece WDF ( Windows Driver Foundation ) .  W 1
6 Projekt

W ramach projektu ma powstać aplikacja, której kod obejmuje poruszane w trakcie wykładu zagadnienia. W zależności od złożoności projektu będzie on wykonywany pojedynczo w grupach maksymalnie 3-osobowych.
Projekt podzielony jest na dwa etapy. W trakcie pierwszego etapu powstaje projekt aplikacji, w trakcie drugiego gotowa aplikacja. 

P 15
Instytut Automatyki i Robotyki
Politechnika Warszawska