RS232 ansprechen (mal was anderes ;-)

Fragen zu Raspberry, FritzBox, Microcontroller, UART, etc...
Antworten
roemi
Site Admin
Beiträge: 425
Registriert: So 11. Dez 2005, 20:05
Wohnort: Hanau / Germany
Kontaktdaten:

RS232 ansprechen (mal was anderes ;-)

Beitrag von roemi » Di 21. Aug 2007, 20:27

Ich verwende zum steuern der Modellbahn von junior unter anderem ein Programm Namens "dtcltiny".

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):
void 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());
}
und
void CommandPort::reset()
{
if (socketisopen)
::write(sockDescr, "RESET 0 SERVER\n", sizeof("RESET 0 SERVER\n"));
}
und
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;
}
Das sagt erstmal nicht viel aus.

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)
das gleiche gilt auch für den Fahrbefehl der so in einer Textarea steht
INIT 1 GL 2 P
SET 1 GL 2 0 100 180 0 0 0 0 0
GO
und mit

Code: Alles auswählen

  IF MySock.Status = Net.Connected THEN 
    WRITE #MySock, TextArea2.Text, Len(TextArea2.Text)
  END IF
abgeschickt wird.

Das klappt alles.

Wenn ich aber
zb.
INIT 1 POWER
bzw.
SET 1 POWER ON
einsetze funzt von Gambas aus nichts.

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.
Römi (seit 1989 bekennender Bergradfahrer und professioneller Biertrinker)
http://www.roemi.de

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste