oscat.lib > oscat.lib fuer CoDeSys 3

Network.lib

<< < (2/8) > >>

mactoolz:
Hi,

also ich habe die Socket Implementierung mit dem IP_Control in CoDeSys V3 umgesetzt.

Jetzt habe ich eine Frage. Und zwar folgende. Die Datengröße "pdt_R_BUF.SIZE".
kommt seltsam in die Steuerung. Das Verhält sich auch genau so in CoDeSys V2.

Bis jetzt habe ich es so probiert, sobald ich im Zyklus im Size Daten sehe, sprich >0, dann kopiere ich Daten um und lösche selber das Size ab.
Dann kommen wieder neue Daten usw.

Im Empfangspuffer sehe ich z.B. 2000Byte (Array Index)mit Daten gefüllt. Aber die anzahl der Bytes die ich quasi zusammen zähle entspricht nicht der Zahl die bis zu dem letzten Byte im Empfangsbuffer, in Bezug auf den Array Index, Daten geschrieben wurde.

Ich habe z.B. jede Size mal in ein array von Dint weggeschrieben und das Size abgenullt.
In Summe habe ich ca. 4000 Byte aber es sind wirklich im Empbangsbuffer 2000Byte beschrieben worden.

Wo ist da mein Denkfehler.
Kannst du das nachvollziehen wie ich das beschreibe.


MacToolz

mactoolz:
Hi,

also komisch war dann doch garnichts. Die Summer der Empfangenen Bytes war richtig, nur das ich meinen speicher überlaufen habe und erneut von vorne wieder mein
Empfangsbuffer überschrieben wurde.

Gibt es eigentlich keine Meldung das der Empfangsbuffer überlauf statt gefunden hat. Ich meine das kann ich ja selber rein machen. Das ist nicht das Thema.
Aber es wird aber auch nirgend wo gebildet oder ???

Dann stelle ich mir aber jetzt die Frage, wie ich den Ablauf, vom Daten einsammeln abhängig mache.
Worauf reagiere ich denn jetzt um Daten umkopieren oder für mich lesbar in Ascii Zeichen zu wandeln.

ist denn das "Size" denn richtig?

Oder eher aus dem SocketRecv der Rückgabewert wieviele Zeichen generell empfangen wurden, sprich aus dem Empfangspuffer vom Ethernet Stack.
Weil im ersten denke ich benötige ich nicht die Gesamtgröße.

Weil sobald -1 aus dem SocketRecv kommt, sind auch keine Daten aktuell mehr vorhanden?

Also was das angeht bin ich etwas unschlüssig.

Danke

MacToolz

peewit:
eine umsetzung der network lib für codesys 3.x findest du hier

http://www.oscat.de/community/index.php/topic,1784.msg9460.html#msg9460


mactoolz:
Hi,

also ich für meinen Teil sehe hier kein Problem. Ich habe das "Size" für den Buffer falsch interpretiert.
Das Size ist ja die Größe die ja gerade im TCP Stack gerade in die Steuerung kopiert wird.

Wenn ich z.B. 5200 Bytes empfangen dann sind die auch im Buffer zu sehen. Das heißt das nach jedem SysSockRecv die Anzahl der Daten in den Buffer kopiert werden.

Ich stelle mir gerade die Frage wann ich die Daten umkopieren soll?

MacToolz

peewit:
der empfangs und sendepuffer ist in den globalen setting der lib vorgegeben

wenn du mehr als diese vorgegebene datenmenge auf einmal verarbeiten musst, dann ist es für alle die den ip_control nicht sehr gut kennen das beste wenn man die globalen setting anpasst.

der ip_control lässt sich bei groesseren datenmengen auf dementsprechend handhaben, aber wie gesagt das ist das schon was für die profis

wie sowas ausieht kannst du zb. im smtp_client oder ftp_client baustein ansehen
diese bausteine können mit theoretisch beliebigen datenmengen umgehen.

wenn du beim s_buf eine size einträgst dann werden automatisch diese anzahl an bytes vom buffer übertragen
wenn die daten vollständig versendet worden sind wird automatisch size = 0 gemacht

wenn daten empfangen werden dann wird dir über size mitgeteilt wieviele byte im buffer bereitstehen

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln