Staren eines Programms mit Übergabe von Parametern

Schnelle objektorientierte, kompilierende Programmiersprache.
Antworten
shtlcd
Beiträge: 3
Registriert: Sa Jan 04, 2014 5:44 pm

Staren eines Programms mit Übergabe von Parametern

Beitrag von shtlcd » Sa Jan 04, 2014 5:53 pm

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

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Staren eines Programms mit Übergabe von Parametern

Beitrag von cloidnerux » Sa Jan 04, 2014 7:07 pm

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);
Redundanz macht wiederholen unnötig.
quod erat expectandum

shtlcd
Beiträge: 3
Registriert: Sa Jan 04, 2014 5:44 pm

Re: Staren eines Programms mit Übergabe von Parametern

Beitrag von shtlcd » Sa Jan 04, 2014 8:19 pm

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 !

Benutzeravatar
cloidnerux
Moderator
Beiträge: 3125
Registriert: Fr Sep 26, 2008 4:37 pm
Wohnort: Ram (Gibts wirklich)

Re: Staren eines Programms mit Übergabe von Parametern

Beitrag von cloidnerux » Sa Jan 04, 2014 8:49 pm

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.
Redundanz macht wiederholen unnötig.
quod erat expectandum

shtlcd
Beiträge: 3
Registriert: Sa Jan 04, 2014 5:44 pm

Re: Staren eines Programms mit Übergabe von Parametern

Beitrag von shtlcd » Sa Jan 04, 2014 9:15 pm

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 ?

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: Staren eines Programms mit Übergabe von Parametern

Beitrag von Xin » Sa Jan 04, 2014 9:30 pm

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
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Antworten