Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (GNU/Linux, *NIX, *BSD und Co) » Starten eines Programms mit Parameterübergabe

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
04.01.2014, 17:50 Uhr
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
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
04.01.2014, 19:55 Uhr
Hans
Library Walker
(Operator)


Hi,

also wenn Du ein kompletter C-Anfänger bist, Dir also die Codezeilen für das Sensorprogramm beispielsweise nur wenig mehr als nichts sagen, dann solltest Du erst mal programmieren lernen, und Dich schrittweise an die Lösung heran arbeiten. Sonst hast Du einen Fall, wo alles funktioniert, aber nicht weisst warum. Oder nimm mal das Progamm unten, das aus einem Lehrbuch (Isernhagen, siehe hier, 3. Beitrag) stammt: Da ist ein logischer Fehler drin, der das Programm unter bestimmten Umständen abstürzen lässt, bzw. das Betriebssystem veranlasst, die ausführung abzubrechen. Wenn Du den nicht findest, solltest Du das (oder ein ähnliches) Buch erst mal durcharbeiten. Der Fehler hat nämlich was mit der Parameterübergabe an ein Programm zu tun.

Hans


C++:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <assert.h>

/*----------------Globale Typdefinitionen-----------------*/
#define ListLen 1000
#define WordLen 15

typedef char Word[WordLen+1];

typedef Word WordList[ListLen];
/* Gleichbedeutend mit
   typedef char Wordlist[ListLen][WordLen+1]              */


/*----------------Globale Variable------------------------*/
int count, len;

/*----------------Prototypen------------------------------*/
void GetWord(FILE *ein, Word wo, int *length);
/* Das naechste Wort aus der Datei ein holen, es ist
   length Zeichen lang                                    */


void Include(Word wo, WordList list);
/* Das Wort wo in die Wortliste list eintragen, wenn es
   nicht schon vorhanden ist                              */


void Sort(WordList list);
/* Die Wortliste list alphabetisch - entsprechend dem
   ASCII-Code ! - sortieren                               */


void Print(WordList list, char* filename);
/* Die Wortliste list in die Datei "WoList.Dat" schreiben */

/*----------------main-Funktion---------------------------*/
int main(int argc, char *argv[])
{

  FILE *ein;
  Word wo;
  WordList list;

  ein = fopen(argv[1], "r");
  count = 0;
  GetWord(ein, wo, &len);
  while (!feof(ein) && count < ListLen-1)
    {
      if (len >= 2) Include(wo, list);
      GetWord(ein, wo, &len);
    }
  fclose(ein);

  Sort(list);
  Print(list, "WoList0.Dat");
  return 0;

}

/*---------------Implementierung der Funktionen-----------*/
void GetWord(FILE *ein, Word wo, int *length)
{
  int i = 0;
  char ch = getc(ein);
  while ( ! isalpha(ch) && !feof(ein) ) ch = fgetc(ein);
  while ( isalpha(ch) && i < WordLen)
    {
      wo[i] = ch;
      ch = fgetc(ein);
      i++;
    }
  wo[i] = '\0';
  *length = i;
}

void Include(Word wo, WordList list)
{
  int i;
  for (i=0; i<count; i++)
    if (strcmp(wo, list[i]) == 0)
      return;
  strcpy(list[count++], wo);
}

void Sort(WordList list)
{
  int i, j;
  Word wo;
  for (i=1; i<count; i++)
    {
      for (j=count-1; j>=i; j--)
        if (strcmp(list[j-1], list[j]) > 0)
          {
            strcpy(wo, list[j]);
            strcpy(list[j], list[j-1]);
            strcpy(list[j-1], wo);
          }
    }
}

void Print(WordList list, char* filename)
{
  FILE *aus;
  int i;
  aus = fopen(filename, "w");
  for (i=0; i<count; i++)
    {
      if (i%4 == 0) fprintf(aus, "\n");
      fprintf(aus, "%15s ", list[i]);
    }
  fprintf(aus, "\n\n %d Woerter \n", count);
  fclose(aus);
}



--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (GNU/Linux, *NIX, *BSD und Co) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: