- LiFePO4 Speicher Test         
Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 24 von 24

Thema: Zusammensetzen von Bytes zu einem Single-Datentyp

  1. #21
    Erfahrener Benutzer Roboter Experte Avatar von Rage_Empire
    Registriert seit
    10.03.2005
    Ort
    Pforzheim
    Beiträge
    710
    Anzeige

    E-Bike
    Hi PicNick,

    sieht intresannt aus. Habs auch schon probiert, funktioniert soweit ganz gut mit dem senden und empfangen. Jedoch versteh ich das ganze noch nicht ganz. Bin ich der richtigen Annahme, daß das Single direkt aus dem Speicher Byte für Byte gelesen und gesendet wird? Oder lieg ich damit falsch? Ein Single besteht doch immer 4 Bytes?


    Senden:
    Code:
    Sub Sendsingle(byval Einesingle01 As Single)
    
    local cnt as byte
    local vll as byte
    Adr01 = Varptr(einesingle01)                                ' adresse von der single
     For Cnt = 1 To 4
         Vll = Inp(adr01)                                       ' lesen byte aus SRAM
         Printbin Vll;                                          ' senden
         Incr Adr01                                             ' address ++
     Next
    End Sub
    Empfangen:
    Code:
    Sub Recsingle(byval Einesingle01 As Single)
    
    local cnt as byte
    local vll as byte
    Adr01 = Varptr(einesingle01)                                ' adresse von der single
     For Cnt = 1 To 4
         Inputbin Vll,                                          ' empfangen
         Out Adr01 , Vll                                        ' schreibt in SRAM
         Incr Adr01                                             ' address ++
     Next
    End Sub

  2. #22
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Das stimmt schon. das sub-argument ist die adresse vom 1.Byte. in der schleife wir die adresse inkrementiert, also, 2., 3., u. 4. Byte, je nachdem, was als Länge angegeben wird.
    Aufpassen: wenn du varptr in der sub machst, kriegst du nicht die addresse vom single selbst, sondern von der "byval" Kopie. beim Senden macht das nix. ist halt einmal ums Eck, aber beim empfangen steht dann im original nix drin.
    deshalb müßte varptr eigentlich der aufrufer vor dem call machen.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #23
    Erfahrener Benutzer Roboter Experte Avatar von Rage_Empire
    Registriert seit
    10.03.2005
    Ort
    Pforzheim
    Beiträge
    710
    Ok, habs verstenden. Danke für den Tip mit "varptr"....hab mich schon über die seltsamen Effekte gewundert. Da muß ich wohl nicht "byval" sondern "byref" verwenden.

  4. #24
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    das Blöde ist, daß Bascom per default sowieso immer die Adresse auf den Softstack legt
    https://www.roboternetz.de/wissen/in...b_.26_Function
    d.h. den Varptr könnt' man sich sparen, nur müßt man dann die adresse vom Stack holen, wohl mit inline assembler.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Seite 3 von 3 ErsteErste 123

Berechtigungen

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

LiFePO4 Speicher Test