Autor Beitrag
madstudent
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

Win XP, Win Vista
Delphi 2009 Prof.
BeitragVerfasst: Do 13.11.14 16:05 
Hallo,

ich habe folgendes Problem. Ich habe zwei PCs die via LAN verbunden sind. Wenn an dem einen PC gearbeitet wird, soll der andere blockiert werden. Hat jemand eine Idee wie ich soetwas lösen kann?


Moderiert von user profile iconNarses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Do 13.11.2014 um 23:23
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 13.11.14 21:47 
Moin!

Schalte nur einen PC ein. :|

cu
Narses

_________________
There are 10 types of people - those who understand binary and those who don´t.
madstudent Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

Win XP, Win Vista
Delphi 2009 Prof.
BeitragVerfasst: Do 13.11.14 22:03 
Das ist leider keine Option. Es ist zwingend notwendig, dass beide PCs laufen. Aber danke für deinen Hilfeversuch.
Narses
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Administrator
Beiträge: 10181
Erhaltene Danke: 1254

W10ent
TP3 .. D7pro .. D10.2CE
BeitragVerfasst: Do 13.11.14 23:02 
"Ich habe zwei Autos, wenn das eine unterwegs ist, soll man das andere nicht nutzen können." :gruebel: :nixweiss:

_________________
There are 10 types of people - those who understand binary and those who don´t.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19272
Erhaltene Danke: 1740

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Fr 14.11.14 00:15 
Was ist denn der Hintergrund? Geht es um ein bestimmtes Programm, das nicht parallel genutzt werden soll?
jfheins
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 918
Erhaltene Danke: 158

Win 10
VS 2013, VS2015
BeitragVerfasst: Fr 14.11.14 00:19 
Du könntest auf beiden PC eine Anwedung starten und jeweils GetLastInputInfo() abrufen.
Sobald sich der Wert verringert, wurde an dem PC etwas gemacht. Dann ein Signal zu dem anderen PC schicken und den sperren.

Ist der Wert wieder über einem bestimmten Schwellwert, ´kann der andere PC wieder aktiviert werden.
LuMa86
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 76



BeitragVerfasst: Fr 14.11.14 00:22 
Schau dir doch mal die UDP Komponenten von Delphi an, oder das schöne Netzwerk Tut von Narses. Dann erfasst du, ob an einem Rechner gearde gearbeitet wird und übermittelst dem anderen eine Nachricht, der meldet sich dann ab oder zeigt eine "Sperrform".
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Fr 14.11.14 08:38 
Ich würde sowas wie einen Token machen. Nur wer das Token "in Besitz" hat, darf arbeiten.

Wenn jemand an PC A arbeiten möchte, guckt A nach, ob er das Token besitzt. Wenn ja, ist alles in Ordnung. Wenn nein, fragt er B nach dem Token. Wenn B grade arbeitet, rückt er das Token nicht raus. Wenn B grade nicht arbeitet, gibt er das Token frei und übergibt es an A. Nun darf A arbeiten. Wenn an A nicht mehr gearbeitet wird, wird das Token freigegeben, aber noch im eigenen Besitz gehalten. Wenn A nun weiter arbeiten möchte, sperrt er das Token wieder. Wenn B arbeiten möchte, übergibt A das Token an B.

Aber mich würde wirklich der Hintergrund der Frage interessieren. Mich dünkt, man kann das auch ganz anders (besser) lösen.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6386
Erhaltene Danke: 146

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Fr 14.11.14 09:02 
user profile iconmadstudent hat folgendes geschrieben Zum zitierten Posting springen:
Wenn an dem einen PC gearbeitet wird, soll der andere blockiert werden.

user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
Schalte nur einen PC ein.

user profile iconmadstudent hat folgendes geschrieben Zum zitierten Posting springen:
Das ist leider keine Option. Es ist zwingend notwendig, dass beide PCs laufen.


Ich denke, dass hier ein paar mehr Infos notwendig sind.
Was heißt "an einem PC wird gearbeitet"? Geht es um bestimmte Anwendungen oder grundsätzliches Arbeiten an dem PC?
Soll das eine Einzellösung werden oder kann das in verschiedenen Installationen vorkommen?
Warum müssen beide PCs laufen, wenn sowieso nur an einem gearbeitet werden kann? Rennt da einer ständig hin und her, um mal hier und mal dort zu arbeiten?

