ich habe mal eine Klasse für C# geschrieben, über die mit IPSymcon über die Designer-Schnittstelle kommuniziert werden kann. Zum Ausprobieren und selber Anwendungen entwickeln reicht die kostenlose Visual C# 2005 Express Edition. Die gibt es zum Herunterladen bei Microsoft. Ich hänge die komplette Projektmappe als rar-File an. Muss dann nur in C# geöffnet und kompiliert werden. Zusätzlich zur Kommunikationsklasse ist eine Konsolenanwendung dabei, über die sich das ganze austesten lässt. Einfach die Befehel an IPSymcon in der Konsole eingeben, die Antwort erscheint dann auch dort. Sonst erforderliche Infos stehen in Kopf der Kommunikations-Klasse.
Ich plane eine Heizungssteuerung in C# zu schreiben, die dann auch auf Windows CE laufen soll. Das ganze wird wahrscheinlich eine Client/Server-Lösung. Das heißt auf dem Rechner auf dem auch IPSymcon läuft läuft dann meine Serveranwendung. Zusätzliche Clients (Windows, CE, theoretisch auch Linux) greifen dann über das Netzwerk auf den Server zu.
Ich werde hier dann mal meine Entwicklungen bereitstellen, kann aber noch dauern.
ich habe obigen C+±Code mal nach VB.Net konvertiert und versuche nun, mich mit IPS zu verbinden. Allerdings klappt das nicht, da bei IPS in den Messages nur auftaucht: „Socket is unsynchron! Synchronizing…“
Mein Binaryreader empfängt dann nichts von IPS, das Senden der Daten klappt. Bei „Verboose“ taucht auch die Meldung „Client connected“ auf, also denke ich mal, das Verbinden an sich klappt ja.
Kann mir jemand weiterhelfen? Paresy? :o
Wenn das Verbinden klappt, werde ich den Code auch veröffentlichen, so dass jeder was davon hat.
Das ist schon mal gut zu wissen, Danke!
Ich habe nun mal per Debugger geschaut. Die Meldung seitens IPS kommt zu dem u.g. Zeitpunkt, wenn ich die „1“ an IPS schicke.
schau mal mit Wireshark, was für Daten über die IP-Verbindung gehen. Für |P muss es 7c 50 01 00 00 00 sein, dann kommt | N mit 7c 4e 01 00 00 00 und so weiter.
C# macht aus der „1“ automatisch ein 01 00 00 00. Unter umständen schickt VB nur ein 01…
Wenn es gar nicht klappt, schick mir mal eine PN. Dann können wir über messi Kontakt aufnehmen. Habe die Schnittstelle inzwischen erheblich weiterentwickelt…
Joachim kann dir dann ja auch gerne das Original in Pascal/Delphi zukommen lassen.
Falls es noch spezielle Fragen gibt, sagt hier oder per PM bescheid.
Zu dem Fehler:
Bevor der Fehler in IPS überhaupt auftaucht, muss IPS überhaupt 26 Zeichen empfangen haben. Das ist die Große des Header. Der muss auch 26 Zeichen lang sein.
C# macht aus der „1“ automatisch ein 01 00 00 00. Unter umständen schickt VB nur ein 01…
Die Zahl 1 wird von Compiler direkt als 1 Byte abgespeichert. Erstell einfach eine Integervariable und schiebe sie dann per Write raus. Dann sind es nämlich 4 Bytes. Typecast müsste auch ein Lösung sein.
Danke für eure Antworten. Hab eben mal probiert, aber bin noch nicht weitergekommen. Parallel hab ich eben mal mit der COM-Klasse getestet. Mit der klappt alles, was ich brauche (Variablen lesen/schreiben, Scripte starten). Von daher bin ich nun erstmal bedient.
Ich werde es aber mal in ner ruhigen Minute trotzdem weiter probieren und mich dann hier nochmal melden.
Da bin ich wieder
Ich hab es nun hinbekommen. Problem war, dass der BinaryWriter immer nur 1 Byte in den Stream schiebt, IPS bei Integer aber 4 Byte erwartet. Wenn ich direkt mit „stream.write“ und einem 4-Byte-Array für Integer arbeite, klappt es. Mit dem folgenden Code funktioniert die Anmeldung nun, und IPS antwortet korrekt mit dem PasswortHash.
Hier der Codeschnippsel:
…
tx = tx.ToUpper
Dim buffer() As Byte
Dim buffernum(3) As Byte
buffernum(0) = 1
Nun gibt´s (wen wundert´s… ) das nächste Problem:
bei der Berechnung des XorStrings wird ja der in eine Integer umgewandelte Char-Variable mit dem von IPS gesendeten Key exponiert. Als Ergebnis erhalte ich eine Zahl mit …E127, was den Wertebereich einer Integer übersteigt -> Overflow. :mad:
Mach ich was falsch oder kommen da tatsächlich so große Zahlen raus?
Als Double deklariert funktioniert´s, allerdings geht dann beim anschließenden Typecast nach Char was schief, weshalb der Hash von IPS abgelehnt wird.
habe gerade versucht deine klasse auszuführen. leider kommt bei mir immer die fehlermeldung socket exception wurde nicht behandelt. Kann mir jemand da weiterhelfen???