- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 5 von 5

Thema: Negative Zahlen bei Datenübertragung mit Byte

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    07.12.2004
    Beiträge
    11

    Negative Zahlen bei Datenübertragung mit Byte

    Anzeige

    Powerstation Test
    hi,

    ich übertrage daten mit den protokoll SNAP mit folgenden aufbau:

    preamble, sync, hdb2, hdb1, dab, sab, db16, db15, ..., db01, crc2, crc1

    das funktioniert ja prima.

    nun hab ich aber das problem mit negativen zahlen.

    ich muß in Bascom integer definieren, jedoch hat integer
    mehr als 8 bit (1 byte)

    wie kann ich diese integer-zahl in ein vorzeichenbehaftetes byte umwandeln bzw. umgekehrt.

    der komplizierte weg ist

    if integer-zahl <0 then
    set minus
    byte-zahl.0=not integer-zahl.0
    byte-zahl.1=not integer-zahl.1
    .....
    byte-zahl.6=not integer-zahl.6
    byte-zahl.7=minus
    else
    reset minus
    byte-zahl.0=integer-zahl.0
    byte-zahl.1=integer-zahl.1
    .....
    byte-zahl.6=integer-zahl.6
    byte-zahl.7=minus
    end if

    vielen dank für eure hilfe im voraus!

    Gruß Wolfgang

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Da brauchst du keine Umstände zu machen. DEr Wertebereich muß sich natürlich ausgehen, in ein signed Byte gehen eben nur -128 bis +127
    aber wenn du diesen Wert im Bascom als Integer verwendest, brauchst du dann nur schicken "signedByte" = LOW(integerzahl)
    das sind die passenden Bit's schon drin
    Umgekehrt:
    du kriegst ein signed byte rein und willst ein Integer draus machen:
    if Inputbyte.7 = 1 then
    integerzahl = MAKEINT( Inputbyte, &HFF)
    else
    integerzahl = MAKEINT( Inputbyte, &H00)
    end if
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    07.12.2004
    Beiträge
    11

    Negative Zahlen bei Datenübertragung mit Byte

    hi,

    danke für die schnelle antwort.

    die +/- information steckt doch auch bei der integerzahl im msb oder??

    wie bekomm ich diese dem mit bei

    "signedByte" = LOW(integerzahl) ??

    macht das Bascom intern??

    Gruß Wolfgang

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Ist einfach: die Zahl -128 schaut in einem Bascom -Integer so aus
    &HFF80 ( wie gesagt, mehr als -128 geht nicht)
    schickst du also das low ---> ist das &H80 , d.h. das Vorzeichenbit ist ohnehin richtig gesetzt
    &HFF80 = &H80 = dezimal -128
    &HFFFF = &HFF = dezimal -1
    usw
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    07.12.2004
    Beiträge
    11

    Negative Zahlen bei Datenübertragung mit Byte

    Hallo,

    möcht micht herzlich bedanken, funktioniert prima.

    habs zwar geschafft mit SNAP die Daten zu übertragen, aber bei negativen zahlen war es dann vorbei.

    jetzt funkts perfekt, nochmals DANKE!!

    Gruß Wolfgang

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress