Abfragen von IP-Symcon-Variablen im eigenen Delphi-Programm?

Ich möchte gern die Variablen, die IP-Symcon liefert, in meinem eigenen Delphi Programm verwenden. Der Designer tut ja praktisch nichts anderes. Wie komme ich an die Variablen ran?

Gruß Schubi

Ich bekomme mit diesem Script die Daten, die Variablen die geloggt werden sollen triggern das Script.

<?
/*
*******************************
IP-SYMCON Event Scripting
*******************************
*/
//File: LogVar.ips.php
$separator = "	"; // separate fiels by TAB - good for Excel ;-)
if ($IPS_SENDER== "Variable")
{
switch( IPS_GetVariableType($IPS_VARIABLE) )
{


case 'Float' : $value = round(GetValueFloat($IPS_VARIABLE),2);
// change '.' to ',' - good for german Excel ;-)
$value = str_replace( ".", ".", $value );   // hier Komma weg, da fuer Punkt

break;

case 'Boolean': $value = GetValueBoolean($IPS_VARIABLE) ? "1" : "0" ;
break;

case 'Integer': $value = GetValueInteger($IPS_VARIABLE);
break;

case 'String' : $value = GetValueString($IPS_VARIABLE);
break;

default : $value = 'unknown';
break;
}
$handle = fopen("logs_var/" .$IPS_VARIABLE. ".txt", "a");
fwrite( $handle, date("d.m.y").
$separator.
date("H:i:s").
$separator.
$IPS_VARIABLE.
$separator.
$value.
$separator.
IPS_GetVariableType($IPS_VARIABLE).
"
");
fclose($handle);
}
?>


Hallo Helmut,
mit PHP ist das ja auch kein Problem, in Delphi kann ich ja z.Bsp auch Umgebungsvariablen von Windows abfragen, aber ich komme eben nicht an die IPS-Variablen ran.:confused:
Progge auch nur gelegentlich, vielleicht ist es ja ganz einfach. Hoffe dass mir die Entwickler da weiterhelfen können.

Gruß Schubi

Normalerweise kommt man nicht so ohne Weiteres an die Variablen einer anderen Anwendung heran, es sei denn sie wurden vorher explizit zu Verfügung gestellt.

Eine Applikation wird vom Betriebssystem in einen Speicherbereich geladen und dieser Bereich im Speicher auch nur für diese Applikation reserviert (Container). Wenn du nun dei Eigenes Programm schreibst und startest bekommt deine Applikation einen eigenen Container. Sofern es nicht eine definierte Schnittstelle gibt können diese beiden Container nicht miteinander komunizieren. Diese Kommunikation musst du dir wie einen Client/Server Vorgang vorstellen. Dein Programm fordert etwas an und IPS läuft los und holt es. Ich denke nicht, dass soeine Schnittstelle implementiert oder geplant ist.

Man könnte jetzt mit Pointern und anderen Tricks reverse engeneering betreiben. Aber auch das versucht das Betriebssystem zu vermeiden und löst eine Zugriffsverletzung aus. wenn du ganz doll Pech hast gibts den allseits beliebten bluescreen, aber das ist noch von ein paar anderen Faktoren abhängig zumal es noch verschiedene Stufen der Sicherheit gibt. Hacker/Cracker arbeiten so.

Dein vergleich hinkt auch etwas. Windows ist im Gegensatz zu IPS ein Betriebssystem. Es hat massig Schnittstellen und ein eigenes Progammier Interface (API).

Du könntest ein Modul für IPS schreiben. Paresy wird dir bestimmt das SDK zu verfügung stellen, wenn du ihn fragst. Allerdings musst du dann die kommunikation anders herum stricken… (die Container-Geschichte von eben) IPS fordert, und dein Modul läuft los und holt die Daten… Rein Bildlich gesprochen.

Toni

Hmm… leider bietet IP-Symcon noch keine COM Schnittstelle. (Nicht der Serial Port… sondern das Windows COM).

Ich könnte dir meine Klasse für das Designer Interface zukommen lassen… Damit wäre dein Programm auch übers Netzwerk betreibbar :slight_smile:
Schick mir am besten eine PM mit deiner Mail Adresse.

Grüße, paresy

Ich werd verrückt, so einen Support habe ich ja überhaupt noch nicht gesehen. :slight_smile:
Da können sich viele Softwarehersteller mal eine Scheibe abschneiden.

Ich bau mir jetzt einen Link auf IP-Symcon in meine Email-Signatur.:wink:

Vielen Dank für die schnelle Hilfe, auch an alle Forenmitglieder.

Einen schönen Abend

Schubi

@Schubi
ich glaube du hattest das nicht erkannt, was ich gemeint habe. Das Script in Ipsymcon einbauen, mit den Variablen (das können alle Typen von Variablen sein auch logische sprich Boolean sein) das Script triggern. Das Script erzeugt dann Textfiles in dem die Zeit der Änderung und der Zustand der Variable stehen.
Ich lese die Logfiles, das sind ja Textfiles, von dem entsprechenden Ordner mit meinem Programm ein. Das geht mit bestimmt allen Programmiersprachen, meines war Purebasic, siehe mein Beispiel, das ich mal gepostet habe.

Ich wollte damit aufzeigen wie einfach das ist, Daten aus Ipsymcon mit eigenen Programmen zu verarbeiten.
MfG
Helmut

Hallo Helmut, ich habe dein Programm mal ausprobiert. Mit Delphi bekommst Du natürlich diese Dateigrösse (20kb) nur in nonVCL, d.h. ohne Verwendung von Komponenten zur Designzeit, hin.

Eine Möglichkeit ist es schon, die Werte erst in Textdateien zu schreiben und auszulesen, ich hätte es dann aber für mich mit MySql gemacht. Kann man mit PureBasic eigentlich auf eine MySql-Datenbank zugreifen?

Ich sitze gerade daran, die Werte als Desktophintergrund oder Screensaver darzustellen, leider bin ich ab Samstag für eine Woche auf Tour und komm dann nicht weiter. Aber ich denke bis Ende Jahr habe ich es trotzdem fertig und kann es dem Forum vorstellen.

Eine gute Nacht

Schubi