Seite 1 von 1

Staren eines Programms mit Übergabe von Parametern

Verfasst: Sa Jan 04, 2014 5:53 pm
von shtlcd
Hallo,

ich möchte gerne die Daten eines Temperatur- und Feuchtigkeitssensors auf einem LCD Display darstellen. Beide Peripheriegeräte befinden sich an einem Raspberry Pi.

Ich habe ein C Programm des Sensors, welches ich selber für das starten auf einem Raspberry Pi kompiliert habe. Nun möchte ich dieses C Programm dahingehend erweitern, dass es ein weiteres bereits kompiliertes C Programm des lcd displays, welches im selben Ordner liegt, parallel mit startet.

Außerdem sollen beim starten des zweiten C Programms 4 Parameter aus dem 1. Sensor Programm mit übergeben werden.
Die Parameter sind 2 chars (Textstring) und 2 floats (Temperatur- und Feuchtigkeitswerte), wobei die 2 floats als Variable aus dem 1. C Programm eingelesen werden sollen.

Ich hoffe das nicht zu kompliziert beschrieben zu haben. Daher hier nochmal mein Lösungsansatz mit dem es aber nicht klappt:

system("./lcd" "Temperatur" "var_temp" "Luftfeuchtigkeit" "var_lf");

Ich bin in C ein kompletter Anfänger und hoffe daher auf eure Hilfe.

Danke !

Gruß Andreas

Re: Staren eines Programms mit Übergabe von Parametern

Verfasst: Sa Jan 04, 2014 7:07 pm
von cloidnerux
Hallo,
Hi und Willkommen im Forum :D
Daher hier nochmal mein Lösungsansatz mit dem es aber nicht klappt:

Code: Alles auswählen

system("./lcd" "Temperatur" "var_temp" "Luftfeuchtigkeit" "var_lf");
Das würde schon Funktionieren, wenn du validen C-Code schreiben würdest., was dir dein Compiler auch mitteilen sollte.
Du hast hier mehrere Strings hintereinander und C weiß nicht was das soll:

Code: Alles auswählen

"Text1" "Text2";   //Das funktioniert nicht
Was du stattdessen machen willst ist einen String bauen, der deine Werte beinhaltet:

Code: Alles auswählen

char command[50];
sprintf(command, "./lcd Temperatur %f Luftfeuchtigkeit %f", var_temp, var_lf);
system(command);

Re: Staren eines Programms mit Übergabe von Parametern

Verfasst: Sa Jan 04, 2014 8:19 pm
von shtlcd
Danke !

Es klappt :)

Eine Frage noch...

Wenn ich folgenden code habe:

int main ()
{
programm;
return 1;
}

Wie schaffe ich es das das Programm sich alle 60s von alleine neu startet. Am besten im Hintergrund ohne Ausgabe auf der Konsole.

Danke schonmal !

Re: Staren eines Programms mit Übergabe von Parametern

Verfasst: Sa Jan 04, 2014 8:49 pm
von cloidnerux
Wie schaffe ich es das das Programm sich alle 60s von alleine neu startet.
Im Programm gar nicht.
Du kannst entweder ein Cron-Job erstellen, dann kümmert sich dein Linux um das starten des Programms.
Oder du schickst dein Programm für 60s schlafen, dann musst du dich aber in Threading einlesen.

Re: Staren eines Programms mit Übergabe von Parametern

Verfasst: Sa Jan 04, 2014 9:15 pm
von shtlcd
sorry...wahrscheinlich falsch formuliert. Ich möchte das Programm in einer Endlosschleife laufen lassen.
In shell Sprache also while true; do und mit sleep 60;

Wie ginge das in C ?

Re: Staren eines Programms mit Übergabe von Parametern

Verfasst: Sa Jan 04, 2014 9:30 pm
von Xin
Moin
shtlcd hat geschrieben:Wie ginge das in C ?
Das sieht doch klar nach Linux aus.
Geh mal in die Konsole und gib 'man usleep' ein:

Code: Alles auswählen

#include <unistd.h>

int usleep(useconds_t useconds);
=>

Code: Alles auswählen

usleep( 60 * 1000 ); // 60 * 1000 Millisekunden