Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 11 bis 20 von 32

Thema: Pointer in ein Byte Array umwandeln

  1. #11
    Registriert seit
    13.04.2010
    Beiträge
    12
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Larry Laffer Beitrag anzeigen
    @piloti:
    Sprechen du und der TE von der gleichen Sache ?
    Sorry, hast recht. Irgendwie paßt das nur zur Hälfte.
    Dachte das Problem ist, dass in jeder Schleife immer wieder die gleiche Variable beschrieben wird.

    Was ist das denn für eine Funktion mit den Eingängen Pointer und Länge?
    Was macht diese genau und wo liegen die Bytesarrays auf die über den Pointer zugegriffen werden kann?

    Gruss, piloti

  2. #12
    kai86 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    13.01.2010
    Beiträge
    158
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ok ich hole kurz weiter aus.
    das soll eine funktion werden.
    Die benutze ich später um Byte Arrays in meinen TCP-SendeBuffer zu kopieren. Für das Buffer kopieren und damit alle ringpuffer Pointer vernünftig überwacht werden gibt es eine funktion writeByte() die mir ein Byte in meinen Buffer schreibt(samt sonstigen sachen die ich dabei noch mache).

    was ich jetzt machen will ist. eine funktion wo ich ein Byte Array rein gebe und alle Bytes einzeln mit meiner Funktion in den SendeBuffer schreibe.
    klar gehts sicher einfacher über Blkmov oder ähnliches aber ich würde es gern über die writeByte funktion machen, weil da wie gesagt auch Fehlerüberwachung statt findet, wie was ist wenn der Buffer voll ist usw.

    das was Larry gepostet hat habe ich irgendwo schonmal gesehen in einem anderen Beitrag, ich habe nur gehofft das es auch eleganter geht.

    was mich dabei noch verwirrt, das Format vom Pointer sieht eigentlich anders aus und steht so nicht in den ersten 3 Bytes.

    DB Nummer in den ersten beiden Bytes und die Byte und Bit Addresse in den letzen 19Bits.

  3. #13
    kai86 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    13.01.2010
    Beiträge
    158
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ich hätte es ehr so gemacht um den Pointer zu manipulieren.

    Code:
     val     : POINTER;
     val_REF AT val: STRUCT
            temp1   : ARRAY[0..28] OF BOOL; //irgendwelche anderen sachen
            byteAdr : INT;
            bitAdr  : ARRAY[0..2] OF BOOL;
     END_STRUCT;
    damit kann man dann die ByteAdr Problemlos hochzählen hätte ich gesagt.

    aber wie ich nun den Wert an der Stelle auslese habe ich immer noch nicht gerafft.
    ich schau mir das nochmal von larry an aber das sah glaube ich nur nach pointer manipulation aus

  4. #14
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard

    @Kai:
    Sorry ... das ist schon der eleganteste Weg.
    Und ... wenn ich mich da jetzt nicht vertippt habe dann ist so auch so OK wie gepostet ...
    Aus dem Mem_Ptr extrahiere ich den Quell-Datentyp und, bilde die Byte-Adresse und durch "rechts-schieben" die Byte-Adresse.

    Am Besten du testest es einfach mal ...

    Wenn du allerdings mit einem FB-Send (oder -Receive) arbeiten willst so kannst du den in SCL auch sehr elegant mit einem lokal-statisch angelegten Sende-Puffer (oder Empfangspuffer) versorgen und mußt keine großen "Klimmzüge" machen.

    Gruß
    Larry

  5. #15
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard

    @Kai:
    dein Beispiel wird gar nicht funktionieren, da in der AT-Sicht alle Einzel-Variablen immer an der Byte-Adresse oder Wort-Adresse ausgerichtet werden. Mit deinem Code-Beispiel bildest du eine AT-Sicht auf eine 7 Byte große Struktur - auch einfach mal ausprobieren - bei dir wird ggf. der Compiler schon "meckern" ...

  6. #16
    kai86 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    13.01.2010
    Beiträge
    158
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ok aber meine eigentlich frage ist immer noch nicht geklärt.
    wie bekomme ich in scl aus einem Pointer, den Byte Wert an der Stelle wo der Pointer hin zeigt.

    @larry hast recht der meckert der doofe

  7. #17
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard

    ... benutze einfach meinen Code und in Mem_Adr steht dann die Byte-Adresse des im Pointer übergebenen Bytes - wie gesagt ... einfach mal ausprobieren ...

  8. #18
    kai86 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    13.01.2010
    Beiträge
    158
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    ja und wie mache ich aus der Byte Adresse einen Byte Wert der sich hinter der Adresse verbirgt???

  9. #19
    Registriert seit
    28.02.2006
    Ort
    Ostsee 5 min zum Strand
    Beiträge
    780
    Danke
    92
    Erhielt 110 Danke für 98 Beiträge

    Standard

    Guck mal hier http://www.sps-forum.de/showthread.php?t=8663
    ist zwar AWL, aber so sollte es funktionieren
    Gruß von der Ostsee

    Nordischerjung
    _____________________

    Wenn man seinem Paßbild ähnlich zu sehen beginnt, sollte man schleunigst Urlaub machen. (Vico Torriani, schw. Entertainer)

    Ich habe eine Diät gemacht und fettem Essen und Alkohol abgeschworen - in zwei Wochen verlor ich 14 Tage. (Joe E. Lewis)

  10. #20
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.726
    Danke
    398
    Erhielt 2.401 Danke für 2.001 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von kai86 Beitrag anzeigen
    ja und wie mache ich aus der Byte Adresse einen Byte Wert der sich hinter der Adresse verbirgt???
    bezugnehmend auf die Variablen-Benennungen aus meinem Script :
    Code:
    myByte := Word_to_Block_DB(int_to_word(DB_Nr)).DB[Mem_Adr] ;

Ähnliche Themen

  1. Antworten: 13
    Letzter Beitrag: 24.09.2009, 12:54
  2. Umwandeln von INT nach Byte u Byte + n
    Von Gerold im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 07.04.2009, 10:07
  3. Byte to String umwandeln S7-315 2PN DP
    Von Sunny4251 im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 28.08.2008, 09:31
  4. REAL in BYTE umwandeln
    Von Terence_Hill im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 18.01.2008, 20:03
  5. Bool-Array in Byte-Array
    Von Techniker im Forum Sonstige Steuerungen
    Antworten: 10
    Letzter Beitrag: 13.01.2006, 19:12

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •