Seite 1 von 1

Fragen zur Spinn-Syntax

Verfasst: Mi 13. Jun 2012, 19:31
von PIC18F2550
1.

Code: Alles auswählen

  sock[3]       : "api_telnet_serial"
Was neues gefunden ---> [3]
Bedeutet das das dieses Codesegmend 3x eingebunden wird und trennt BST dann auch die Variabeln?

2.

Code: Alles auswählen

\sock[0].listen(80, @tcp_webrx1, rxlen, @tcp_webtx1, txlen)
Für was steht "\" ?

Re: Fragen zur Spinn-Syntax

Verfasst: Mi 13. Jun 2012, 21:48
von drohne235
Für was steht "\" ?
Steht für den Austrittspunkt bei einem Abort-Kommando.

Re: Fragen zur Spinn-Syntax

Verfasst: Do 14. Jun 2012, 00:13
von PIC18F2550
So langsam verstehe ich :D

"\" ist ein Merker und bei einem abort springt er über alle zwischenzeitlich Routinen bis zum "\" hinauf.

PUB sub
\sub1
... <----- Wiedereintritt nach Rücksprung

PUB sub1
sub2

PUB sub2
aport ---> Rücksprung

Re: Fragen zur Spinn-Syntax

Verfasst: Do 14. Jun 2012, 01:39
von kuroneko
PIC18F2550 hat geschrieben:

Code: Alles auswählen

  sock[3]       : "api_telnet_serial"
Was neues gefunden ---> [3]
Bedeutet das das dieses Codesegmend 3x eingebunden wird und trennt BST dann auch die Variabeln?
Eingebunden wird es nur einmal aber Du bekommst drei Instanzen des Treibers (sock[0], sock[1], sock[2]). Ist nichts anderes als

Code: Alles auswählen

  sock_1       : "api_telnet_serial"
  sock_2       : "api_telnet_serial"
  sock_3       : "api_telnet_serial"
Letzteres macht sich u.U. nicht so gut da Du Objekte immer mit Namen ansprechen musst, die erste Variante braucht nur den Index, e.g.

Code: Alles auswählen

  sock_1.stop
  sock_2.stop
  sock_3.stop
' vs
  repeat n from 0 to 2
    sock[n].stop

Re: Fragen zur Spinn-Syntax

Verfasst: Do 14. Jun 2012, 08:35
von PIC18F2550
kuroneko hat geschrieben:Eingebunden wird es nur einmal aber Du bekommst drei Instanzen des Treibers (sock[0], sock[1], sock[2]). Ist nichts anderes als

Code:
sock_1 : "api_telnet_serial"
sock_2 : "api_telnet_serial"
sock_3 : "api_telnet_serial"
Das mit den Instanzen finde ich gut.
Was mir aber bei meinem QadrocopterProjekt auf gefallen ist das er die Variabeln von

Code: Alles auswählen

  sock_1       : "api_telnet_serial"
  sock_2       : "api_telnet_serial"
  sock_3       : "api_telnet_serial"
durch die innere optimierung zusammengeworfen hatt.

Wenn z.B.: in sock_1 eine Variabel V1 im VAR Bereich definiert wurde so griffen sock_2 und sock_3 mit auf diese zu.
Obwohl sie ihre eigene V1 definieren.
Das [3] Trennt jetzt sauber auch diese Variaveln.

Wie sieht das mit dem PASM Code aus werden hier auch Instanzen gebildet?

Was mir aufgefallen ist das BST die Anzahl der instanzen mit den Aufruf parrameter nicht Überprüft.
Ich derfiniere 3 Instanzen kann aber z.B. 9 Instanzen im Programm Aufrufen :shock:
Da muss ich ja richtig Aufbassen. :mrgreen: