Forum: PC-Programmierung Hilfe bei Auswahl IPC (inter process communication)


von Stefan W. (bier16v)


Lesenswert?

Hallo zusammen,
ich versuche gerade eine Anwendung zur Steuerung eines FU (via Serielle 
Schnittstelle und ModBus) auf dem Raspberry (raspbian) zu erstellen. 
Meine Idee ist es, eine Anwendung zur Kommunikation via serielle 
Schnittstelle zu schreiben, um etwaige gleichzeitige Zugriffe zu 
verhindern.

Da später mehrere Programme darauf zugreifen sollen (User via GUI oder 
shell, cronjob, deamon prozess, ...) wäre ich für ein paar Ideen zur 
(einfachen) Umsetzung dankbar.

Ein mögliches Szenario wäre, der User gibt eine Solldrehzahl vor, diese 
wird an den FU gesendet.
Später erkennt der deamon prozess eine Stromspitze im Netz und reduziert 
die Drehzahl (Gebläse).
Ein chron-job loggt alle 5 Minuten Drehzahl und andere Motorparameter 
(Ströme, Leistung, ...) des FU.

Dabei sollte es verschiedene Proiritäten geben.
1 -> Drezhalreduktion bei Stromspitzen (höchste Prio)
2 -> optimale Solldrehzahl durch Regelung (wird erst viel später 
umgesetzt)
3 -> Gewünschte Drehzahl des Users
5 -> Status des FU und Motorparameter abfragen (niedrigste Prio)


Ich würde das ganze in C programmieren.
Freue mich auf eure Vorschläge

von Wilhelm M. (wimalopaan)


Lesenswert?

Stefan W. schrieb:
> Hallo zusammen,
> ich versuche gerade eine Anwendung zur Steuerung eines FU (via Serielle
> Schnittstelle und ModBus) auf dem Raspberry (raspbian) zu erstellen.
> Meine Idee ist es, eine Anwendung zur Kommunikation via serielle
> Schnittstelle zu schreiben, um etwaige gleichzeitige Zugriffe zu
> verhindern.
>
> Da später mehrere Programme darauf zugreifen sollen (User via GUI oder
> shell, cronjob, deamon prozess, ...) wäre ich für ein paar Ideen zur
> (einfachen) Umsetzung dankbar.

Wenn ich das richtig verstehe, möchtest Du eine Koppelung GUI <-> 
daemon? Dann mach eine (lokale / abstrakte) Socket-Kommunikation. 
SharedMemory oder MessageQueues geht natürlich auch, doch Socket ist 
wohl einfacher / universeller ...

von Stefan W. (bier16v)


Lesenswert?

Danke,
ich werde mich am Wochenende mal mit den genannten Vorschlägen 
auseinandersetzen.

von Wilhelm M. (wimalopaan)


Lesenswert?

Stefan W. schrieb:
> Danke,
> ich werde mich am Wochenende mal mit den genannten Vorschlägen
> auseinandersetzen.

Eine große Hilfe wird sein: APUE (Advanced programming in the unix 
environment).

von Torsten W. (madcad)


Lesenswert?

Hi,

ich kann dir da auch nur UnixDomainSockets empfehlen. Ebenso sind auch 
message queues möglich (habe ich beruflich schon einmal verwendet). Ganz 
wichtig ist bei dir aber auch die Frage, in welcher Programmiersprache 
möchtest du das machen? Da gibt es pro Sprache auch gewisse Hindernisse 
oder Probleme.

von Stefan W. (bier16v)


Lesenswert?

Ich werde am Raspberry alles in C programmieren, wie oben erwähnt.

Zu Beginn werde ich alles lokal mit MessageQueues machen, da gibt es 
bereits eine Priorisierung. Sobald das alles gut läuft, wird das ganze 
um eine Socket-Schnittstelle erweitert, damit das ganze auch von anderen 
Rechnern im Netz bedient werden kann (die Fernsteuerung dann in .Net 
oder so programmiert, sind nur Win-Rechner, oder Java, oder ...)

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.