Ich habe 2 Relaiskarten, ich würdesie gerne direkt aus PureBasic heraus ansprechen.
Mit folgendem Code aus dem Forum habe ich auch schon erste Erfolge erzielen können, jedoch keine willkürlichen.
Code: Alles auswählen
If OpenSerialPort(0, "COM1", 300, #PB_SerialPort_NoParity, 8, 1, #PB_SerialPort_NoHandshake, 1024, 1024)
Debug "Success"
Else
Debug "Failed"
EndIf
i=0
Dim ucMsg.b(4)
ucMsg(0) = 27 ; ESC, Anfang der Nachricht
ucMsg(1) = 1 ; ID-Adresse
ucMsg(2) = Asc("@") ; Kommando 64
ucMsg(3) = 1 ; hier schalten sie verschiedene Relais an oder aus
ucMsg(4) = ucMsg(0) ! ucMsg(1) ! ucMsg(2) ! ucMsg(3)
For i= 0 To 4
Debug ucMsG(i)
Next i
Anbei das Kommunikationsprotokoll, werde leider nicht ganz schlau daraus.
Das Kommunikationsprotokoll
Wer mit eigener Software die Relais-Interfaces ansteuern will, muß sich mit dem Ansteuerprotokoll beschäftigen. Die Relaiskarte empfängt Daten der seriellen Schnittstelle mit 9600 Baud, 8 Bit, No Parity, 2 Stoppbits. Es wird keine Rückantwort benötigt. Bis zu 16 Karten hängen an der TXD-Leitung des PC.
Jede Steuernachricht vom PC besteht aus genau 5 Bytes:
1. 27 ESC, Anfang der Nachricht
2. ID-Adresse 1 bis 16 oder 255 als Generaladresse
3. Kommando 64 ... 74, (siehe Tabelle 1)
4. Parameter 1 z.B. Bitmuster oder leerer Parameter 0
5. Parameter 2 z.B. leerer Parameter 0
Befehl Kommandobyte Parameter 1 Parameter 2
Direktausgabe 64 Bitmuster 0
EEPROM programmieren 66 EE-Adresse Byte
Programmstart Endlos-Durchlauf 68 0 0
Programmstop 70 0 0
ID-Adresse zuweisen 72 ID-Adresse 0
Programmstart Einfach-Durchlauf 74 0 0
Das Relais-Interface kennt zwei grundsätzliche Betriebsarten:
1. Die direkte Ausgabe von Schaltzuständen über das Kommando 64.
2. Die Ausgabe von intern im EEPROM gespeicherten Bitmustern. Die Daten müssen zuvor mit dem Kommando 66 übertragen werden, und das Programm muß mit dem Kommando 68 für endlose Wiederholungen oder mit dem Kommando 74 für einmaligen Ablauf gestartet werden.
Vielen Dank für eure Mühe im voraus