diff options
Diffstat (limited to 'Dokument/Teknisk Dokumentation/appendix/02-funktion.tex')
| -rw-r--r-- | Dokument/Teknisk Dokumentation/appendix/02-funktion.tex | 281 |
1 files changed, 281 insertions, 0 deletions
diff --git a/Dokument/Teknisk Dokumentation/appendix/02-funktion.tex b/Dokument/Teknisk Dokumentation/appendix/02-funktion.tex index e69de29..ea97a26 100644 --- a/Dokument/Teknisk Dokumentation/appendix/02-funktion.tex +++ b/Dokument/Teknisk Dokumentation/appendix/02-funktion.tex @@ -0,0 +1,281 @@ +\section{Funktioner och filer} + +\subsection{System} + +choose\_position(position, segment, track, track\_len) + +Körs när en givare passerats. Gör en bedömning om en givare (eller flera) har +missats genom att kontrollera vilken givare som är närmast den nuvarande +uppskattade position och kompenserar om en givare bedöms ha missats. + +clamp(n, m, M) + +En hjälpfunktion som returnerar n om $m < n < M$, annars m om $n < m$, annars M +om $n > M$. + +detect\_missed(position, segment, track, track\_len) + +Returnerar true om position ligger utanför det nuvarande segmentet. + +do\_boot(car, boot) + +Anropas en gång per programcykel i den så kallade boostrap-fasen. Se ANNAN DEL +AV TEXTEN för information. + +do\_car(car, t, displa\_data, boot) + +Anropas en gång per programcykel. Se ANNAN DEL AV TEXTEN och EN ANNAN DEL +AV TEXTEN för information om hur en programcykel ser ut och NÅGOT MER. + +do\_gov(car) + +Anropas varje gång en givare passerats. Vid målgivaren jämförs referenstiden och +den förra varvtiden och car.constant anpassas efter differensen mellan dem. Om +differensen är högre ändras car.constant mer, och vice versa om differensen är +låg. Vid givare 5 och 8 jämförs referenstiden och en uppskattning av hur lång +tid det nuvarande varvet troligen kommer ta. Se EN ANNAN DEL AV TEXTEN för +mer information. + +fit\_percents(percents, lap\_time, seg\_times) + +Anropas vid varje nytt varv. Räknar ut den procentuella tiden varje segment tog +det förra varvet och sparar medelvärdet mellan den förra procentsatsen och den +nya, uträknade procentsatsen. Procentsatsen normeras sedan så summan är 1 +(100%). + +format\_seg\_times(car) + +Anropas när körningen avslutas. Returnerar den genomsnittliga tiden för varje +segment. + +get\_aprox\_v(cur\_seg, car) + +Anropas varje programcykel. Uppskattar bilens nuvarande hastighet genom att +dividera den senast uppmätta segmentstiden med segmentets längd. + +get\_new\_u(new\_v, seg\_constant + +FLYTTA BERÄKNINGEN TILL DO\_CAR, BEHÖVER INTE VARA EN EGEN FUNKTION + +get\_new\_v(position, list) + +Anropas varje programcykel. Söker igenom bankartan och returnerar värdet v som +matchar position. + +get\_position(aprox\_v, prev\_p, delta\_t) + +Anropas varje programcykel. Räknar ut hur långt bilen rört sig sedan senaste +programcykeln. + +get\_seg\_constant(position, lap\_constants, track, track\_len) + +TA BORT + +get\_time\_as\_string(millis) + +Omvandlar en mängd millisekunder till formatet "mm:ss.s". Till exempel omvandlas 1250 +ms till "00:01.3" och 11240 till "00:11.2". + +main.m + +Huvudskriptet som startar hela systemet. + +\subsection{Display} + +bar\_graph(direction, no, x1, x2, y1, y2, start\_value, end\_value, type, pattern): + +Skapar ett stapeldiagram med ett hörn i (*x1*, *y1*) och ett diagonellt +hörn i (*x2*, *y2*). *direction* är en av 'O', 'U', 'L' och 'R' och +bestämmer åt vilket håll "upp" är på stapeln. 'O' står för upp ('oben' +på tyska), 'U' står för ner ('unter' på tyska), 'L' står för vänster +('links') och 'R' står för höger ('rechts'). Värdet stapeldiagrammet ska +visa specifieras med *update\_bar\_graph*. *start\_value* och +*end\_value* bestämmer vad som ska vara noll- respektive maxvärde för +stapeldiagrammet. *no* är stapeldiagrammets nummer och behöver +specifieras när stapeldiagrammets värde ska uppdateras. *type* sätts +till 0 för en enkel stapel och 1 för en stapel inuti en ram. + +box(x1, y1, x2, y2, n1) + +Ritar en rektangel med diagonella hörn i (*x1*, *y1*) och (*x2*, *y2*) +och mönster-nummer *n1*. + +clear\_display() + +Rensa displayen. + +continue\_line(x2, y2) + +Fortsätt en linje från den senast specifierade linjens slut till (*x2*, +*y2*). + +delete\_area(x1, y1, x2, y2) + +Ta bort (släck) alla pixlar i det rektangulära området mellan (*x1*, +*y1*) och (*x2*, *y2*). + +draw\_line(x1, y1, x2, y2) + +Rita en linje mellan (*x1*, *y1*) och (*x2*, *y2*). + +draw rectangle(x1, y1, x2, y2) + +Rita en rektangel (ej ifylld) mellan (*x1*, *y1*) och (*x2*, *y2*). + +fill\_area(x1, y1, x2, y2) + +Tänd alla pixlar i det rektangulära området mellan (*x1*, *y1*) och +(*x2*, *y2*). + +fill\_area\_with\_pattern(x1, y1, x2, y2, n1) + +Fyll det rektangulära området mellan (*x1*, *y1*) och (*x2*, *y2*) med +mönster *n1*. + +fill\_display() + +Tänd alla pixlar på displayen. + +flashing\_area(x1, y1, x2, y2) + +Fyll det rektangulära området mellan (*x1*, *y1*) och (*x2*, *y2*) med +blinkande pixlar. Blinkintervallet kan sättas med *set\_flashing\_time*. + +flashing\_area\_with\_pattern(x1, y1, x2, y2) + +Fyll det rektangulära området mellan (*x1*, *y1*) och (*x2*, *y2*) med +blinkande pixlar i ett mönster. Blinkintervallet kan sättas med +*set\_flashing\_time*. + +invert\_area(x1, y1, x2, y2) + +Tänd alla släckta pixlar och släck alla tända pixlar i det rektangulära +området mellan (*x1*, *y1*) och (*x2*, *y2*). + +invert\_display() + +Tänd alla släcka pixlar och släck alla tända pixlar på hela displayen. + +key(x1, y1, x2, y2, down\_code, up\_code, just, text) + +Skapa en tryckbar knapp (till skillnad från en omkopplare, se +*toggle(...)*) med diagonella hörn i (*x1*, *y1*) och (*x2*, *y2*) och +texten *text*. Hur texten justeras beror på *just* där 'R' gör texten +högerjusterad ('right'), 'C' gör texten centerjusterad och 'L' gör +texten vänsterjusterad ('left'). Om knappen trycks ned läggs +*down\_code* i displayens interna minne och om knappen släpps läggs +*up\_code* i displayens interna minne. + +point(x1, y1) + +Rita en punkt i (*x1*, *y1*). Punktens storlek kan anpassas med +*set\_point\_size*. + +put\_text(x, y, justification, text) + +Skriv ut texten *text* i (*x*, *y*). Hur texten justeras beror på +*justification* där 'R' gör texten högerjusterad ('right'), 'C' gör +texten centerjusterad och 'L' gör texten vänsterjusterad ('left'). Om +*justification* är 'R' bestämmer *x* och *y* textens övre högra +koordinat, om *justification* är 'C' bestämmer *x* och *y* textens +mittre koordinat och om *justification* är 'L' bestämmer *x* och *y* +textens övre vänstra koordinat. + +redraw\_bar\_graph(num) + +Tvinga stapeldiagram *num* att ritas om. + +remove\_flashing\_area(x1, y1, x2, y2) + +Ta bort blinkade pixlar i det rektangulära området mellan (*x1*, *y1*) +och (*x2*, *y2*). + +request\_bar\_graph\_value(num) + +Lägg nuvarande värdet för stapeldiagram *num* i displayens interna +minne. + +restore\_display\_from\_clipboard() + +Flytta innehållet från displayens urklipp till displayen. + +restore\_display\_from\_clipboard\_to\_point(x1, y1) + +Flytta innehållet från displayens urklipp till displayen med övre +vänstra hörn i (*x1*, *y1*). Spara ett område med +\_save\_area\_to\_clipboard(...). + +save\_area\_to\_clipboard(x1, y1, x2, y2) + +Kopiera innehållet i den rektangel mellan (*x1*, *y1*) och (*x2*, *y2*) +till displayens urklipp. Återställ med +*restore\_display\_from\_clipboard\_to\_point(...)*. + +save\_display\_to\_clipboard() + +Kopiera displayens nuvarande innehåll till displayens urklipp. Återställ +med *restore\_display\_from\_clipboard()*. + +set\_display\_visible(visible) + +Sätt om displayen ska vara synlig (*visible* = true) eller om displayen +ska vara osynlig (*visible* = false). Att displayen är osynlig innebär +att innehållet inte syns men finns kvar i bakgrunden och kan visas igen +om *set\_display\_visible(true)* skickas. + +set\_drawing\_mode(n1) + +Sätt displayens ritläge. *n1* = 1 innebär att pixlar slås på eller av +(som vanligt) enligt kommandot som skickas, *n1* = 2 innebär att pixlar +enbart slås av (som ett suddgummi) och *n1* = 3 innebär att pixlar +inverteras (släckta pixlar slås på och tända pixlar stängs av) + +set\_flashing\_time(n1) + +Sätt intervallet blinkande objekt blinkar i. *n1* är ett intervall i +tiondelar av en sekund mellan 0,1 sekunder och 1,5 sekunder. + +set\_line\_pattern(n1) + +Sätt mönstret linjer ritas ut med. + +set\_point\_size(n1, n2) + +Sätt storleken på punkter och linjer som ritas ut. *n1* är storleken i +x-led (mellan 1 och 15 pixlar) och *n2* är storleken i y-led (mellan 1 +och 15 pixlar). + +set\_text\_flashing(n1) + +Sätt om ny text som skrivs ut ska blinka eller inte. *n1* = 1 slår på +blinkande och *n1* = 2 stänger av blinkande. + +set\_text\_font(font\_num) + +Sätt typsnittet på ny text som skrivs ut. Se *REF* för information om de +olika typsnitten. + +set\_text\_zoom(x\_scale, y\_scale) + +Sätt skalfaktorn för ny text som skrivs ut. *x\_scale* är skalfaktorn i +x-led (mellan x1 och x8) och *y\_scale* är skalfaktorn i y-led (mellan +x1 och x8). + +set\_touch\_sound\_response(state) + +Sätt om displayen ska göra ljud när knappar trycks ned. *state* = 1 slår +på ljudet och *state* = 0 stänger av ljudet. + +toggle(x1, y1, x2, y2, down\_code, up\_code, just, text) + +Skapa en tryckbar omkopplare (till skillnad från en knapp, se +*key(...)*) med diagonella hörn i (*x1*, *y1*) och (*x2*, *y2*) och +texten *text*. Hur texten justeras beror på *just* där 'R' gör texten +högerjusterad ('right'), 'C' gör texten centerjusterad och 'L' gör +texten vänsterjusterad ('left'). Om knappen aktiveras läggs *down\_code* +i displayens interna minne och om knappen avaktiveras läggs *up\_code* i +displayens interna minne. + +update\_bar\_graph(num, val) + +Skicka värdet *val* till stapeldiagram *num*. |
