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:
|
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?
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?
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