Shop-Wechsel

Der Warenkorb wird nicht übernommen.

Zum Firmenkunden / Bildungseinrichtungs Shop

Netzwerkkomponenten

Ports des IPIO88 per Script schalten (C#)

Beiträge zu diesem Thema: 4

ELV Bausatz IP-I/O-Interface IPIO 88

Artikel-Nr.: 076086

zum Produkt
Ports des IPIO88 per Script schalten (C#)
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
18.07.2012, 11:22
Hi!

Wie auch im FAQ zu lesen, gibt es Probleme das IPIO88 via Script über Telnet zu steuern, was ich auch erst selber erfahren musste, bevor ich das FAQ las.

Abhilfe kann die Steuerung über den HTML Quellcode des Boards leisten.
Ich kann jeden In/Out Port auslesen und die Ausgange setzen.
Dazu geht man folgendermaßen vor:

Im Quelltext des HTML Dokument gibt es z.B. die Zeile:


Input auslesen:

<input name="in1" size="1" disabled="disabled" type="checkbox"> </td>

Dies ist der Input 1, welcher momentan auf "0" liegt (checkbox = unchecked).

Wenn dieser Input aktiv ist, sieht der Quellcode folgendermaßen aus:

<input name="in1" checked="checked" size="1" disabled="disabled" type="checkbox"> </td>

Man kann sehen, dass der Eintrag checked="checked" hinzu kommt.

So ist man in der Lage alle Inputs des IPIO88 auszulesen und weiter zu verarbeiten.



Output setzen:

Den Output zu setzen ist noch einfacher. Einfach in der URL die zu setzenden Ausgänge angeben (zur Prüfung kann dann wieder der Quellcode ausgelesen werden ob der Port auch gesetzt wurde).

Beispiel:
http://IPAdresse o. Name/ipio.cgi?pg=main&out1=on&out2=on&out3=on&out4=on&out5=on&out6=on&out7=on&out8=on&end=main

=> Es werden alle Ausgänge auf "High" gesetzt.

Beispiel2:
http://IPAdresse o. Name/ipio.cgi?pg=main&out1=on&out2=on&out3=on&out5=on&out6=on&out7=on&out8=on&end=main

=> Alle bis auf Ausgang 4 werden gesetzt.



Das ganze kann z.B. in C# mit "Regex.Match" aus dem Quelltext ausgelesen/gefunden werden.
Dazu erstellt man im Projekt ein "Webbrowser" und liest nach dem aufbau der Seite den Quelltext aus und sucht mit "Regex.Match" nach den Inputs bzw. Outputs.

Code Snippet zu auslesen des Ausgangs:

foreach (string item in lines)
{
Match match = Regex.Match(item, @".*checked.*name=out(\d).*", RegexOptions.IgnoreCase);

if (match.Success)
{
string ID = match.Groups.Value;
a_ID_Output.Add(ID);
}
}

=> Es werden alle gesetzten Ausgänge in das Array a_ID_Output geschrieben.




Code Snippet zu auslesen der Eingänge:

foreach (string item in lines)
{
Match match = Regex.Match(item, @".*checked.*name=in(\d).*", RegexOptions.IgnoreCase);

if (match.Success)
{
string ID = match.Groups.Value;
a_ID_Input.Add(ID);
}
}

=> Es werden alle gesetzten Eingänge in das Array a_ID_Input geschrieben.



Mit diesen Tricks lässt sich wunderbar und ohne Fehler die einzelnen Ports auslesen und setzen.




Ich hoff die Info ist hilfreich und wird von ELV ins FAQ von IPIO88 kopiert.


Gruß
Thomas D.

Aw: Ports des IPIO88 per Script schalten (C#)
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
20.07.2012, 15:35
Hallo Thomas D.,

vielen Dank für Ihre ausführliche Rückmeldung zum IPIO88. Wir werden die Informationen gerne an den Entwickler zwecks Prüfung weiterleiten und ggf. einen FAQ verfassen oder eine Änderung in der Bedienungsanleitung vornehmen.

Mit freundlichen Grüßen euer Team der technischen Kundenbetreuung
Aw: Ports des IPIO88 per Script schalten (C#)
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
23.07.2012, 16:20
Hi!

Falls Ihr noch weitere Info benötigt, schreibt einfach.
Bisher habe ich keine Probleme mit dem Auslesen und schalten der Posts.

EDIT meines ersten Posts:

Bei den URLs wurde immer ein kleiner Teil abgeschnitten(beim Posten des Beitrages).
Ich teile jetzt die ganze URL in 3 zeilen auf (müssen natürlich als ganzes z.B. im IE eingetragen werden):

http://IP oder Name des IPIO88/ipio.cgi?
pg=main&out1=on&out2=on&out3=on&out4=on&out5=on&
out6=on&out7=on&out8=on&end=main

Diese URL schlatet alle Ausgang auf "High"

Ich würde allen Usern mit dem IPIO88 empfehlen (wie auch schon in den FAQ von ELV beschrieben) in negativer Logik zu arbeiten. Bei mir ist das "High" setzen eines Ausganges "off".
Dies erleichtert auch u.a. das ersetzen eines IPIO88 Boards, indem man es einfach in den Standardeinstellungen belassen kann (müssen nur, falls nicht gewollt, die Zuordnungen raus genommen werden).
Um den Bootvorgang des IPIO88 Boards sicher umgehen zu können, habe ich noch eine extra PCB "gelayoutet" und bestückt, welche eine gewisse "sicherheitszeit" abwartet und dann erst die einzelnen Ausgänge, falls gesetzt, schaltet. So umgehe ich falsches schalten bei einem Stromausfall (sihe Bild, rechte PCB).



Ich kann, anhand eines Potis eine Zeit zwischen 2 - 20 sek. einstellen, danach wird ein "Inhibit Pin" auf GND gezogen (auf der rechten Platine sitzt zusätzlich noch ein U/U Wandler und ein MUX um die Ausgänge des IPIO88 binär zu betrachten (Output 0 bis 2 = 0 bis 7 )). So habe ich nur 3 Ausgänge des IPIO88 Board verbraucht und kann 8 Geräte steuern (über ein paar weitere Umwege RJ45 Buchsen ).

Viel Spaß!

Gruß
Thomas D.
Aw: Ports des IPIO88 per Script schalten (C#)
Antwort als hilfreich markieren
0Positive Markierungen
Antwort als nicht hilfreich markieren
0Negative Markierungen
Melden Sie diesen Beitrag
19.12.2015, 12:29
Hallo Thomas D.,

Wie ich die Ausgänge schalten kann habe ich gelseen und es Funktioniert auch so weit.

Ich habe mit das IPIO88 Modul gekauft um es mit meiner Surveillance Station zu kommeln.

Ich möchte an einenm Input einen Schlüsselschalter dran haben der dann meine Kameras Scharf/Unscharf schaltet.

Ich muss aber die abfrage für die Surveillance Station etwas umständlich machen weil ich kein Eingang dierekt abfragen muss.
Jetzt meine frage kann ich über ein PHP Script die eingänge abfragen und wenn ein eingang aktiv ist eine URL ansteuern.

Vielen dank vorab