mini WEB-Server (alt mini FTP)

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

Re: mini WEB-Server (alt mini FTP)

Beitrag von PIC18F2550 »

Sorry,
war wol gestern doch schon zu spät habe da ":" mit "|" verwechselt. :shock:
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
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Re: mini WEB-Server (alt mini FTP)

Beitrag von PIC18F2550 »

Solangsam gehen mir die Ideen aus warum der Webserver Spinnt.
Am ENC kannes nicht liegen habe verschiedene auspropiert und bei meinem PIC-mini-Web fünktionierts.
Ich habe mal den MCHPStack402 als zip angehangen den verwende ich so wie er ist auf dem PIC.
Leider ist mein C nicht sehr gut so das es bei einer umsetzung nicht funktionieren wird aber vileicht erkennt jemand von euch warum das der Webserver auf dem Prop nicht geht.
MCHPStack402.zip
(3.68 MiB) 513-mal heruntergeladen
proptcp-5.0-7beta.zip
(33.46 KiB) 505-mal heruntergeladen
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: mini WEB-Server (alt mini FTP)

Beitrag von kuroneko »

Nur um mal die ueblichen Kandidaten abzuklopfen, koennte es ein Stack-Problem sein? 64 longs sollten eigentlich ausreichen ... Also einfach mal den Wert erhoehen (128/256) oder den Server direkt starten:

Code: Alles auswählen

PUB main

  sock.start(1, 2, 3, 4, -1, 7, @mac_addr, @ip_addr)
  rr.start
  webserver
Benutzeravatar
TuxFan
Beiträge: 1022
Registriert: So 6. Sep 2009, 11:18

Re: mini WEB-Server (alt mini FTP)

Beitrag von TuxFan »

Hallo!
Falls der Prop nicht zur Erzeugung des 25MHz Taktes für den ENC benutzt wird, bitte die 7 (xtalout) zu -1 machen.
Gruß
TuxFan

PS.: Ich hatte in den letzten Tagen noch eine Software zum Steuern von LEDs über Ethernet (wie bei YBox2) auch mit PropTCP mit Start von 3 Socks ausprobiert. Dabei hatte ich keine Probleme festgestellt.
Meine C-Kenntnisse sind eher marginal, deswegen kann ich bei o.a. Software nicht helfen.
Wunder gibt es immer wieder.......
Benutzeravatar
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Re: mini WEB-Server (alt mini FTP)

Beitrag von PIC18F2550 »

erstmal danke TuxFan.
Das mit dem (xtalout) habe ich schon gemacht.
Durch das einfügen von "repeat while \sock.txflush" habe ich jetzt einen konstanten Datenstrom ohne diese Spitzen.
Auflösung 0,25sec
Bildschirmfoto-Systemüberwachung-1.png
Aber das übertragen von mehreren Bildern geht immernoch nicht richtig.

Code: Alles auswählen

PRI webserver | sockidx
  ' Setup listening sockets
  \sock.listen(80, @tcp_webrx1, rxlen, @tcp_webtx1, txlen)
  repeat
      if \sock.isConnected                     ' is a client connected?
        if \_webThread == 0                    ' process the client connection, check for success
          \sdfat.unmountPartition
          repeat while \sock.txflush                        ' flush txbuffer
        \sock.close                            ' close socket
      \sock.relisten                           ' force socket to listen again, using the previous settings

Code: Alles auswählen

...
        a:= sdfat.fileSize
        b:= a / 512         'Blöcke von 512Byte ermitteln
        a:= a - (b * 512)   'restgröße
        repeat i from 0 to b
          sdfat.readData(@SDP, 512)
          repeat while \sock.txflush                        ' flush txbuffer
          sock.txdata(@SDP,512)
        sdfat.readData(@SDP, 512)
        repeat while \sock.txflush                        ' flush txbuffer
        sock.txdata(@SDP,a)
        return 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
TuxFan
Beiträge: 1022
Registriert: So 6. Sep 2009, 11:18

Re: mini WEB-Server (alt mini FTP)

Beitrag von TuxFan »

Hi!
Ändere mal

Code: Alles auswählen

repeat i from 0 to b
in

Code: Alles auswählen

repeat b
im 1. Fall wird b+1 mal ein Block eingelesen und gesendet. Dann ist schon der unvollständige Block mit a-bit dabei und er bleibt beim erneuten Lesen des a-bit Blockes hängen.
im 2. Fall nur exakt b mal
Das Übertragen des a-bit Restblockes sollte nur erfolgen wenn er größer 0 ist.
Gruß
TuxFan
Wunder gibt es immer wieder.......
Benutzeravatar
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Re: mini WEB-Server (alt mini FTP)

Beitrag von PIC18F2550 »

moin kuroneko,
das mit dem stack habe ich jetzt auch ausprobiert sind ja 2 drinn brachte aber keine verbesserung.

Code: Alles auswählen

'  long webstack[64]             ' stack for webserver cog
  long webstack[256]             ' stack for webserver cog

Code: Alles auswählen

'  stack         long 0[128]                               ' stack for new cog (currently ~74 longs, using 128 for expansion)
  stack         long 0[256]                               ' stack for new cog (currently ~74 longs, using 128 for expansion)
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
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Re: mini WEB-Server (alt mini FTP)

Beitrag von PIC18F2550 »

moin TuxFan,
habe dein Vorschlag mal auspropiert.

Code: Alles auswählen

        a:= sdfat.fileSize
        b:= a / 512         'Blöcke von 512Byte ermitteln
        a:= a - (b * 512)   'restgröße
        ser.writeString(string("Ready", $0D))
        repeat b
          sdfat.readData(@SDP, 512)
          sock.txdata(@SDP,512)
        if a>0
          sdfat.readData(@SDP, a)
          sock.txdata(@SDP,a)
        return 0
Bildschirmfoto-Systemüberwachung-2.png
Das sieht schon viel besser aus.
Nur wenn ich mit mozilla versuche das Bild auf dem Desktop zu ziehen sagr er mir.
bei mehreren Bildern auf einer Seite.
Bildschirmfoto-Namenloses Fenster.png
Und bei einem Bild auf der Seite.
Bildschirmfoto-Namenloses Fenster-1.png
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
TuxFan
Beiträge: 1022
Registriert: So 6. Sep 2009, 11:18

Re: mini WEB-Server (alt mini FTP)

Beitrag von TuxFan »

Ich hatte mal Deinen o.a. Code zum Lesen und Senden in dem von mir benutzten Programm eingesetzt. Das läuft zwar, aber von 7 Bildern wurden nur 2 angezeigt. Die Bestimmung der Filelänge der Blockanzahl und der restlichen Bytes sind aber nicht zwingend notwendig. Der nachstehende Code aus dem von mir benutzten Programm ist ausreichend. Hierbei werden jetzt 6 von 7 Bildern angezeigt. Übertragungsraten von ca. 200 Kibit wurden erreicht.
Hieraus kann man sehen, das die Kürze des benutzten SPIN-Codes scheinbar eine große Rolle spielt.

Code: Alles auswählen

      repeat
        h:=sdfat.readData(@sendwebBuffer,BufferSize) ' now we are reading the first BufferSize (1024 byte) 
        if h=<0                                       ' if there are no bytes to read, then exit the loop
          quit
        else
          web.txdata(@sendwebBuffer,h)                     ' send the h bytes read (max 1024 byte)
      return 0
Gruß
TuxFan
Wunder gibt es immer wieder.......
Benutzeravatar
PIC18F2550
Beiträge: 2832
Registriert: Fr 30. Sep 2011, 13:08

Re: mini WEB-Server (alt mini FTP)

Beitrag von PIC18F2550 »

Es gibt eigendlich nur zwei möglichkeiten noch.
1. im treiber zum Senden gibt es noch einen unendeckten Fehler.
2. der Listen befehl arbeitet nicht richtig oder die Empfangenen daten werden falsch ausgewertet.

Zumindest kommt er mit datenlängen unter 1,5k klar.
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