Ethernet lesen mit mehr Geschwindigkeit für E-Mail Server... jetzt 7kb/s :)

Hey,
bin ja gerade dabei einen E-Mail Server zu schreiben. Ich bin gerade beim SMTP und soweit funktioniert auch alles.
Nun wollte ich mal die Geschwindigkeit messen und habe nen Anhang von 100kb mitgeschickt.

Somit kam ich auf ca. 4,5kb/s und finde das schon sehr langsam :frowning:

while (aa !=5){
while (client.available() < 1){
}
zeichen=client.read();
...
}
}

Ich habe als Test das client.read(); ohne eine weitere große Bremse in der Scheife gemacht.
Also zeichen wird erstmal nicht bearbeitet oder so.

Das Problem kenne ich auch von Bascom (AVR Basic) und habe da die möglichkeit z.b. client.read(512);
zu machen. Also nicht Byte für Byte, sondern gleich 512 Byte vom Ethernet zu laden.

Wie geht das mit Arduino ?

ok, hat sich erledigt :smiley:

Habs auf ca. 7kb/s geschafft. Ich denke das ich das noch etwas optimieren kann. Aber ich muss mal sehen wie
ich den Buffer vom Ethernetshild voll ausreizen kann.

uint8_t buff[1536];
if (client.available() > 1536){
client.read(buff,1536);
myFile.write(buff,1536);
}
else
{
byte für byte :wink:

uint8_t kannte ich nicht....

Wenn ich den Buffer auf 2 oder 3kb bekomme, wird es bestimmt etwas schneller :smiley:
Aber 7bk/s reicht eigendlich aus. Die meissten E-Mails sind nicht mehr als 70kb groß.
Und wenn mal eine 2MB ist, dann dauert es halt ein wenig. Aber soweit finktioniert's

MOMENT - Du schreibst einen MAIL SERVER?
Auf einem AVR?

DAS ist Hardcore.

Hmm, welchen Arduino verwendest Du denn? Der Uno hat nur 2kB RAM und der Mega hat 8kB.

Ich mach das mit dem Arduino Mega 2560. Geplant ist später dann noch ein 3,2" TFT mit drann zu machen.

Im Moment ist das SMTP fast fertig. Das ganze geht natürlich nur mit einer SD-Karte.
Es sind auch mehrere E-Mail Accounts möglich. HTTP und POP3 kommen auch dazu...

Wenn ihr Interesse hab, Poste ich das ganze natürlich hier :slight_smile:

Ich plane noch eine Weboberfläche zu machen für das Administrieren....

Beim ATmega1280 bzw 2560 kann man das interne RAM mit einem externen RAMbaustein erweitern und der Controller behandelt es als sei es intern:
http://ruggedcircuits.com/html/megaram.html

http://arduino.cc/forum/index.php/topic,124136.0.html

Grüße Uwe

Cool,gut zu wissen. Wusste das mit dem externen Ram
nicht :slight_smile:

Ich glaube aber, dass der Ram für mein Mailserver
ausreichen wird. Das läuft halt überwiegend auf der
SD Karte :slight_smile:

Die ankommenden Mails werden gleich auf der
SD Karte gespeichert.

:slight_smile:

Also auf den Code bin ich auf jeden Fall gespannt.
Mario.

sven1977:
...Geplant ist später dann noch ein 3,2" TFT mit drann zu machen...

Könntest dich dann mal bei mir melden. Habe schon eine große Lib für TFT und Touch-Controls zusammen.

Für das Display wollte ich die UTFT nutzen. Ist deine Lib besser ?

Ich hoffe ja nur, dass das RAM dafür noch reicht.
Im Moment fummel ich noch mit dem SMTP rum.
Es soll ja auch ein Relay Server eingetragen werden können.

Denn mit der IP vom Provider werden wohl mehr als die Hälfte der Mails
geblockt.

Meine Lib baut auf die UTFT auf.
Es ist sozusagen der Teil der fehlt ^^.

Buttons, Optionboxes, Checkboxes und Nummerneingabefelder werden durch die Lib abgebildet.

Denn mit der IP vom Provider werden wohl mehr als die Hälfte der Mails
geblockt.

Das ist verständlich. Du wirst wahrscheinlich auch kein Relay finden, mit dem es besser geht.

Die andere Möglichkeit wäre einen smtp eintragen zu können...

Hey, das ist cool...

Hast du da auch eine Eingabe mit drin z.b. ein Textfeld ?

Ich hab ne Domain bei Selfhost und da ist auch nen Relay Service dabei. Aber
wer will kann, da auch seine GMX E-Mail oder so eintragen.
Das funktionerte damal mal mit Arcor :slight_smile:

Das muss man dann testen, denn mit Hotmail geht das z.b. nicht.

Textfeld kommt noch...

Wann beginnst du mit dem Display?

Ach, das dauert noch etwas. Ich hab leider nicht die Zeit durchgehend mich damit zu beschäftigen.
Ausserdem muss ich oft erstmal schauen wie das funktioniert. Ich bin gerade von Bascom
auf Arduino gekommen und muss mich da auch durchfummeln.

Die ganze Variablen dingszeugs ist auch etwas anders :smiley:

Ankommende Mails werde schon zertifiziert und auf der SDkarte für den jeweiligen
Account gespeichert.

Mir fallen nur immer wieder verbesserungen ein die ich dann testen muss. Ich beschränke mich
auch erstmal nur auf den Standard. Also HELP funktion bau ich erstmal nicht ein. Die Mailserver
benutzen den sowieso nicht.

Und wenn dann soweit alles fertig ist, dann sag ich auf jeden Fall bescheid. Ich hoffe nur, das
der Ram dann ausreicht :smiley:

Ja Zeitprobleme... Da kann ich dir dann mit dem TFT ein ganzes Stück abnehmen.

Das mit dem RAM ist schon ein Problem. Ich versuche zwar das meiste in den Flash zu bekommen, aber so ein Menü im TFT darzustellen kostet halt echt auch ein wenig an RAM.
Wieviel hast denn du frei? Verwendest du MemoryFree?
Welches Ethernet shield verwendest du?

MemoryFree kenn ich nicht :~
Ich versuche halt so wenig Variablen zu benutzen wie nur möglich. Und wenns geht
diese dann auch "wiederzuverwenden".

Ich weiss nicht genau wieviel noch frei ist. Ich schätze es sind ca. 1,2 kb verbraucht. Und da ist auch der große Buffer
von 1024 bytes dabei :smiley:

Allerdings weiss ich nicht was in den Lib noch verbraucht werden.
Gibt es da ne Möglichkeit das anzeigen zu lassen ?

Ich habe son China EthernetShild (W5100 Chip), dass mit der standerd Lib von Arduino funktioniert :wink:

sven1977:
Gibt es da ne Möglichkeit das anzeigen zu lassen ?

Ja, die MemoryFree gibts aufm Spielplatz: Arduino Playground - AvailableMemory

ohhh schick schick :

Spielplatz trifft wohl voll zu :grin:

Also ich hab 5105 bytes frei... Das hört sich ja bis jetzt gut an....