Fragen zu admnet.spin

Du hast ein Betriebssystem für den Hive geschrieben oder beschäftigst dich mit den grundlegenden Systemfunktionen, dann bist du hier richtig!
Antworten
Benutzeravatar
PIC18F2550
Beiträge: 2846
Registriert: Fr 30. Sep 2011, 13:08

Fragen zu admnet.spin

Beitrag von PIC18F2550 »

Hallo,
ich stolpere gerase etwas in admnet.spin herum un binn auf diese Routinen gestoßen.

PRI lan_txdata | handleidx, len, txbyte, error

PRI lan_rxdata | handleidx, len, rxbyte, error

Mein Problem ist das txbyte und rxbyte nur 255 Zeichen enthalten können.
In ein Frame kann ich aber mehr (0-1500) mit einmal übertragen.

Oder binn ich auf was Ausgerutscht???!? :)

Eventuell könnte das das problem mit dem webserver erklähren.

2. Punkt

Code: Alles auswählen

PRI lan_rxdata | handleidx, len, rxbyte, error
''funktionsgruppe               : lan
''funktion                      : bei bestehender Verbindung die angegebene Datenmenge empfangen
''eingabe                       : -
''ausgabe                       : -
''busprotokoll                  : [078][get.handleidx][sub_getlong.len][put.byte1][put.byte<len>][put.error]
''                              : handleidx - lfd. Nr. der Verbindung
''                              : len       - Anzahl zu empfangender Bytes
''                              : error     - ungleich Null bei Fehler

  error := FALSE
  handleidx := bus_getchar
  len := sub_getlong

  repeat len
    ifnot error
      repeat while (rxbyte := sock.readByteNonBlocking(sockhandle[handleidx])) < 0
        ifnot sock.isConnected(sockhandle[handleidx])
          error := sock#ERRSOCKETCLOSED
          quit
    bus_putchar(rxbyte)

  bus_putchar(error)
Die Rückmeldung müsste auch etwas geändert werden da Reg. die eingehenden werte nicht unterscheiden kann

Code: Alles auswählen

bus_putchar(rxbyte) <-> bus_putchar(error)

Code: Alles auswählen

  repeat len
    ifnot error
      repeat while (rxbyte := sock.readByteNonBlocking(sockhandle[handleidx])) < 0
        ifnot sock.isConnected(sockhandle[handleidx])
          error := sock#ERRSOCKETCLOSED
          quit
    bus_putchar(OK)
    bus_putchar(rxbyte)

  bus_putchar(error)
  bus_putchar(0)
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
kuroneko
Beiträge: 202
Registriert: Sa 22. Okt 2011, 13:05
Wohnort: FN, Germany

Re: Fragen zu admnet.spin

Beitrag von kuroneko »

Lokale Variablen sind immer longs.
Benutzeravatar
PIC18F2550
Beiträge: 2846
Registriert: Fr 30. Sep 2011, 13:08

Re: Fragen zu admnet.spin

Beitrag von PIC18F2550 »

Hi,

lokal schon nur werden diese mit 8bit Werten gefüllt und auch nur 8bit verarbeitet. :(
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Benutzeravatar
kuroneko
Beiträge: 202
Registriert: Sa 22. Okt 2011, 13:05
Wohnort: FN, Germany

Re: Fragen zu admnet.spin

Beitrag von kuroneko »

OK, war 'n langer Tag gestern (12h EMV-Messung).

Dein Längenproblem seh' ich heute trotzdem nicht :) Wenn ein Fehler auftritt wird mit quit die innere repeat loop verlassen. Die Gegenstelle kriegt dann rxbyte noch n-mal wiederholt (bis wirklich len bytes übertragen wurden, bedingt durch ifnot error) und dann am Schluss error (-103, wenn es gut ging dann 0).

Macht das soweit Sinn?
Benutzeravatar
PIC18F2550
Beiträge: 2846
Registriert: Fr 30. Sep 2011, 13:08

Re: Fragen zu admnet.spin

Beitrag von PIC18F2550 »

nee alles klar hier binn ich weggerutscht

len := sub_getlong

rxbyte und txbyte sind nur die Daten aber nicht die Datenmenge.

EMV Messung?
Hoffendlich nicht bei meinen Kolegen (Programmierer).
Von den hab ich gerade ein paar Bilder von den Messwerten erhalten sehen grauenhaft aus.
Die habe anscheinend die Kompensation und den EMV komplett ignoriert.
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Antworten