kramann.info
© Guido Kramann

Login: Passwort:










Archiv
2 SoSe2022
..2.1 MIK
..2.2 SRT
..2.3 HDL
..2.4 AUT
..2.5 SLE
2 WS2020_21
..2.1 RTS
....2.1.1 day_by_day
..2.2 IE
....2.2.1 day_by_day
..2.3 ES
..2.4 EFSEE
....2.4.1 day_by_day
..2.5 KF
....2.5.1 day_by_day
....2.5.2 Haikus
....2.5.3 Haikus_en
..2.6 CC
....2.6.1 day_by_day
2 WS2021_22
..2.1 RTS
....2.1.1 day_by_day
....2.1.2 Versuch002
....2.1.3 Versuch003
....2.1.4 Versuch004
....2.1.5 Versuch005
....2.1.99 Material
..2.2 FTS
....2.2.1 day_by_day
..2.3 ESY
....2.3.1 day_by_day
..2.4 INFmecha5
....2.4.1 day_by_day
..2.5 REGmecha5
....2.5.1 day_by_day
2 WS2023_24
..2.1 day_by_day_RST
..2.2 day_by_day_SRT
..2.3 day_by_day_FTS
..2.4 day_by_day_KF
3 SoSe2021
..3.1 STR
....3.1.1 day_by_day
..3.2 SLE
....3.2.1 day_by_day
..3.3 HDL
....3.3.1 day_by_day
..3.4 MIK
....3.4.1 day_by_day
3 SoSe2024
..3.1 Mik_21_03_2024
..3.2 Mik_04_04_2024
..3.3 Mik_11_04_2024
..3.4 Mik_18_04_2024
..3.5 Mik_25_04_2024
..3.6 Mik_02_05_2024
..3.7 Mik_16_06_2024
..3.8 Mik_23_05_2024
..3.9 Mik_30_05_2024
..3.10 Mik_05_06_2024
..3.11 Mik_13_06_2024
3 WS2022_23
..3.1 day_by_day_RST_3MB
..3.2 day_by_day_RT2_5MT
..3.3 day_by_day_EMB_7MT
..3.4 day_by_day_ABP_7MT
..3.5 day_by_day_FTS_MMB
..3.6 day_by_day_KF
4 SoSe2023
..4.2 RTS_day_by_day
..4.3 MIK_day_by_day
..4.4 AUT_day_by_day
..4.5 HDL_day_by_day
4 WS2024_25
..4.1 ING_day_by_day
....4.1.1 ING_Do_26_09_2024
....4.1.2 ING_Do_10_10_2024
....4.1.3 ING_Do_17_10_2024
....4.1.4 ING_Do_24_10_2024
....4.1.5 ING_Do_07_11_2024
....4.1.6 ING_Do_14_11_2024
....4.1.7 ING_Do_21_11_2024
....4.1.8 ING_Do_28_11_2024
....4.1.9 ING_Do_05_12_2024
....4.1.10 ING_Do_12_12_2024
....4.1.11 ING_Do_19_12_2024
..4.2 INF_day_by_day
....4.2.1 INF_Fr_27_09_2024
....4.2.2 INF_Fr_04_10_2024
....4.2.3 INF_FR_18_10_2024
....4.2.4 INF_Fr_25_10_2024
....4.2.5 INF_Fr_08_11_2024
....4.2.6 INF_Fr_15_11_2024
....4.2.7 INF_Fr_22_11_2024
....4.2.8 INF_Fr_29_11_2024
....4.2.9 INF_Fr_06_12_2024
....4.2.10 INF_Fr_13_12_2024
....4.2.11 INF_Fr_20_12_2024
....4.2.12 INF_Fr_10_01_2025
..4.3 FTS_day_by_day
....4.3.1 FTS_Mi_25_09_2024
....4.3.2 FTS_Mi_02_10_2024
....4.3.3 FTS_Mi_09_10_2024
....4.3.4 FTS_Mi_16_10_2024
....4.3.5 FTS_Mi_23_10_2024
....4.3.6 FTS_Mi_30_10_2024
....4.3.7 FTS_Mi_06_11_2024
....4.3.8 FTS_Mi_13_11_2024
....4.3.9 FTS_Mi_20_11_2024
....4.3.10 FTS_Mi_27_11_2024
....4.3.11 FTS_Mi_04_12_2024
....4.3.12 FTS_Mi_11_12_2024
....4.3.13 FTS_Mi_18_12_2024
6 Ing
..6.1 Bauplan
....6.1.1 Bootstick
....6.1.2 Xubuntu
....6.1.3 Webserver
....6.1.4 Hotspot
....6.1.5 Videostream
....6.1.6 Lampe
....6.1.7 Chassis
....6.1.8 Akku
....6.1.9 Motore
....6.1.10 Laborsteckboard
....6.1.11 Antriebstest
7 007
..7.1 Einschalten
..7.2 Vorversuche
kramann.info
© Guido Kramann

Login: Passwort:




Inhalte zur Vorlesungswoche #9, Entwicklung fehlertoleranter Software für eingebettete Echtzeitsysteme im Wintersemester 2024/25

(EN google-translate)

(PL google-translate)

