Autor |
Beitrag |
madstudent
Beiträge: 35
Win XP, Win Vista
Delphi 2009 Prof.
|
Verfasst: 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 Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Do 13.11.2014 um 23:23
|
|
Narses
Beiträge: 10181
Erhaltene Danke: 1254
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: 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
Beiträge: 35
Win XP, Win Vista
Delphi 2009 Prof.
|
Verfasst: 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
Beiträge: 10181
Erhaltene Danke: 1254
W10ent
TP3 .. D7pro .. D10.2CE
|
Verfasst: Do 13.11.14 23:02
"Ich habe zwei Autos, wenn das eine unterwegs ist, soll man das andere nicht nutzen können."
_________________ There are 10 types of people - those who understand binary and those who don´t.
|
|
jaenicke
Beiträge: 19277
Erhaltene Danke: 1741
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Fr 14.11.14 00:15
Was ist denn der Hintergrund? Geht es um ein bestimmtes Programm, das nicht parallel genutzt werden soll?
|
|
jfheins
Beiträge: 918
Erhaltene Danke: 158
Win 10
VS 2013, VS2015
|
Verfasst: 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
Beiträge: 76
|
Verfasst: 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
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: 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
Beiträge: 6388
Erhaltene Danke: 146
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Fr 14.11.14 09:02
madstudent hat folgendes geschrieben : | Wenn an dem einen PC gearbeitet wird, soll der andere blockiert werden. |
Narses hat folgendes geschrieben : | Schalte nur einen PC ein. |
madstudent hat folgendes geschrieben : | 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
Beiträge: 35
Win XP, Win Vista
Delphi 2009 Prof.
|
Verfasst: 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
Beiträge: 1581
Erhaltene Danke: 279
Delphi 10 Seattle Prof.
|
Verfasst: 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
Beiträge: 35
Win XP, Win Vista
Delphi 2009 Prof.
|
Verfasst: 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
Beiträge: 792
Erhaltene Danke: 49
Windows 7 / 10; CentOS 7; LinuxMint
Delphi 7-XE10.1, VS 2015
|
Verfasst: Fr 14.11.14 20:48
madstudent hat folgendes geschrieben : | 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
Beiträge: 101
Erhaltene Danke: 12
WIN XP, WIN 7, WIN 10
Delphi 6 Prof, Delphi 2005, FPC
|
Verfasst: 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
Beiträge: 35
Win XP, Win Vista
Delphi 2009 Prof.
|
Verfasst: Do 20.11.14 21:10
|
|