Driver interfejsu szeregowego dla systemu QNX Neutrino
|
|
- Bogusław Skowroński
- 7 lat temu
- Przeglądów:
Transkrypt
1 Architektura Systemów Wbudowanych Laboratorium 9 i 10 Juny 2015 Driver interfejsu szeregowego dla systemu QNX Neutrino Imię Nazwisko Nr indeksu 1.Wstęp Co to jest manager zasobów? program rozszerzający system operacyjny poprzez: tworzenie i zarządzanie nazwami w przestrzeni nazw dostarczenie klientom interfejsu zgodnego ze standardem POSIX (np. open(), read(), write(),...) może być połączony ze sprzętem hardware (takim jak port szeregowy albo sterownik dysku, itp.) albo może być po prostu encją oprogramowania (jak /dev/mqueue) Mapowanie nazw QNX Writing a Resource Manager QNX Software Systems LTD. 1
2 QNX Writing a Resource Manager QNX Software Systems LTD. QNX Writing a Resource Manager QNX Software Systems LTD. 2
3 Manager zasobów wykonuje następujące kroki: tworzy kanał, przejmuje część przestrzeni nazw, oczekuje na komunikaty i zdarzenia, przetwarza komunikaty i zwraca wyniki. Spojrzenie na ogólną koncepcję menedżera zasobów. QNX Writing a Resource Manager QNX Software Systems LTD QNX Writing a Resource Manager QNX Software Systems LTD
4 2.Przygotowanie do wykonania zadań. Uruchom środowisko QNX Momentics IDE ze wskazaną przez prowadzącego przestrzenią roboczą. Zapoznaj się z podstawowymi widokami środowiska. Sprawdź dostępne perspektywy. Przydatne perspektywy to: C/C++ perspective ; Debug perspective ; QNX System Information perspective ; Przejdź do perspektywy QNX System Information - klucz na pasku narzędzi w górnej prawej części ekranu. W oknie Target Navigator ustaw połączenie z platformą docelową. Wciskając prawy klawisz myszy i wybierając opcję New QNX Target. Pojawi się okno: W polu Hostname or IP wprowadź adres IP platformy docelowej. Upewnij się że na platformie docelowej uruchomiony jest proces qconn. Jeśli nie wykonaj polecenie: qconn #. Wróć do perspektywy C/C++. Otwórz wskazany plik źródłowy. Kompilacja projektu wybierz z menu głównego opcję Project->Build Project. Przejdź do realizacji zadań. 4
5 3.Zadania do zrealizowania Zad.3.1. Opracowanie API dla zasobu sprzętowego. W środowisku w pliku źródłowym uzupełnij kod odpowiedzialny za: Inicjowanie portu szeregowego wyznaczonego przez prowadzącego; Wysyłanie danych łączem szeregowym; Odbieranie danych łączem szeregowym; Uwaga: Nadawanie i odbiór powinny być zorganizowane w oparciu o przerwania. Załącznik 3. Materiały pomocnicze w załączniku 1. Po napisaniu kodu sprawdź działanie opracowanych funkcji prostym programem przesyłając i odbierając dane z inną grupą laboratoryjną. Zad.3.2. Opracowanie menedżera zasobu. Bazując na plikach źródłowych z zadania 3.1 uzupełnij kod, który zamieni program do sprawdzenia komunikacji po łączu szeregowym w menedżera zasobu. Etapy postępowania: 1. Przygotowanie prototypów funkcji, które będą pełniły rolę funkcji POSIX open(), write(), read(). 2. Zadeklarowanie zmiennych odpowiedzialnych za: strukturę dispatch ; listę komunikatów połączenia; listę komunikatów I/O; atrybuty urządzenia; atrybuty managera zasobów; dispatch context. 3. Alokacja zasobów i inicjalizacja struktury dispatch. 4. Inicjowanie funkcji połączenia i tablicy funkcji wejścia-wyjścia. 5. Podmiana standardowych funkcji handlera na własne funkcje. 6. Inicjowanie struktury opisującej urządzenie. 7. Powiadomienie menedżera procesów o sposobie połączenia i podpięcie funkcji wejścia-wyjścia. 8. Alokacja struktury kontekstowej menedżera. 9. Pętla główna programu menedżera zasobu. rejestrujemy ścieżkę dostępu w głównej pętli: blokowanie w oczekiwaniu na komunikat 5
6 wywołanie funkcji obsługi; funkcja obsługi obsługuje nadchodzące zapytania i wykonuje odpowiednie fragmenty kodu, w zależności od zapytania. 10. Przygotowanie kodu własnych funkcji io_open(), io_write(), io_read(). Poszczególne kroki zaznaczone są w przykładowym kodzie w załączniku 2. Po napisaniu kodu. Należy skompilować projekt i uruchomić menedżera zasobu. Sprawdź działanie opracowanego menedżera prostym programem wymieniając dane z inną grupą laboratoryjną, która korzysta z innego portu szeregowego. 6
7 Załącznik 1. Several example functions for serial interface programming /* Initializing serial interface: bound rate, frame parameters */ void SET_RS232(){ unsigned char temp,licz; out8(port1+3, 0x80); /* SET DLAB ON */ out8(port1+0, 0x06); /* SET BAUND RATE BPS */ out8(port1+1, 0x00); /* */ out8(port1+3, 0x1B); /* PARITY, 1 STOP BIT, 8 BITS */ out8(port1+2, 0xC7); /* FIFO CONTROL */ out8(port1+4, 0x0B); /* TURN ON DTR, RTS and OUT2 */ licz=16; /* just in case */ do{ licz--; if(!licz) break; while(read_rs232((unsigned char*)&temp)); /* Enabling interrupt source */ void SET_INT_SOURCE(unsigned char INT_SOURCE){ out8(port1+1, INT_SOURCE); /* Disabling interrupt source interrupt mask*/ void CLR_INT_SOURCE(unsigned char INT_SOURCE){ out8(port1+1, INT_SOURCE); /* Sending char */ void SEND_COMMAND(unsigned char COMM_TRANS){ out8(port1, COMM_TRANS); 7
8 Załącznik 2. /* resmgr.c This module contains the source code for the /dev/example device developed as part of the Neutrino "Writing a Resource Manager" section. If using a shared target, please change EXAMPLE_NAME to something unique for you, so to avoid testing somebody else's code. This module contains all of the functions necessary. */ #include <errno.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/iofunc.h> #include <sys/dispatch.h> #include <sys/neutrino.h> #include <sys/resmgr.h> /* default name for this device: /dev/rs232 */ #define EXAMPLE_NAME "/dev/rs232" /* change to something else if sharing a target */ // #define EXAMPLE_NAME "/dev/dagexample" void options (int argc, char *argv[]); 1.Przygotowanie prototypów funkcji, które będą pełniły rolę funkcji POSIX open(), write(), read(). int io_open (resmgr_context_t *ctp, io_open_t *msg, RESMGR_HANDLE_T *handle, void *extra); int io_read (resmgr_context_t *ctp, io_read_t *msg, RESMGR_OCB_T *ocb); int io_write(resmgr_context_t *ctp, io_write_t *msg, RESMGR_OCB_T *ocb); 2. Zadeklarowanie zmiennych odpowiedzialnych za: strukturę typu dispatch; strukturę funkcji połączenia; strukturę funkcji wejścia-wyjścia; kontekst menedżera zasobów; atrybuty menedżera zasobów; 8
9 atrybuty funkcji wejścia-wyjścia. /* our connect and I/O functions */ resmgr_connect_funcs_t connect_funcs; resmgr_io_funcs_t io_funcs; /* our dispatch, resource manager and iofunc variables */ dispatch_t *dpp; resmgr_attr_t rattr; dispatch_context_t *ctp; iofunc_attr_t ioattr; char *progname = "rs232"; int optv; // -v for verbose operation main (int argc, char *argv[]){ int pathid; setvbuf (stdout, NULL, _IOLBF, 0); printf ("%s: starting...\n", progname); options (argc, argv); /* allocate and initialize a dispatch structure for use by our main loop */ 3. Alokacja zasobów i inicjalizacja struktury dispatch. dpp = dispatch_create (); if (dpp == NULL) { fprintf (stderr, "%s: couldn't dispatch_create: %s\n", progname, strerror (errno)); exit (1); /*Set up the resource manager attributes structure, we'll use this as a way of passing information to resmgr_attach(). For now, we just use defaults. */ memset (&rattr, 0, sizeof (rattr)); /* using the defaults for rattr */ /* intialize the connect functions and I/O functions tables to their defaults by calling iofunc_func_init(), connect_funcs, and io_funcs variables are already declared. */ 4. Inicjowanie funkcji połączenia i tablicy funkcji wejścia-wyjścia. iofunc_func_init (_RESMGR_CONNECT_NFUNCS, &connect_funcs, _RESMGR_IO_NFUNCS, &io_funcs); /*over-ride the connect_funcs handler for open with our io_open, and over-ride the io_funcs handlers for read and write with our io_read and io_write handlers. */ 9
10 5. Podmiana standardowych funkcji handlera na własne funkcje. connect_funcs.open = io_open; io_funcs.read = io_read; io_funcs.write = io_write; /* initialize our device description structure*/ 6. Inicjowanie struktury opisującej urządzenie. iofunc_attr_init (&ioattr, S_IFCHR 0666, NULL, NULL); /* call resmgr_attach to register our prefix with the process manager, and also to let it know about our connect and I/O functions. On error, returns -1 and errno is set. */ 7. Powiadomienie menedżera procesów o sposobie połączenia i podpięcie funkcji wejścia-wyjścia. pathid = resmgr_attach (dpp, &rattr, EXAMPLE_NAME,_FTYPE_ANY, 0, &connect_funcs, &io_funcs, &ioattr); if (pathid == -1) { fprintf (stderr, "%s: couldn't attach pathname: %s\n", progname, strerror (errno)); exit (1); 8. Alokacja struktury kontekstowej menedżera. ctp = dispatch_context_alloc (dpp); 9. Pętla główna programu menedżera zasobu. while (1) { if ((ctp = dispatch_block (ctp)) == NULL) { fprintf (stderr, "%s: dispatch_block failed: %s\n", progname, strerror (errno)); exit (1); dispatch_handler (ctp); 10. Przygotowanie kodu własnych funkcji io_open(), io_write(), io_read(). /* * io_open we are called here when the client does an open. It is up to us to establish a context (in this case NULL will do just fine), and return a status code. */ 10
11 int io_open (resmgr_context_t *ctp, io_open_t *msg, RESMGR_HANDLE_T *handle, void *extra){ if (optv) { printf ("%s: in io_open\n", progname); return (iofunc_open_default (ctp, msg, handle, extra)); /* io_read At this point, the client has called their library "read" function, and expects zero or more bytes. Currently our /dev/example resource manager returns zero bytes to indicate EOF -- no more bytes expected. After our exercises, it will return some data. */ intio_read (resmgr_context_t *ctp, io_read_t *msg, RESMGR_OCB_T *ocb){ int status; static char data[] = "hello"; int nb; if (optv) { printf ("%s: in io_read\n", progname); if ((status = iofunc_read_verify(ctp, msg, ocb, NULL))!= EOK) { if (optv) printf("read failed because of error %d\n", status ); return (status); // No special xtypes if ((msg->i.xtype & _IO_XTYPE_MASK)!= _IO_XTYPE_NONE) { return(enosys); nb = strlen(data ); nb = min( nb, msg->i.nbytes ); _IO_SET_READ_NBYTES (ctp, nb); SETIOV( ctp->iov, data, nb ); if (nb > 0) ocb->attr->flags = IOFUNC_ATTR_ATIME; return (_RESMGR_NPARTS (1)); 11
12 /* * io_write * At this point, the client has called their library "write" function, and expects that our resource manager will write the number of bytes that they have specified to some device. Currently, for /dev/example, all of the clients writes always work -- they just go into Deep Outer Space.*/ int io_write (resmgr_context_t *ctp, io_write_t *msg, RESMGR_OCB_T *ocb){ int status; int nb; if (optv) { printf ("%s: in io_write, of %d bytes\n", progname, msg->i.nbytes); if ((status = iofunc_write_verify(ctp, msg, ocb, NULL))!= EOK) return (status); // No special xtypes if ((msg->i.xtype & _IO_XTYPE_MASK)!= _IO_XTYPE_NONE) { return(enosys); if( msg->i.nbytes == ctp->info.msglen - (ctp->offset + sizeof(*msg) )){ /* have all the data */ char *buf; buf = (char *)(msg+1); #if 0 #else else { nb = write( STDOUT_FILENO, buf, msg->i.nbytes ); // fd 1 is stdout if( -1 == nb ) return errno; char *buf; buf = malloc( msg->i.nbytes ); if (NULL == buf ) return ENOMEM; nb = resmgr_msgread(ctp, buf, msg->i.nbytes, sizeof(*msg)); nb = write(1, buf, nb ); // fd 1 is stdout free(buf); if( -1 == nb ) return errno; char buf[1000]; // my hardware buffer int count, bytes; count = 0; 12
13 while ( count < msg->i.nbytes ){ bytes = resmgr_msgread( ctp, buf, 1000, count + sizeof(*msg )); if( bytes == -1 ) return errno; bytes = write( 1, buf, bytes ); // fd 1 is standard out if( bytes == -1 ){ if (!count ) return errno; else break; count += bytes; nb = count; #endif _IO_SET_WRITE_NBYTES (ctp, nb); if (msg->i.nbytes > 0) ocb->attr->flags = IOFUNC_ATTR_MTIME IOFUNC_ATTR_CTIME; return (_RESMGR_NPARTS (0)); /* options This routine handles the command line options. For our simple /dev/example, we support: -v verbose operation */ Void options (int argc, char *argv[]){ int opt; optv = 0; while ((opt = getopt (argc, argv, "v"))!= -1) { switch (opt) { case 'v': optv++; break; 13
14 Załącznik 3. /*intsimple.c This module demonstrates will contain code for handling an interrupt. To test is, simply run it. Note that you may have to do something to cause the interrupts to be generated (e.g. press a key if handling the keyboard interrupt). */ #include <errno.h> #include <fcntl.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/neutrino.h> #include <sys/syspage.h> char *progname = "intsimple"; struct sigevent int_event; // the event to wake up the thread const struct sigevent *hdlr( void *blah, int id ){ static int count = 0; if (++count > 1500 ){ count = 0; return &int_event; return NULL; main (int argc, char **argv){ int id; setvbuf (stdout, NULL, _IOLBF, 0); printf ("%s: starting...\n", progname); // request I/O privity ThreadCtl(_NTO_TCTL_IO, 0 ); /* set up an event for the handler or the kernel to use to wake up this thread. Use whatever type of event and event handling you want */ SIGEV_INTR_INIT( &int_event ); // either register an interrupt handler or the event id = InterruptAttach(0, hdlr, NULL, 0, _NTO_INTR_FLAGS_TRK_MSK ); 14
15 while (1) { // block here waiting for the event InterruptWait(0, NULL ); // if using a high frequency interrupt, don't print every interrupt printf ("%s: we got an event after 1500 timer ticks and unblocked\n", progname); 15
PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO
PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO LABORATORIUM Temat: QNX Neutrino Interrupts Mariusz Rudnicki 2016 Wstęp W QNX Neutrino wszystkie przerwania sprzętowe przechwytywane są przez jądro systemu. Obsługę
1. Tworzenie nowego projektu.
Załącznik do Instrukcji 1. Tworzenie nowego projektu. Wybieramy opcję z menu głównego New->QNX C Project. Wprowadzamy nazwę przechodzimy do następnego kroku NEXT. Wybieramy platformę docelową oraz warianty
PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO
PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO LABORATORIUM Temat: THREADS Mariusz Rudnicki 2016 1. Przygotowanie platformy i środowiska IDE. Przed uruchomieniem własnego kodu zwiększ priorytet procesu qconn
Pobieranie argumentów wiersza polecenia
Pobieranie argumentów wiersza polecenia 2. Argumenty wiersza polecenia Lista argumentów Lista argumentów zawiera cały wiersz poleceń, łącznie z nazwą programu i wszystkimi dostarczonymi argumentami. Przykłady:
PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO
PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO LABORATORIUM Temat: QNX Neutrino IPC native Mariusz Rudnicki 2016 Wstęp QNX Neutrino wspiera różnorodne mechanizmy komunikacji IPC: rodzima komunikacja QNX Neutrino
Programowanie Proceduralne
Programowanie Proceduralne Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 10 Co dziś będzie: Definiowanie struktury Deklarowanie zmiennych bȩda cych strukturami
Sieciowa komunikacja procesów - XDR i RPC
*** abc.x Przyklad pliku RPCGEN Obliczanie sumy, roznicy i iloczynu dwoch liczb calkowitych *** ************************************ Wywolanie procedury odleglej dopuszcza tylko jeden argument wywolania
Programowanie Systemów Czasu Rzeczywistego
Programowanie Systemów Czasu Rzeczywistego Laboratorium Wprowadzenie Mariusz RUDNICKI mariusz.rudnicki@eti.pg.gda.pl 2016 Spis treści Przygotowanie platform docelowej.... 3 Przygotowanie środowiska programistycznego
Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi.
Przykład: $ ls more Łącza nienazwane(potoki) Łącza nienazwane mogą być używane tylko pomiędzy procesami ze sobą powiązanymi. Tworzenie łącza #include int pipe(int filedes[2]); Przykład: int
dynamiczny przydział pamięci calloc() memset() memcpy( ) (wskaźniki!! )
dynamiczny przydział pamięci malloc() free() realloc() calloc() memset() memcpy( ) mempcpy( ) memmove() (wskaźniki!! ) 1 dynamiczny przydział pamięci void * memccpy (void * to, void * from, int c, int
Obsługa plików. Systemy Operacyjne 2 laboratorium. Mateusz Hołenko. 25 września 2011
Obsługa plików Systemy Operacyjne 2 laboratorium Mateusz Hołenko 25 września 2011 Plan zajęć 1 Pliki w systemie Linux i-węzły deskryptory plików 2 Operacje na plikach otwieranie i zamykanie zapis i odczyt
Shared memory and messages. Functions. process 0. process 1. program 0. program 0. data 0. data 1. program 1. data 0. data 1.
Shared memory and messages Shared memory vs message passing Shared memory - C functions Shared memory - example program Message queues - C functions Message queues - example program process 0 process 1
LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program
LabVIEW PLATFORMA EDUKACYJNA Lekcja 5 LabVIEW i Arduino konfiguracja środowiska i pierwszy program Przygotował: Jakub Wawrzeńczak 1. Wprowadzenie Lekcja przedstawia wykorzystanie środowiska LabVIEW 2016
Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania
Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania Przemysłowe układy sterowania PID Układy regulacji PID w strukturze sprzętowej Pytania i zadania do zajęć
Informatyka. Wy-03 Dynamiczna alokacja pamięci, wyjątki. mgr inż. Krzysztof Kołodziejczyk
Informatyka Wy-03 Dynamiczna alokacja pamięci, wyjątki mgr inż. Krzysztof Kołodziejczyk krzysztof.m.kolodziejczyk@pwr.edu.pl 13.03.2019 Strona kursu http://w12.pwr.wroc.pl/inf/ Konsultacje Piątek 13:00
Wykład 3: Implementacja programów wbudowanych
Systemy wbudowane Wykład 3: Implementacja programów wbudowanych Problemy implementacji oprogramowania wbudowanego Szeregowanie zadań System operacyjny Obsługa przerwań 10/16/2010 S.Deniziak:Systemy wbudowane
QNX Neutrino (v 6.3)
QNX Neutrino (v 6.3) System operacyjny czasu rzeczywistego Wielozadaniowy, architektura z mikrojądrem API zgodne ze standardem POSIX Rozproszony, przezroczysta praca w sieci Mechanizmy wykrywania/tolerowania
Uzupełnienie dot. przekazywania argumentów
Uzupełnienie dot. przekazywania argumentów #include #include struct nowa { int f; char line[20000]; int k; } reprezentant; int main() { void funkcja7( struct nowa x); reprezentant.k=17;
SUMA KONTROLNA (icmp_cksum) NUMER KOLEJNY (icmp_seq)
Program my_ping: wysłanie komunikatu ICMP z żądaniem echa Struktura icmp (plik netinet/ip_icmp.h) 0 7 8 15 16 31 TYP (icmp_type) KOD (icmp_code) IDENTYFIKATOR (icmp_id) SUMA KONTROLNA (icmp_cksum) NUMER
Krótkie wprowadzenie do korzystania z OpenSSL
Krótkie wprowadzenie do korzystania z OpenSSL Literatura: http://www.openssl.org E. Rescola, "An introduction to OpenSSL Programming (PartI)" (http://www.linuxjournal.com/article/4822) "An introduction
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE. Wykład 02
METODY I JĘZYKI PROGRAMOWANIA PROGRAMOWANIE STRUKTURALNE Wykład 02 NAJPROSTSZY PROGRAM /* (Prawie) najprostszy przykład programu w C */ /*==================*/ /* Między tymi znaczkami można pisać, co się
Ćwiczenia 2 IBM DB2 Data Studio
Ćwiczenia 2 IBM DB2 Data Studio Temat: Aplikacje w Data Studio 1. Projekty Tworzenie procedur, UDF, trygerów zaczynamy od utworzenia projektu File -> New -> Project wybieramy Data Development Project.
USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian
1 / 9 Content list / Spis Treści 1. Hardware and software requirements, preparing device to upgrade Wymagania sprzętowe i programowe, przygotowanie urządzenia do aktualizacji 2. Installing drivers and
USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian
1 / 12 Content list / Spis Treści 1. Hardware and software requirements, preparing device to upgrade Wymagania sprzętowe i programowe, przygotowanie urządzenia do aktualizacji 2. Installing drivers needed
Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych.
Laboratorium 1 Temat: Przygotowanie środowiska programistycznego. Poznanie edytora. Kompilacja i uruchomienie prostych programów przykładowych. 1. Przygotowanie środowiska programistycznego. Zajęcia będą
Iteracyjny serwer TCP i aplikacja UDP
Iteracyjny serwer TCP i aplikacja UDP Iteracyjny serwer TCP Funkcje wywoływane przez serwer TCP socket() - bind() - listen() - accept() - read() / write() - close() socket() Creates an endpoint for communication
Laboratorium Systemów Operacyjnych. Ćwiczenie 4. Operacje na plikach
Laboratorium Systemów Operacyjnych Ćwiczenie 4. Operacje na plikach Wykonanie operacji wymaga wskazania pliku, na którym operacja ma zostać wykonana. Plik w systemie LINUX identyfikowany jest przez nazwę,
1.Wstęp. 2.Generowanie systemu w EDK
1.Wstęp Celem niniejszego ćwiczenia jest zapoznanie z możliwościami debuggowania kodu na platformie MicroBlaze oraz zapoznanie ze środowiskiem wspomagającym prace programisty Xilinx Platform SDK (Eclipse).
Struktura programu. Projekty złożone składają się zwykłe z różnych plików. Zawartość każdego pliku programista wyznacza zgodnie z jego przeznaczeniem.
Struktura programu Projekty złożone składają się zwykłe z różnych plików. Zawartość każdego pliku programista wyznacza zgodnie z jego przeznaczeniem. W ostatnich latach najbardziej używanym stylem oprogramowania
Informatyka I : Tworzenie projektu
Tworzenie nowego projektu w programie Microsoft Visual Studio 2013 Instrukcja opisuje w jaki sposób stworzyć projekt wykorzystujący bibliotekę winbgi2 w programie Microsoft Visual Studio 2013. 1. Otwórz
1: ////////// 2: // test.c. 3: ssize_t ret = read(fd, buf, nbytes);
Poniżej wklejone są fragmenty kodu jądra, serwerów oraz sterownika. Kod ten przedstawia zarys mechanizmu używanego przy wywołaniach usług systemowych przez procesy użytkownika. W miejscach, w których występuje
Wykład 15. Literatura. Kompilatory. Elementarne różnice. Preprocesor. Słowa kluczowe
Wykład 15 Wprowadzenie do języka na bazie a Literatura Podobieństwa i różnice Literatura B.W.Kernighan, D.M.Ritchie Język ANSI Kompilatory Elementarne różnice Turbo Delphi FP Kylix GNU (gcc) GNU ++ (g++)
PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO
PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO LABORATORIUM Temat: THREADS SYNCHRONIZATION METHODS Mariusz Rudnicki 2016 1. Wstęp W systemach wielowątkowych wspólne zasoby procesu takie, jak: pamięć: kod programu;
Rev Źródło:
KamPROG for AVR Rev. 20190119192125 Źródło: http://wiki.kamamilabs.com/index.php/kamprog_for_avr Spis treści Introdcution... 1 Features... 2 Standard equipment... 4 Installation... 5 Software... 6 AVR
EC4P Pierwszy program w 6 krokach
EC4P Pierwszy program w 6 krokach Strona - 1 Wymagania / Przygotowanie Instalacja easy Soft CoDeSys Zakłada si, e adna z wersji easysoft CoDeSys nie jest zainstalowana. Podczas instalacji wykonuj poszczególne
Ćwiczenie 1. Kolejki IBM Message Queue (MQ)
Ćwiczenie 1. Kolejki IBM Message Queue (MQ) 1. Przygotowanie Przed rozpoczęciem pracy, należy uruchomić "Kreator przygotowania WebSphere MQ" oraz przejść przez wszystkie kroki kreatora, na końcu zaznaczając
4.2 Sposób korzystania z l acza
4.2 Sposób korzystania z l acza 31 Opis programu: Program procesu potomnego (linie 16 19) jest taki sam, jak w przyk ladzie na listingu 3. W procesie macierzystym nastepuje z kolei przekierowanie standardowego
Mariusz Rudnicki PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.2
Mariusz Rudnicki mariusz.rudnicki@eti.pg.gda.pl PROGRAMOWANIE SYSTEMÓW CZASU RZECZYWISTEGO CZ.2 Architektura - Procesy Proces program załadowany do pamięci; identyfikowany przez id procesu, zwykle nazywany
Języki i metody programowania Java Lab1 https://docs.oracle.com/javase/tutorial/ Zofia Kruczkiewicz
Języki i metody programowania Java Lab1 https://docs.oracle.com/javase/tutorial/ Zofia Kruczkiewicz Zadanie 1. Wykonanie projektu Java SE w środowisku Netbeans- File/New Project W formularzu New Project
Co nie powinno być umieszczane w plikach nagłówkowych:
Zawartość plików nagłówkowych (*.h) : #include #define ESC 27 dyrektywy dołączenia definicje stałych #define MAX(x,y) ((x)>(y)?(x):(y)) definicje makr int menu(char* tab[], int ilosc); struct
Wstęp do programowania 1
Wstęp do programowania 1 Struktury Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 12 Struktura dla dat - przykład #include struct Date { int y; short m; short
Wstęp do programowania
Wstęp do programowania Przemysław Gawroński D-10, p. 234 Wykład 1 8 października 2018 (Wykład 1) Wstęp do programowania 8 października 2018 1 / 12 Outline 1 Literatura 2 Programowanie? 3 Hello World (Wykład
Zakopane, plan miasta: Skala ok. 1: = City map (Polish Edition)
Zakopane, plan miasta: Skala ok. 1:15 000 = City map (Polish Edition) Click here if your download doesn"t start automatically Zakopane, plan miasta: Skala ok. 1:15 000 = City map (Polish Edition) Zakopane,
Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego
Pliki w C/C++ Przykłady na podstawie materiałów dr T. Jeleniewskiego 1 /24 Pisanie pojedynczych znaków z klawiatury do pliku #include void main(void) { FILE *fptr; // wkaznik do pliku, tzw. uchwyt
Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych
Laboratorium OiOSE. Programowanie w środowisku MS Visual C++ 1 Politechnika Gdańska Katedra Optoelektroniki i Systemów Elektronicznych Organizacja i Oprogramowanie Systemów Elektronicznych Michał Kowalewski
FAQ: 00000042/PL Data: 3/07/2013 Konfiguracja współpracy programów PC Access i Microsoft Excel ze sterownikiem S7-1200
Spis treści 1 Opis zagadnienia omawianego w dokumencie.. 2 2 Wstęp do nowego projektu..... 3 2.1 Nowy projekt... 3 2.2 Dodanie nowego urządzenia... 4 3 Program w main... 6 4 Program PC Access.... 8 4.1
inode instalacja sterowników USB dla adaptera BT 4.0
instalacja sterowników USB dla adaptera BT 4.0 2014 ELSAT 1. Instalowanie sterownika USB dla adaptera BT4.0 Oprogramowanie do obsługi inode na komputery PC z Windows wymaga współpracy z adapterem obsługującym
3. Identyfikacja. SKŁADNIA #include <sys/socket.h> int getpeername(int socket, struct sockaddr *addr, int *addrlen);
3.1. Określanie adresu połączonego hosta 3. #include int getpeername(int socket, struct sockaddr *addr, int *addrlen); Funkcja getpeername dostarcza adresu drugiej strony połączenia. Parametry:
Wykład 1
Wstęp do programowania 1 Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 1 Wprowadzenie Cel wykładów z programowania proceduralnego Wykład jest poświęcony językowi C i jego
Gniazda BSD. komunikacja bezpołączeniowa
Gniazda BSD komunikacja bezpołączeniowa Użycie gniazd w transmisji bezpołączeniowej socket() socket() bind() bind() STOP! recv() żądanie send() send() odpowiedź recv() STOP! recvfrom() #include
Konfigurowanie modułu BK9050 firmy Beckhoff wprowadzenie
Konfigurowanie modułu BK9050 firmy Beckhoff wprowadzenie Stanowisko laboratoryjne z modułem BK9050 Moduł BK9050 jest urządzeniem typu Bus Coupler, umożliwiającym instalację rozproszonych grup terminali
Architektura Systemów Wbudowanych
Architektura Systemów Wbudowanych Laboratorium 6 Wieloprocesowość, wielowątkowość szeregowanie, synchronizacja, komunikacja IPC 2018 Spis treści Wstęp wątki, procesy.... - 3 - Przygotowanie platform docelowej....
Wykład VII. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik
Wykład VII Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Kompilacja Kompilator C program do tłumaczenia kodu źródłowego na język maszynowy. Preprocesor
Instrukcja obsługi User s manual
Instrukcja obsługi User s manual Konfigurator Lanberg Lanberg Configurator E-mail: support@lanberg.pl support@lanberg.eu www.lanberg.pl www.lanberg.eu Lanberg 2015-2018 WERSJA VERSION: 2018/11 Instrukcja
Projekt procesora NIOSII w strukturze programowalnego układu logicznego CYCLONEII EP2C35F672C6 podłączenie i obsługa wyświetlacza LCD.
LAB. 2 Projekt procesora NIOSII w strukturze programowalnego układu logicznego CYCLONEII EP2C35F672C6 podłączenie i obsługa wyświetlacza LCD. Laboratorium Mikroprocesorowych Układów Sterowania instrukcja
Instrukcja instalacji sterowników USB dla urządzeń Posnet Polska S.A.
Instrukcja instalacji sterowników USB dla urządzeń Posnet Polska S.A. Instrukcja dotyczy instalacji sterowników do następujących urządzeń: - Temo HS EJ, - Mobile HS EJ, - NIXDORF TH230+ FV EJ, - 4610-1NR
Wykład VI. Programowanie. dr inż. Janusz Słupik. Gliwice, 2014. Wydział Matematyki Stosowanej Politechniki Śląskiej. c Copyright 2014 Janusz Słupik
Wykład VI Wydział Matematyki Stosowanej Politechniki Śląskiej Gliwice, 2014 c Copyright 2014 Janusz Słupik Operacje na plikach Operacje na plikach Aby móc korzystać z pliku należy go otworzyć w odpowiednim
Tychy, plan miasta: Skala 1: (Polish Edition)
Tychy, plan miasta: Skala 1:20 000 (Polish Edition) Poland) Przedsiebiorstwo Geodezyjno-Kartograficzne (Katowice Click here if your download doesn"t start automatically Tychy, plan miasta: Skala 1:20 000
Programowanie I C / C++ laboratorium 03 arytmetyka, operatory
Programowanie I C / C++ laboratorium 03 arytmetyka, operatory Jarosław Piersa Wydział Matematyki i Informatyki, Uniwersytet Mikołaja Kopernika 2013-02-19 Typ znakowy Typ znakowy Typ wyliczeniowy # include
Jedrzej Ułasiewicz Komputerowe systemy sterowania 1
Jedrzej Ułasiewicz Komputerowe systemy sterowania 1 1 Przerwania 1.1 Obsługa zdarzeń, odpytywanie i przerwania Obsługa zdarzeń jest jedną z kluczowych funkcji w prawie każdym systemie czasu rzeczywistego.
Camspot 4.4 Camspot 4.5
User manual (addition) Dodatek do instrukcji obsługi Camspot 4.4 Camspot 4.5 1. WiFi configuration 2. Configuration of sending pictures to e-mail/ftp after motion detection 1. Konfiguracja WiFi 2. Konfiguracja
Programowanie obiektowe zastosowanie języka Java SE
Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z
RS868v3 module configuration
RS868v3 module configuration Configuration procedure To enter the configuration mode insert a jumper onto the pins marked CONFIG (see: Pinout). After every issued command (besides device reset) the device
Obsługa plików Procesy
Obsługa plików Procesy Systemy Operacyjne 2 laboratorium Mateusz Hołenko 15 października 2011 Plan zajęć 1 Obsługa plików 1 Pliki w systemie Linux i-węzły deskryptory plików 2 Operacje na plikach 3 Operacje
How to share data from SQL database table to the OPC Server? Jak udostępnić dane z tabeli bazy SQL do serwera OPC? samouczek ANT.
Jak udostępnić dane z tabeli bazy SQL do serwera OPC? samouczek ANT How to share data from SQL database table to the OPC Server? ANT tutorial Krok 1: Uruchom ANT Studio i dodaj do drzewka konfiguracyjnego
Modelowanie numeryczne w fizyce atmosfery Ćwiczenia 3
Modelowanie numeryczne w fizyce atmosfery Sylwester Arabas (ćwiczenia do wykładu dr. hab. inż. Lecha Łobockiego) Instytut Geofizyki, Wydział Fizyki Uniwersytetu Warszawskiego 3. listopada 2011 r. Schemat
METHOD 2 -DIAGNOSTIC OUTSIDE
VW MOTOMETER BOSCH METHOD 1 - OBD 2 METHOD 2 -DIAGNOSTIC OUTSIDE AFTER OPERATION YOU MUST DISCONECT ACU OR REMOVE FUSE FOR RESTART ODOMETER PO ZROBIENIU LICZNIKA ZDJĄĆ KLEMĘ LUB WYJĄĆ 2 BEZPIECZNIKI OD
ECLIPSE wnioski z dwóch pierwszych laboratoriów
PODSTAWY PROGRAMOWANIA 3-4 WYKŁAD 22-10-2015 ECLIPSE wnioski z dwóch pierwszych laboratoriów Dodanie pliku i konfiguracji startowej (każdy uruchamiany program powinien mieć własna konfigurację startową)
Linux Kernel. Wprowadzenie
Linux Kernel Wprowadzenie Trochę historii (1) Rozpoczęło się od Bell Labolatories we wczesnych latach 70- tych XX wieku, kiedy rozpoczęto prace nad systemem UNIX: UNIX był pierwszym systemem operacyjnym
Realizacja systemów wbudowanych (embeded systems) w strukturach PSoC (Programmable System on Chip)
Realizacja systemów wbudowanych (embeded systems) w strukturach PSoC (Programmable System on Chip) Embeded systems Architektura układów PSoC (Cypress) Możliwości bloków cyfrowych i analogowych Narzędzia
Wprowadzenie do laboratorium. Zasady obowiązujące na zajęciach. Wprowadzenie do narzędzi wykorzystywanych podczas laboratorium.
Wprowadzenie do laboratorium. Zasady obowiązujące na zajęciach. Wprowadzenie do narzędzi wykorzystywanych podczas laboratorium. Prowadzący Dr inż. Zofia 1 La1 La2 Forma zajęć - laboratorium Wprowadzenie
Grzegorz Cygan. Wstęp do programowania mikrosterowników w języku C
Grzegorz Cygan Wstęp do programowania mikrosterowników w języku C Mikrosterownik Inne nazwy: Microcontroler (z języka angielskiego) Ta nazwa jest powszechnie używana w Polsce. Mikrokomputer jednoukładowy
Visual Basic Debugging and Error Handling
Visual Basic Debugging and Error Handling Typy błędów 1. Compile-Time, (wykrywane w czasie kompilacji np. błąd w składni) 2. Run-Time, (pojawiające się podczas wykonywania programu, np. zły typ danych
Wstęp do Programowania, laboratorium 02
Wstęp do Programowania, laboratorium 02 Zadanie 1. Napisać program pobierający dwie liczby całkowite i wypisujący na ekran największą z nich. Zadanie 2. Napisać program pobierający trzy liczby całkowite
Linux Kernel III. Character devices
Linux Kernel III Character devices Urządzenia systemu Linux (I) Character device Block device Network device Do urządzenia piszemy jak do pliku, Dozwolone działania: open, close, read, write, Np. /dev/tty1.
Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni. Wykład 6. Karol Tarnowski A-1 p.
Programowanie proceduralne INP001210WL rok akademicki 2015/16 semestr letni Wykład 6 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411b Plan wykładu Operacje wejścia-wyjścia Dostęp do plików Struktury
USB firmware changing guide. Zmiana oprogramowania za przy użyciu połączenia USB. Changelog / Lista Zmian
1 / 8 Content list / Spis Treści 1. Hardware and software requirements, preparing device to upgrade Wymagania sprzętowe i programowe, przygotowanie urządzenia do aktualizacji 2. Installing drivers and
Instrukcja konfiguracji usługi Wirtualnej Sieci Prywatnej w systemie Mac OSX
UNIWERSYTETU BIBLIOTEKA IEGO UNIWERSYTETU IEGO Instrukcja konfiguracji usługi Wirtualnej Sieci Prywatnej w systemie Mac OSX 1. Make a new connection Open the System Preferences by going to the Apple menu
Rodzina protokołów TCP/IP. Aplikacja: ipconfig.
Rodzina protokołów TCP/IP. Aplikacja: ipconfig. dr Zbigniew Lipiński Instytut Matematyki i Informatyki ul. Oleska 48 50-204 Opole zlipinski@math.uni.opole.pl Specyfikacja struktury FIXED_INFO Nazwa struktury:
Architektura typu klient serwer: przesyłanie pliku tekstowo oraz logowania do serwera za pomocą szyfrowanego hasła
Architektura typu klient serwer: przesyłanie pliku tekstowo oraz logowania do serwera za pomocą szyfrowanego hasła Wydział Inżynierii Mechanicznej i Informatyki Instytut Informatyki Teoretycznej i Stosowanej
Programowanie w Javie
Programowanie w Javie Andrzej Czajkowski Lista nr 0 Debugger w Javie Celem ćwiczenia jest poznanie podstawowych funkcji narzędzia debugera (odpluskwiacz) w środowisku Eclipse. Po ukończeniu ćwiczenia student
Tworzenie aplikacji w języku Java
Tworzenie aplikacji w języku Java Wykład 1 Piotr Czapiewski Wydział Informatyki ZUT 2 października 2009 Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009
Jzyk C++ cz 3. Jarosław Gramacki Instytut Informatyki i Elektroniki ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )
Jzyk C++ cz 3 Jarosław Gramacki Instytut Informatyki i Elektroniki # $$%%& ' ( $)*)+' *, - ( ' )*'.' '',*/ *, ','*0) 1 / ) %*+ 2'' 2" ( $%%) )'20 )*0) 1 / )!" 2 # $$%%& ' ( $%%/,))3 ( %* 2 / 4 ( ( *' *''*,
Testy jednostkowe - zastosowanie oprogramowania JUNIT 4.0 Zofia Kruczkiewicz
Testy jednostkowe - zastosowanie oprogramowania JUNIT 4.0 http://www.junit.org/ Zofia Kruczkiewicz 1. Aby utworzyć test dla jednej klasy, należy kliknąć prawym przyciskiem myszy w oknie Projects na wybraną
Laboratorium Programowania Kart Elektronicznych
Laboratorium Programowania Kart Elektronicznych Programowanie BasicCard Marek Gosławski Przygotowanie do zajęć dokumentacja ZeitControl BasicCard środowisko programistyczne karta BasicCard Potrzebne wiadomości
SQL 4 Structured Query Lenguage
Wykład 5 SQL 4 Structured Query Lenguage Instrukcje sterowania danymi Bazy Danych - A. Dawid 2011 1 CREATE USER Tworzy nowego użytkownika Składnia CREATE USER specyfikacja użytkownika [, specyfikacja użytkownika]...
4 bity zarezerwowane dla przyszłych zastosowań 11 bitów określających źródło błędu 16 bitów określających rodzaj błędu.
Zgłaszanie błędów HRESULT Każda metoda interfejsu COM zwraca informację o błędzie w postaci typu HRESULT (long int). Struktura reprezentacji bitowej HRESULT podzielona jest na 4 sekcje: 1 bit błędu 4 bity
Programowanie Systemów Wbudowanych
Programowanie Systemów Wbudowanych Debugowanie z GDB Iwona Kochańska Gdansk University of Technology GNU debugger Identyfikacja i naprawianie błędów to część procesu wytwarzania oprogramowania Techniki
Sterowniki urządzeń w systemie operacyjnym RTEMS
Sterowniki urządzeń w systemie operacyjnym RTEMS Adam Piotrowski 20 grudnia 2007 1 Informacje podstawowe Jednym z podstawowych zadań systemu operacyjnego jest zapewnienie niezawodnej i wydajnej współpracy
Instrukcja podstawowego uruchomienia sterownika PLC LSIS serii XGB XBC-DR20SU
Instrukcja podstawowego uruchomienia sterownika PLC LSIS serii XGB XBC-DR20SU Spis treści: 1. Instalacja oprogramowania XG5000 3 2. Tworzenie nowego projektu i ustawienia sterownika 7 3. Podłączenie sterownika
Konfigurowanie sterownika BC8150 firmy Beckhoff wprowadzenie
Konfigurowanie sterownika BC8150 firmy Beckhoff wprowadzenie 1. Konfiguracja pakietu TwinCAT do współpracy ze sterownikiem BC8150 Stanowisko laboratoryjne ze sterownikiem BC8150 Sterownik BC8150 należy
OpenPoland.net API Documentation
OpenPoland.net API Documentation Release 1.0 Michał Gryczka July 11, 2014 Contents 1 REST API tokens: 3 1.1 How to get a token............................................ 3 2 REST API : search for assets
Funkcje zawarte w bibliotece < io.h >
PLIKOWE OPERACJE WEJŚCIA - WYJŚCIA Język C/C++ nie ma wbudowanych żadnych instrukcji umożliwiających wykonywanie operacji wejścia-wyjścia! Służą do tego funkcje biblioteczne. Funkcje zawarte w bibliotece
Aplikacja Sieciowa. Najpierw tworzymy nowy projekt, tym razem pracować będziemy w konsoli, a zatem: File->New- >Project
Aplikacja Sieciowa Jedną z fundamentalnych właściwości wielu aplikacji jest możliwość operowania pomiędzy jednostkami (np. PC), które włączone są do sieci. W Windows operacja ta jest możliwa przy wykorzystaniu
Katedra Elektrotechniki Teoretycznej i Informatyki. wykład 12 - sem.iii. M. Czyżak
Katedra Elektrotechniki Teoretycznej i Informatyki wykład 12 - sem.iii M. Czyżak Język C - preprocesor Preprocesor C i C++ (cpp) jest programem, który przetwarza tekst programu przed przekazaniem go kompilatorowi.
Zadania: 1. Funkcja przeliczająca F na C: float FtoC(float f){ return (f 32.0) * 5.0 / 9.0; }
Zadania: 1. Funkcja przeliczająca F na C: float FtoC(float f){ return (f 32.0) * 5.0 / 9.0; 2. Utworzyć dodatkową funkcję, która przelicza F na K, na bazie poprzedniej F to C (z poprzednich zajęć), wg
Zarządzanie sieciami telekomunikacyjnymi
SNMP Protocol The Simple Network Management Protocol (SNMP) is an application layer protocol that facilitates the exchange of management information between network devices. It is part of the Transmission
LabVIEW PLATFORMA EDUKACYJNA Lekcja 6 LabVIEW i Arduino programy wykorzystujące wyświetlacz LCD, czujnik temperatury, PWM i diodę LED
LabVIEW PLATFORMA EDUKACYJNA Lekcja 6 LabVIEW i Arduino programy wykorzystujące wyświetlacz LCD, czujnik temperatury, PWM i diodę LED Przygotował: Jakub Wawrzeńczak 1. Wprowadzenie Lekcja przedstawia wykorzystanie