Beschäftigung im Falle einer Verspätung:
  • Lassen Sie sich den Holzschrank aufschließen.
  • Arbeiten Sie an Ihrem Projekt.
  • Schauen Sie sich meine Beurteilungskriterien noch einmal an.
  • Konkretisieren Sie Ihr Projektthema, auch im Hinblaich darauf, welche Fehlertoleranzpattern zum Einsatz kommen können.

Themen heute:

Aufgrund der aufgetretenen Probleme in den einzelnen Gruppen letzte Woche werden zu Beginn folgende Fragestellungen behndelt:

  1. Wie kann man vorgehen, um mehrere Processing-Programm miteinander zu verbinden?
  2. Wie bekommt man aus ChatGPT funktionierende Teillösungen für die Projekte heraus?
  3. Wie kann man den Datentyp ArrayList sinnvoll im eigenen Projekt einsetzen?

1 Wie kann man vorgehen, um mehrere Processing-Programm miteinander zu verbinden?


Beispiel:


// Click within the image to change 
// the value of the rectangle after
// after the mouse has been clicked

int value = 0;

public void setup()
{
     size(500,500);
}

void draw() 
{
  fill(value);
  rect(25, 25, 50, 50);
}

void mouseClicked() 
{
  if (value == 0) 
  {
    value = 255;
  } 
  else 
  {
    value = 0;
  }
}

Code 0-1: Sketch 1


import processchains.simple.SimplePiano;
SimplePiano piano;

public void setup()
{
    piano = new SimplePiano(this);     // piano sound
    frameRate(5);
}

int t=0;                        // ... represents natural numbers as time series.
int BASENUMBER = 2*2*2*3*3*5*7; // == 2520
public void draw()              // method looped 5 times per second
{
    
    int tt = t;
    int ff = BASENUMBER;
    
    //Extract primefactors 2,3,5,7 from t and take them away from the BASENUMBER: 
    while(tt>=2 && tt%2==0 && ff>=2 && ff%2==0) {tt/=2;ff/=2;}
    while(tt>=3 && tt%3==0 && ff>=3 && ff%3==0) {tt/=3;ff/=3;}
    while(tt>=5 && tt%5==0 && ff>=5 && ff%5==0) {tt/=5;ff/=5;}
    while(tt>=7 && tt%7==0 && ff>=7 && ff%7==0) {tt/=7;ff/=7;}
    
    //Interpretate the result as a frequency and play it:
    if(ff>=55 && ff<=1760) piano.playFrequency(ff);
    
    t++;  // next number from N
}

Code 0-2: Sketch 2

//von Merge002
import processchains.simple.SimplePiano;
SimplePiano piano;
int t=0;                        // ... represents natural numbers as time series.
int BASENUMBER = 2*2*2*3*3*5*7; // == 2520

//von Merge001
int value = 0;

public void setup()
{
    piano = new SimplePiano(this);     // piano sound
//    frameRate(5);
    frameRate(30);
    size(500,500);

}
int zaehler = 0;
public void draw()
{
    
  if(zaehler%6==0)
  {
    int tt = t;
    int ff = BASENUMBER;
    
    //Extract primefactors 2,3,5,7 from t and take them away from the BASENUMBER: 
    while(tt>=2 && tt%2==0 && ff>=2 && ff%2==0) {tt/=2;ff/=2;}
    while(tt>=3 && tt%3==0 && ff>=3 && ff%3==0) {tt/=3;ff/=3;}
    while(tt>=5 && tt%5==0 && ff>=5 && ff%5==0) {tt/=5;ff/=5;}
    while(tt>=7 && tt%7==0 && ff>=7 && ff%7==0) {tt/=7;ff/=7;}
    
    //Interpretate the result as a frequency and play it:
    if(ff>=55 && ff<=1760) piano.playFrequency(ff);
    
    t++;  // next number from N
  }
  zaehler++;
    //von merge001:
    fill(value);
    rect(25, 25, 50, 50);
    
}


void mouseClicked() 
{
  if (value == 0) 
  {
    value = 255;
  } 
  else 
  {
    value = 0;
  }
}

Code 0-3: Sketch 1 UND 2

2 Wie bekommt man aus ChatGPT funktionierende Teillösungen für die Projekte heraus?

https://chatopenai.de/ -- deutsche Version von chatGPT.

ChatGPT, hier sind zwei Processing-Sketche:

Sketch1:
...

Sketch2:
...

Verbinde beide Sketche zu einem einzigen, so, 
dass das beide Programme machen in dem neuen 
Sketch weiterhin unverändert gemeinsam funktioniert.


Code 0-4: Verbinden zweier Sketch (Beispiel).

3 Wie kann man den Datentyp ArrayList sinnvoll im eigenen Projekt einsetzen?


Beispiel:


ArrayList<int[]> liste = new ArrayList<int[]>();

public void setup()
{
     size(500,500);
}

int x=0,y=0;

public void draw()
{
    int xneu = (int)mouseX;
    int yneu = (int)mouseY;
    
    if(xneu!=x || yneu!=y)
    {
         int[] arr = new int[2];
         arr[0]=xneu;
         arr[1]=yneu;
         liste.add(arr);
         x=xneu;
         y=yneu;
    }
 
    background(0);
    stroke(255);
    for(int i=1;i<liste.size();i++)
    {
         int[] a = liste.get(i-1);
         int[] b = liste.get(i);
         line(a[0],a[1],b[0],b[1]);
    }
}

Code 0-5: Beispiel für ArrayList