Seite 1 von 1

Fragen zu admnet.spin

Verfasst: Mo 4. Jun 2018, 15:56
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)

Re: Fragen zu admnet.spin

Verfasst: Mo 4. Jun 2018, 21:00
von kuroneko
Lokale Variablen sind immer longs.

Re: Fragen zu admnet.spin

Verfasst: Mo 4. Jun 2018, 21:13
von PIC18F2550
Hi,

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

Re: Fragen zu admnet.spin

Verfasst: Di 5. Jun 2018, 07:38
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?

Re: Fragen zu admnet.spin

Verfasst: Di 5. Jun 2018, 10:22
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.