Dieses sendet Befehle an ein Progi namens "SRCP bzw srcpd". Hier wird die Verbindung zur eigentlichen Schnittstelle realisiert und die Befehle umgesetzt.
Ausschnitt hieraus als Beispiel (Ansprache Schnittstelle):
undvoid CommandPort::set(QString args)
{
QString *command = new QString;
command->sprintf("SET %d ",iBus);
command->append(args);
command->append("\n");
if (socketisopen)
::write(sockDescr, *command, command->length());
}
undvoid CommandPort::reset()
{
if (socketisopen)
::write(sockDescr, "RESET 0 SERVER\n", sizeof("RESET 0 SERVER\n"));
}
Das sagt erstmal nicht viel aus.QString *CommandPort::init( QString args )
{
QString *command = new QString;
command->sprintf("INIT %d ",iBus);
command->append(args);
command->append("\n");
if (socketisopen)
::write(sockDescr, *command, command->length());
QString *message = readLine(); // get the reply
return message;
}
Aber auf Gambas umgesetzt sieht es so aus
Der Init- Befehl (der funktioniert auch in gambas)
Code: Alles auswählen
v_text = "SET PROTOCOL SRCP 0.8.2\n"
v_text = v_text & "SET CONNECTIONMODE SRCP COMMAND\n"
v_text = v_text & "GO"
send_order(v_text)
WAIT 1
v_text = "INIT GL 1\n"
v_text = v_text & "GO"
send_order(v_text)
und mitINIT 1 GL 2 P
SET 1 GL 2 0 100 180 0 0 0 0 0
GO
Code: Alles auswählen
IF MySock.Status = Net.Connected THEN
WRITE #MySock, TextArea2.Text, Len(TextArea2.Text)
END IF
Das klappt alles.
Wenn ich aber
zb.
bzw.INIT 1 POWER
einsetze funzt von Gambas aus nichts.SET 1 POWER ON
Und ich verstehe es nicht! Warum funktioniert in Gambas das eine und das andere nicht. Beides funktioniert aber problemlos von andere Programmen aus.
Hat jemand meine Ausführungen verstanden?
Braucht Ihr mehr Info's?
Das Einfahrprogramm funktioniert z.B. tadellos solange ich die Zentrale per Hand ein- und ausschalten kann.