Forum: Mikrocontroller und Digitale Elektronik Applikation unter Linux und AP7000


von abdo (Gast)


Lesenswert?

Hallo Leute,
ich habe den ICnova_oem Board, und habe daran einen TFT, Motorsteuerung 
und ein paar Pneumatic Ventile angeschlossen.
Nun habe ich das Problem mit der Programmierung, wie soll eine 
Applikation aussehen, wenn ich alle den Display mit aktuellen Werte 
refreshen will, und mittel den Touch-interface (der auf dem Display 
sitzt) die Motorsteuerung ansteuere.
Eine Applikation unter Linux ist nichts anderes als ein oder mehrere 
Quellcodes, die einen main()-Funktion enthalten und mit einen Makefile 
zu einer ausführbaren Datei übersetzen lassen.
Frage: gibt es eine Möglichkeit oder einen Programmiertechnik, wie man 
mehrere Processe so gestallten kann, dass sie mit ein andere 
kommunizieren können? was ist mit threads? die fork()-Funktion vertehe 
ich nicht ganz wie man damit arbeiten kann? kann mir jmd helfen die 
richtige technik zu bekommen, einen guten Programm zu entwerfen?
Vielen Dank schonmal.
Abdo

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

abdo schrieb:
> wie soll eine Applikation aussehen,
Naja, wie ein Programm, das genau das macht, was Du willst.
Wenn wir Dir schreiben, wie das aussieht, hast Du ja bereits dein 
Programm.
Wenn ich das machen soll, kostet das einiges (sicherlich auch bei den 
anderen).

> Eine Applikation unter Linux ist nichts anderes als ein oder mehrere
> Quellcodes, die einen main()-Funktion enthalten und mit einen Makefile
> zu einer ausführbaren Datei übersetzen lassen.

Das ist nicht nur unter Linux so, sondern auf jedem System, wenn man mit 
C/C++ programmiert.

> Frage: gibt es eine Möglichkeit oder einen Programmiertechnik, wie man
> mehrere Processe so gestallten kann, dass sie mit ein andere
> kommunizieren können?

1. Shared Memory
2. Named Pipes
3. Dateisystem
4. Netzwerk
5.

> was ist mit threads? die fork()-Funktion vertehe
> ich nicht ganz wie man damit arbeiten kann?
Benutze doch mal Google (oder eine andere, dir genehme Suchmaschine). 
Dazu gibt es massig Infos im Netz. Fast jedes Serverprogramm arbeitet 
damit.
Das ganze ist aber so umfangreich, dass es hier im Forum nicht erklärt 
werden kann.

> kann mir jmd helfen die
> richtige technik zu bekommen, einen guten Programm zu entwerfen?
Sicherlich jede Suchmaschine plus eine gehörige Portion Hirnschmalz.

von Abdo (Gast)


Lesenswert?

Danke  Christian H für die schnelle Antwort.
Ja, ich habe schon ein paar Applikationen auf die Beine gestellt, mittel 
Mailboxen, nur wie ist es am effektivsten, 2 Processe miteinander 
kommunizieren zu gestallten? ich habe auch Probleme mit der Seriellen 
Schnittstelle, wenn du Lust und Geduld hast, kann ich die den Code 
Posten. Ich kann auch verstehen dass du lieber Geld dafür nehmen willst, 
den Zeit kostet Geld.
Ich brauche nur Tipps, und damit hast du schon angefangen, besten dank.
Gruss Abdo

von Anzahl Blaetter eines Purzelbaumes (Gast)


Lesenswert?

Die Frage ist erstmal, weshalb man mehrere Prozesse nehmen will wenn's 
auch einer tut. Und dann noch einzelne applikationen, die man einzeln 
starten kann/muss. Was geschieht wenn die eine Applikation fehlt, und an 
der Mailbox nichts ist ? Eine Mailbox ist nicht beliebig tief. Auch wenn 
der urspruengliche zweck eine gebufferte Kommunikation ist, wird die 
Kommunikation blockierend wenn auf der anderen Seite nichts ist. Und 
dann stoppt der Prozess. Ist das erlaubt ? Eher nicht.
Also zurueck zu einer Einzelapplikation die aus mehreren Prozessen 
besteht, die alle zusammen gestartet werden.

von Zwie B. (zwieblum)


Lesenswert?

@abdo: Auch wenns böse klingt, aber du hast das da vor dir:

1) Lerne Linux
2) Lerne Programmieren
3) Löse dein Problem, so dass es funktioniert, für die Textkonsole.
4) Optimiere, aber erst wenn du einen funktionierenden Prototypen hast, 
wo wirklich ein Performanceproblem besteht.
5) Kümmere dich um eine GUI.

von Klaus W. (mfgkw)


Lesenswert?

Christian H. schrieb:
> 1. Shared Memory
> 2. Named Pipes
> 3. Dateisystem
> 4. Netzwerk
> 5.

5. Unix-Domain-Sockets
6. pipe()
7. Globale Variablen mehrerer Threads (-> Mutex, Semaphoren!)

[1] W. Richard Stevens: Unix Network Programming
Vol. 1: Networking APIs: Sockets and XTI

[2] W. Richard Stevens: Unix Network Programming
Vol. 2: Interprocess Communications

[3] W. Richard Stevens: Advanced Programming in the Unix Environment

von Abdo (Gast)


Lesenswert?

Vielen dank Leute,
ich benutze Mehrere Processe, weil ich einfach die Messmittel 
voneinander trennen will, die Motorsteuerung hat mit dem GUI nichts zu 
tun, ausser wenn ich beispielsweise die Position erfragen will, dann 
geschieht dies mittel MB, und die Variable wird zu einem UI-Task 
geschickt, der ständig variablen auf dem Display anzeigt.
Wie kann ich mehrere Processe von einem Process aus starten, und trozdem 
diese auseinander trennen kann?
Abdo

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.