Falls es nur um eine spezielle Anwendung geht:
Einer meiner Vorgänger bei meiner jetzigen Arbeitsstelle hat es sich einfach gemacht. Er lässt von der Anwendung eine Datei erzeugen (fester Speicherort im Netzwerk), die nach Beendigung wieder gelöscht wird. In der Datei steht der Anmeldename und die IP des Rechners drin, der die Anwendung gestartet hat. Solange diese Datei existiert, beendet sich die Anwendung bei einem weiteren Start-Versuch gleich wieder. Dadurch sind Doppel-Aufrufe und Aufrufe von anderen PCs nicht möglich.
madstudent Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

Win XP, Win Vista
Delphi 2009 Prof.
BeitragVerfasst: Fr 14.11.14 09:27 
Okay ich sehe ein, ich habe zu wenig Daten geliefert. :) Also folgendes: Die PCs laufen auf einer Anlage und dienen der Visualisierung und Dateneingabe. Beide Rechner werden synchron gehalten. Der Kunde, anscheinend ein bisschen paranoid, möchte verhindern, dass zeitgleich Eingaben an den PCs gemacht werden. Deshalb möchte er vermutlich den PC sperren lassen. Die PCs sind über einen Hub miteinander und einer SPS verbunden. Es gibt also keinen Server den man als Zentrale nutzen könnte. Es kann durchaus sein, dass die PCs räumlich voneinander getrennt sind (ein PC an der Anlage und der zweite in einem Büro).
Vielen Dank für die Antworten bisher.
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Fr 14.11.14 09:35 
Visualisierung auf 2 Geräte ist ja in der Regel unkritisch.
Bei der Dateneingabe wird es dann interessant. Darf/soll das Programm für die Dateneingabe gleichzeitig auf beiden PCs geöffnet sein und nur die Bedienung gesperrt? Oder darf das Programm nur 1x gestartet sein?
Hast Du Zugriff auf den Quellcode des Programms, oder muss das eine Lösung "von außen" sein?

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
madstudent Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

Win XP, Win Vista
Delphi 2009 Prof.
BeitragVerfasst: Fr 14.11.14 13:53 
Also die HMI läuft die ganze Zeit auf beiden PCs. Das darf auch nicht geändert werden. Zugriff habe ich da schon. Ich hatte auch die Idee das über die Zugriffsrechte zu lösen. Leider geht das nicht so einfach. Eine Lösung "von außen" wäre mir lieber.
Lemmy
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 792
Erhaltene Danke: 49

Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
BeitragVerfasst: Fr 14.11.14 20:48 
user profile iconmadstudent hat folgendes geschrieben Zum zitierten Posting springen:
Die PCs sind über einen Hub miteinander und einer SPS verbunden.


d.h. die können sich gegenseitig anpingen? dann schick doch per TCP einfache Textnachrichten wenn einer der Rechner in den Editmode geht / in verlässt...
icho2099
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 101
Erhaltene Danke: 12

WIN XP, WIN 7, WIN 10
Delphi 6 Prof, Delphi 2005, FPC
BeitragVerfasst: So 16.11.14 12:29 
Wenn du eh mit der SPS "sprichst", dann kannst du ja die SPS als Server betrachten und dort in einer Variablen vermerken wer gerade Daten ändern darf. Deine n Visualisierungen müssen sich dann nur diese Variable holen und danach richten. Vielleicht hilft das.
madstudent Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 35

Win XP, Win Vista
Delphi 2009 Prof.
BeitragVerfasst: Do 20.11.14 21:10 
user profile iconicho2099 hat folgendes geschrieben Zum zitierten Posting springen:
Wenn du eh mit der SPS "sprichst", dann kannst du ja die SPS als Server betrachten und dort in einer Variablen vermerken wer gerade Daten ändern darf. Deine n Visualisierungen müssen sich dann nur diese Variable holen und danach richten. Vielleicht hilft das.


Genauso werde ich das wohl machen. Ich hatte zwar gehofft eine Delphi-Lösung zu implemmentieren, aber letztlich zählt das Ergebnis und der Aufwand. :)