Lars W.: TCp-socket und Serielle Schnittstelle

Beitrag lesen

Hallo allerseits,

nach diversen Versuchen und mittlerweile unleserlichem Code muss ich mich mal an euch wenden.

Ausgangssituation: Ich habe an einem Linuxrechner per serial-Adapter einen Mikrocontroller angeschlossen. Der empfängt und sendet Daten welche ihm vorher ein oder mehrere TCP-clients gesendet haben.

Den Socket-Aufbau als solchen multithreaded habe ich, ich habe aber Probleme bei der Verwendung der seriellen Schnittstelle.
Ich verwende das CPAN:Serialport. "Normales" senden und lesen mit lookfor gehen.

ABER, nun kommt der Knackpunkt, der TCP-Client sendet in einem eigenen Thread - ich lasse ihn da auch auf Serial schreiben. Nun habe ich einen unabhängigen 2. (eigentlich 3. [main + 1xtcp + 1xserial]) thread in dem ich von serial einlese (da lookfor m.e. blockiert) und ausserdem sollen die tcp clients noch andere daten senden können, die nichts mit der serial zu tun haben.

ich habe es schon über zwei variablen probiert, die sich gegenseitig bei read und write verriegeln, aber das führt bei einem blockierten lookfor nicht so richtig weit ...

weiterhin sollen alle clients immer alle infos aus der seriellen abfrage erhalten, während andere abgefragte daten in dem TCP-Thread 'privat' bleiben sollen. Ich habe es auch noch nicht ein client-referenziertes Array oder Hash zu erstellen in dem die Daten so stehen das ich per for/foreach drankomme.

in .Net würde ich mir ne Klasse Clients erstellen und ne List (of clients) und gut ... wie geht das in Perl? Oder denke ich da etwas zu kompliziert?

Any ideas für ein sauberes programm design?

Vielen Dank bis hierher.

Mit freundlichen Grüßen
.lw