Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail: Sheets.

Slides:



Advertisements
Verwante presentaties

Advertisements

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Operatoren, Arrays, Command-line tools.
Embedded systemen Embedded software.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Een programma opbouwen.
MICPRG Les 12 Microcontroller Programmeren in C. 127 Real-time clock PC heeft een RTC Real-time Clock die de “time of day” bijhoudt. De RTC is voorzien.
Arduino project.
Gestructureerd programmeren in C
1 Device driver. 2 Hardware Operating Systeem Prog1Prog2 System calls/ API Device drivers Gebruiker afschermen van de hardware.
PROS2 Les 11 Programmeren en Software Engineering 2.
Les 5 - onderwerpen Aansturen van vier 7-segment displays
GESPRG Les 14 Gestructureerd programmeren in C. 174 Details! The devil is in the details.
Enumerate typedef struct union functiepointers 1.
Instructie Programmeren Debuggen 5JJ70. Debuggen: Wat is het probleem Je programma compileert, maar werkt niet zoals verwacht, wat nu? Vraag je af: wat.
Numerieke Natuurkunde
Flow controle Keuzes maken. Het if-statement Soms moet code alleen in bepaalde situaties uit gevoerd worden Hiervoor heeft C de if-else constructie: if(voorwaarde1){
MICPRG Les 11 Microcontroller Programmeren in C. 112 Datastructuren in C Werkgeheugen (PC en microcontroller): Statische datastructuren (vaste grootte):
GESPRG Les 7 Gestructureerd programmeren in C. 92 Verwisselen Schrijf een functie waarmee twee int variabelen verwisseld kunnen worden. void wissel(int.
Inleiding programmeren in C++ Life Science & Technology 9 februari Universiteit Leiden.
P. 1 Vakgroep Informatietechnologie Scanf voorbeeld #include int main(void) { int i=-1,j=-1,k=-1,l=-1; int b; b=scanf("%d %d %d %d",&i,&j,&k,&l); printf("res=%d.
Deel I: Programmeertaal C 6. Arrays en Pointers
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 3 - onderwerpen Het.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 4 - onderwerpen Tellen.
KPRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology Les 2 sheet 1 Wat gaan we doen:  Een (vaste) melodie.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail: Sheets en.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 4 - onderwerpen DB038 hardware : LEDs en displays.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Het ARM bord met wat library functies.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 4 - onderwerpen Multiplexen.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  basis files: ram-rom.zip.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 3 - onderwerpen Instruction timing Shadow.
DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Beginselen van C opgaves… volgende week: ARM.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag GUI  command line redirection.
Mail: Jan Zuurbier  Mail:
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail:
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 7 onze.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 2 definitie.
Tircms02-p les 4 Preprocessor In- en uitvoer Diversen.
Mail: (of Sheets en verdere info: Onderwerp: vervolg C
Tircms03-p les 7 Standaardfuncties. In header opnemen bijv: using namespace std // C++ // oude C.
DU2PRES1 : C vervolg Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Arrays en pointers lichtkrant op het ARM bordje.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  een MIDI track interpreteren, laten zien en afspelen.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 3 - onderwerpen  DB036 printjes subroutines.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  herhaling ARM assembler instructies  assembler.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Finite State Machine (Eindige.
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  programma draaien vanuit ROM.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 6 - onderwerpen Uitleg.
Onderwerp: PIC assembler programmeren
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 C programmeren voor niet-C programmeurs les 3 redirection,
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 2 - onderwerpen  Helaas nog geen printjes.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail: Sheets en.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag User-defined characters op de.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology ; PIC assember programeren 1 Les 2 - onderwerpen MPLAB.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 4 - onderwerpen DB027 hardware : LEDs en displays.
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag top-down decompositie Opdrachten:
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Maak, uitgaande van een MIDI file, een (klein) programma.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  Een (vaste) melodie spelen op de PC speaker 
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 4 - onderwerpen DB038 hardware : luidsprekertje.
2TPRJ5 – PIC assembler Hogeschool Utrecht / Institute for Information & Communication Technology Wouter van Ooijen Mail: Sheets.
Inleiding computersystemen en netwerken Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 2.1 Programmeren (2.9) assembler,
Computertechniek 2 – ARM assembler Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail:
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1.
2TPRJ8 – hardware en ontwikkelomgeving Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail:
Vervolg C Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Onderwerpen voor vandaag Een embedded systeem: ARM bord.
2PROJ5 – PIC assembler Hogeschool Utrecht / Institute for Computer, Communication and Media Technology 1 Les 3 - onderwerpen Instruction timing Shadow.
Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1  de track structuur van een MIDI file interpreteren.
1 februari Web concepts formulieren. 2 File i/o (input) $filename = “FILE_IO.CSV” ;// naam van het bestand $filesize = filesize( $filename )
Hoofdstuk 9.2 Strings.
Tinpro015b-les 1 C++ voor C-kenners Voor Technische Informatica.
Tinpro015b-les3 Hfdst 3,4 Meer operatoren Functies.
Codesystemen Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology.
Wat gaan we doen? Herhaling ARM assembler instructies
Transcript van de presentatie:

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 1 Wouter van Ooijen Mail: Sheets en verdere info: (en KSOOP2) Onderwerp: C programmeren voor gevorderden Literatuur:C handboek Kernighan & Ritchie Academic Service ISBN

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 2 Wat er van u verwacht wordt U bent (natuurlijk) aanwezig Neem de aangeven stof goed in u op U krijgt iedere week opgave(n); de opgave(n) van week N worden in principe op zijn laatst in week N+1 beoordeeld U maak de opgave(n) zelf Voor KSW002: tentamen Voor KSOOP2: gehaald als alle opgaven goed bevonden zijn

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 3 Materiaal Boek: C handboek, Kernighan & Ritchie USB memory stick (floppy mag ook, maar op eigen risico) Handouts DevC++ thuis installeren: Soms: hardware, ARM bord, etc

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 4 Wat gaan we doen? C gebruiken voor ‘practische’ dingen Binary I/O Werken met pre-defined file formats (bmp, wav, midi) PC paralelle poort als output Embedded (ARM en/of PIC) Vaste opgaven, eventueel afgesloten met vrije opgave

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 5 Binary I/O #include FILE *fp = fopen( name, ”rb” ); m = fread( &destination, sizeof(destination), n, fp ); m = fwrite( &source, sizeof(source), n, fp ); fclose( fp ); Je leest ‘letterlijk’ de bits uit de file naar je destination variabele. Geen formatting, geen interpretatie, gen conversie, niets.

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 6 BMP -Erg simple ‘picture’ format -Windows specifiek -Onderdeel van een set van file formats -Alternatieven: gif, png, jpg, … -Bekijken, omzetten: bv IrfanView -Definitie? Geen idee, probeer google!  lezen!

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 7 BMP format (1) - overall

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 8 BMP format (2) - header

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 9 BMP format (3) – info header

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 10 BMP format (4) - pallette

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 11 BMP format (5) – image data (pixels) 24 bits per pixel (= 3 bytes) Per regel, onderste regel eerst Binnen een regel left-to-right Aantal bytes per regel wordt ‘opgevuld’ met dummy (ongeruikte) bytes tot een veelvoud van 4

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 12 Opdracht 1 ’spelen’ Haal het bmp_dump programma op en maak er een executable van Installeer IrfanView Haal ergens een plaatje vandaan (bij voorkeur met veel contrast) Gebruik IrfanView om je plaatje om te zetten naar.bmp formaat Bekijk het plaatje met bmp_dump Gebruik IrfanView op het plaatje te re-sizen totdat je het behoorlijk kan zien met bmp_dump

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 13 bmp_dump.h - 1 typedef struct { unsigned short int type; unsigned int size; unsigned short int reserved1, reserved2; unsigned int offset; } __attribute__ ((packed)) t_bmp_header;

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 14 bmp_dump.h - 2 typedef struct { unsigned int size; int width,height; unsigned short int planes; unsigned short int bits; unsigned int compression; unsigned int imagesize; int xresolution,yresolution; unsigned int ncolours; unsigned int importantcolours; } __attribute__ ((packed)) t_bmp_info;

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 15 bmp_dump.c - 1 #include #include "bmp.h" int main(int argc, char *argv[]){ if( argc < 1 ){ printf( "please specify a file name\n" ); } else { read_bmp( argv[ 1 ] ); } system("PAUSE"); return 0; }

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 16 bmp_dump.c - 2 void read_bmp( char *file_name ){ FILE *fd; int n, n_bytes, x, y, color; unsigned char *p; t_bmp_header header; t_bmp_info info; /* open file */ if( NULL == ( fd = fopen( file_name, "rb" ))){ printf( "could not open %s\n", file_name ); return; }

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 17 bmp_dump.c - 3 /* read and check header */ if( 14 != sizeof( header )){ printf( "sizeof( header ) = %d\n", sizeof( header )); return; } if( 1 != ( n = fread( &header, sizeof( header ), 1, fd ))){ printf( "could not read header (n=%d)\n", n ); return; } if( header.type != 'MB' ){ printf( "type field is not 'BM' (=%d)\n", header.type ); return; } printf( "header file size = %d\n", header.size );

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 18 bmp_dump.c - 4 /* read and check info */ if( 40 != sizeof( info )){ printf( "sizeof( info ) = %d\n", sizeof( info )); return; } if( 1 != fread( &info, sizeof( info ), 1, fd )){ printf( "could not read info \n" ); return; } if( info.size != sizeof( info )){ printf( "info size =%d\n", info.size ); return; } printf( "format = %d x %d\n", info.width, info.height );

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 19 bmp_dump.c - 5 if( info.planes != 1 ){ printf( "info planes = %d\n", info.planes ); return; } if( info.bits != 24 ){ printf( "info bits = %d\n", info.bits ); return; } if( info.compression != 0 ){ printf( "info compression = %d\n", info.compression ); return; }

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 20 bmp_dump.c - 6 /* read the pixel data */ n_bytes = multiple( ( info.bits / 8 ) * info.width, 4 ) * info.height; if(( n_bytes + sizeof( header ) + sizeof( info )) != header.size ){ printf( "file size does not match, n_bytes=%d\n", n_bytes ); return; } if( NULL == ( p = malloc( n_bytes ))){ printf( "out of memory allocating %d bytes\n", n_bytes ); return; } if( n_bytes != ( n = fread( p, 1, n_bytes, fd ))){ printf( "could not read %d pixel data bytes (%d read)\n", n_bytes, n ); return; }

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 21 bmp_dump.c - 7 /* dump */ for( y = 0; y < info.height; y++ ){ for( x = 0; x < info.width; x++ ){ color = ( 3 * 255 ) - ( get( p, info, x, y, 0 ) + get( p, info, x, y, 1 ) + get( p, info, x, y, 2 )); if( color < 10 ){ printf( " " ); } else if( color < 250 ) { printf( "." ); } else if( color < 500 ) { printf( "o" ); } else { printf( "X" ); } printf( "\n" ); }

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 22 bmp_dump.c - 8 int multiple( int n, int x ){ return x * (( n + ( x - 1 )) / x ); } int get( unsigned char p[], t_bmp_info info, int x, int y, int offset ){ y = info.height - ( y + 1 ); return p[ offset + ( 3 * x ) + ( multiple( 3 * info.width, 4 ) * y ) ]; } printf( "\n" ); }

Computertechniek Hogeschool van Utrecht / Institute for Computer, Communication and Media Technology 23 Opdracht 2 ’sinus’ Maak een C programma dat een plaatje (bmp file) creeert met een behoorlijke formaat (bv 500 x 500 pixels). Het plaatje moet te bekijken zijn met IrfanView. Op het plaatje wil ik een cosinus zien (1 volle periode), compleet met X en Y as. Hints: gebruik zo veel mogelijk van de dmp_dump.c code; gebruik bmp_dump.exe om te controleren of je de file goed schrijft.