ich google seit Stunden durch die Gegend und werde leider nicht fündig… Ich hatte noch eine Relaiskarte von Conrad hier rumfliegen (http://www.conrad.de/ce/de/product/197720/8FACH-RELAISKARTE-24V7A) und möchte mit dieser eine Kreuzschiene ansteuern, die lediglich die Abhöre im Flur umschalten soll. Hohe Latenzen dieser Karte sind mir also egal!!
mAirList hat bis jetzt die Karte über den Com1 Port erfolgreich erkannt, ich schaffe es jedoch nicht über die Funktion “Senden an serielle Schnittstelle” ein Umschalten auszulösen. Hat jemand einen Tipp für mich?
danke für die schnelle Rückmeldung. Die Karte wird im mitgelieferten Steuerprogramm über Kommandos, wie “CMD:3, Adr:0, Data-byte:0, CRC:3” gesteuert. Ebenso wird der Binäre Wert angezeigt.
Mairlist schluckt das Kommando zwar, gibt aber in der Status-Leiste aus, dass der Port geschlossen ist.
Aha, eine Fehlermeldung im Systemprotokoll! Sag das doch gleich!
Der Port muss vorher geöffnet werden - entweder durch ein kurzes Script, oder - am einfachsten - dadurch, eine Fernsteuerung vom Typ “serielle Schnittstelle” hinzuzufügen.
In der Fernsteuerung habe ich die Serielle Schnittstelle eingetragen. Daran dürfte es eigentlich nicht liegen. Laut Handbuch sind auch die Standardeinstellungen zu Baudrate und Co richtig.
Akut um die 2.2 weil die seit Jahren auf dem Rechner durchläuft. In den neueren Versionen (4.0 habe ich noch nicht getestet) funktioniert es jedoch auch nicht.
Wenn ich das richtig verstehe, sendet mAirList ja auch nur den BinärCode an die Karte, welcher dort dann in Schaltbefehlen ausgeführt wird, oder?
Das Problem scheint ja offenbar zu sein, dass der Port nicht geöffnet wurde. Normalerweise sollte das die Fernsteuerung übernehmen - warum das hier nicht klappt, keine Ahnung.
Probier mal, nach dem Programmstart folgendes Script (speichern als portopen.mls oder so) auszuführen:
begin
ComPort('COM1').Open;
end.
(Portnummer entsprechend anpassen.)
Vermutlich funktioniert das nur unter v3.1 und v4. Für die alte v2.2 gibt es ohnehin keinen Support mehr.
Sooo, ich habe es gerade mal in der 3.1 versucht und als Meldung kommt “Type mismatch”. Die Karte scheint ja demnach wohl wirklich nicht ansteuerbar zu sein…
Danke
Der Port scheint in der Tat geöffnet zu sein, jedenfalls gibt mAirList keine Fehler-Meldung mehr aus, sobald ich einen Befehl sende. Danke schon einmal hierfür (:
Jetzt stellt sich mir halt wirklich nur noch die Frage, was ich falsch mache… ???
Wenn ich mir Kapitel 6 des Handbuchs so anschaue, musst du Binärpakete zusammenbauen, die jeweils aus vier Bytes bestehen: Kommando, Kartenadresse, Daten, Prüfsumme. Letzere ist das XOR der ersten drei Bytes.
In der Aktion “Senden an serielle Schnittstelle” kannst du Binärdaten in Hex angeben, indem du ein $-Zeichen davorschreibst, zum Beispiel so:
$12345678
Das würde dann die vier Bytes 0x12, 0x34, 0x56 und 0x78 rausschicken.
Jetzt musst du nur noch wissen, welchen Befehl du genau schicken willst (Relais schalten?), und dann das Datenpaket zusammenbauen.
Sorry, Torben,
ich glaube ich stehe gerade etwas auf dem Schlauch. Ich habe ein wenig mit den binären Angaben rumprobiert und es tut sich gar nichts.
Angenommen, ich möchte jetzt Relais 1 Schalten, dann hat dieses laut Kapitel 6 “Bit 0” und Relais 2 hätte “Bit 1”. Die Karte hat Adresse 1 und ich möchte über Toggle schalten. Wenn ich jetzt nur acht Stellen zur Verüfung habe, aber bereits die Schaltfunktion “toggle” (Wert 8) binär 1000 ergibt, fehlen mir doch Stellen.
Ich weiß, irgendwo ist bestimmt ein Denkfehler.
Der Befehl “Toggle” hat die Nummer 8, das ist binär 00000100, und hex 08.
Adresse 1 ist binär 00000001 und hex 01.
Relais 1 ist das “Bit 0”, also das “ganz rechte” der acht Bits, also ebenfalls 00000001 bzw. hex 01.
Die ersten drei Hex-Werte lauten also 080101.
Nun noch die Prüfsumme. Für die sollst du das XOR der drei anderen Zahlen bilden. Das bekommt man am einfachsten, indem man die drei Binärwerte untereinanderschreibt und dann zählt, wie viele Einsen in jeder Spalte stehen. Ist es eine ungerade Anzahl, ist das entsprechende XOR-Bit 1, ist es eine gerade Anzahl Einsen, dann ist das XOR-Bit 0. Daraus ergibt sich dann die Prüfsumme.
00000100
00000001
00000001
00000100 <= XOR-Prüfsumme
Die Prüfsumme lautet also 00000100 bzw. hex 04. Daraus ergibt sich der Gesamt-String:
$08010104
So richtig viel Erfahrung hast du mit dem Informatik-Zeug nicht, oder?
Ja, jetzt habe ich den Denkfehler gefunden Danke!
Ne, mit Informatik habe ich als Mediengestalter B/T leider wirklich nicht viel zu tun^^ Das einzige, was ich viel in der Schule programmiert habe, war Simatic7 von Siemens, sprich Automatisierungsprozesse…
Ich habe das Ganze jetzt einmal so ausprobiert, auch mit richtiger Prüfsumme (nämlich hex8, du hattest aus Versehen binär 100 statt 1000 geschrieben), allerdings schaltet dort gar nichts.
Auch die Initialisierung über $01010101 bzw $01010001 erzeugt keine Veränderung, wenn ich den Steuerbefehl für Relais 1 im Anschluss sende.
Der Port dürfte eigentlich geöffnet sein, da beim Öffnen des Datei-Tag eine Meldung kommt, dass dieser bereits durch eine Anwendung (mAirList) bereits geblockt ist.
Ist da eine Software dabei, mit der man die Relais steuern kann?
Es gibt ein Programm namens “Portmon”, mit dem sich die Daten der Schnittstelle mitscheiden und ansehen lassen. Damit könntest du nachschauen, was die mitgelieferte Software schickt - und den Befehl dann einfach kopieren.
Das Programm ist ja klasse, hätte nicht gedacht, dass so viele Daten losgesandt werden, wür einen simplen Befehl
Je nachdem, welche Relais ich schalte, gibt mir das Programm zwei Hexa-Zeilen an. Wenn ich eine oder beide in mairlist angebe, wird, jedoch eine andere Ausgabe erzeugt…
Hier die Ausgabe der mitgelieferten Software, wenn ich alle acht Relais gleichzeitig schalte:
Die Frage ist halt wirklich, ob der Aufwand sich lohnt… Wenn man sie angebunden bekommt, wäre sie natürlich schon recht interessant, aufgrund des verhältnismäßig geringen Preises.