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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: ASCII -> Integer

  1. #1
    Registriert seit
    08.11.2005
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo!

    Ich habe folgendes Problem:
    Über eine Schnittstelle wird eine 4-stellige Zahl eingelesen, die im ASCII-Format vorliegt. Diese Zahl ist zur weiteren Verarbeitung in einer Integerzahl umzuwandeln.

    Die Lösung soll möglichst kurz in Form eines FC sein, der einen Input (ASCII-Wert als Doppelwort) und einen Output (Integer) hat.

    Hat jemand einen Vorschlag, wie ich das lösen könnte?

    Ich hatte an die Standard-Funktion STRG_I (String -> Integer) gedacht. Dazu müsste ich aus dem Doppelwort allerdings zunächst einen String bekommen.

    Grüße,
    WP
    Geändert von winniepuh (14.08.2006 um 11:18 Uhr)
    Zitieren Zitieren ASCII -> Integer  

  2. #2
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.866
    Danke
    78
    Erhielt 806 Danke für 549 Beiträge

    Standard

    mit der fc38 warst du doch schon nah dran. nimm doch einfach die fc37.
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  3. #3
    winniepuh ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.11.2005
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von volker
    mit der fc38 warst du doch schon nah dran. nimm doch einfach die fc37.
    Dann habe ich jetzt noch das Problem, dass die ASCII-Zeichenfolge in einem DoubleWord vorliegt. Wie kann ich die in einen String konvertieren? FC37/38 nehmen das DWORD nicht.

    Grüße,
    WP
    Geändert von winniepuh (14.08.2006 um 11:18 Uhr)

  4. #4
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.866
    Danke
    78
    Erhielt 806 Danke für 549 Beiträge

    Standard

    [quote="winniepuh dass die ASCII-Zeichenfolge in einem DoubleWord vorliegt. [/quote]

    also das verstehe ich nicht so ganz.
    gib mal ein beispiel.

    hast du für eine 4stellige zahl 4 doppelworte vorliegen, oder was?
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  5. #5
    winniepuh ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.11.2005
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von volker
    also das verstehe ich nicht so ganz.
    gib mal ein beispiel.

    hast du für eine 4stellige zahl 4 doppelworte vorliegen, oder was?
    Die 4-stellige Zahl befindet sich in einem Doppelwort. Ich habe einen FC mit dem Input ASCII (DWORD) und dem Output INTEGER (INT).
    Im FC soll aus die ASCII-Zeichenfolge in eine Integerzahl umgerechnet werden.

    Als Beispiel für das Doppelwort:
    HEX: 31323334

    Als Ergebnis müsste dann die Integerzahl 1234 rauskommen.

    Jetzt klar?

  6. #6
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.866
    Danke
    78
    Erhielt 806 Danke für 549 Beiträge

    Standard

    ok dann geht das mit den fc's nicht. ich kenn auch keinen der sowas machen würde.

    wenn du nur zahlen hast (ohne komma) würde folgendes funktionieren.
    gibt bestimmt noch bessere möglichkeiten. aber diese funktioniert.

    awl-quelle
    Code:
    FUNCTION FC 1 : VOID
    TITLE =
    VERSION : 0.1
    
    
    VAR_TEMP
      ascii_l : DWORD ;	
      ascii_r : DWORD ;	
      zahl : DINT ;	
      einer : DINT ;	
      zehner : DINT ;	
      hunderter : DINT ;	
      tausender : DINT ;	
    END_VAR
    BEGIN
    NETWORK
    TITLE =ascii-zahl -> integer
    
          L     L#3132; 
          DTB   ; 
          T     #ascii_l; 
    
          L     L#3334; 
          DTB   ; 
          T     #ascii_r; 
    
          L     LW     1; 
          BTI   ; 
          L     30; 
          -I    ; 
          L     1000; 
          *I    ; 
          T     #tausender; 
    
          L     LW     3; 
          SRW   8; 
          BTI   ; 
          L     30; 
          -I    ; 
          L     100; 
          *I    ; 
          T     #hunderter; 
    
          L     LW     5; 
          BTI   ; 
          L     30; 
          -I    ; 
          L     10; 
          *I    ; 
          T     #zehner; 
    
          L     LW     7; 
          SRW   8; 
          BTI   ; 
          L     30; 
          -I    ; 
          T     #einer; 
    
          L     #einer; 
          L     #zehner; 
          +D    ; 
          L     #hunderter; 
          +D    ; 
          L     #tausender; 
          +D    ; 
          T     #zahl; 
    
    END_FUNCTION
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  7. #7
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.235
    Danke
    642
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Zitat Zitat von volker
    awl-quelle
    Code:
    ...
          L     30; 
          -I    ; 
    ...
    Muss überall geändert werden in
    Code:
          L     48; // = 0x30
          -I    ;
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  8. #8
    winniepuh ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    08.11.2005
    Beiträge
    7
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Zitat Zitat von volker
    ok dann geht das mit den fc's nicht.
    Soweit war ich auch gerade.
    Ich habe mir nun auch selbst eine Lösung programmiert und muss die noch testen. Ob ich dazu heute noch komme, muss ich mal sehen.
    Wenn mein Code läuft, melde ich mich und veröffentliche ihn hier.

    Zitat Zitat von volker
    ich kenn auch keinen der sowas machen würde.
    Wir benötigen die Zahl aber als Integer zur Weiterverarbeitung.
    Der Wert ist ein Messwert, der von einer Distanzmessung über eine CP340 (ASCII-Mode) kommt.

    Grüße & Dank,
    WP
    Geändert von winniepuh (14.08.2006 um 11:19 Uhr)

  9. #9
    Registriert seit
    20.06.2003
    Ort
    Sauerland.NRW.Deutschland
    Beiträge
    4.866
    Danke
    78
    Erhielt 806 Danke für 549 Beiträge

    Standard

    [quote="Rainer Hönle"]
    Zitat Zitat von volker
    awl-quelle
    Muss überall geändert werden in
    Code:
          L     48; // = 0x30
          -I    ;
    Wieso?
    der code ist getestet und hat hier in der simulation einwandfrei gelaufen.

    mit itb mache ich zunächst einmal aus 3132 dez (12) 3132 hex
    nun werden beide ziffer voneinander getrennt und mit bti wieder in eine dez gewandelt. das ergibnis ist also 31 und 32. von beiden wird 30 dez abgezogen um den wert der ziffer zu erhalten. das ergebnis ist also 1 und 2.
    .
    mfg Volker .......... .. alles wird gut ..

    =>Meine Homepage .. direkt zum Download

    Meine Definition von TIA: Total Inakzeptable Applikation

  10. #10
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.235
    Danke
    642
    Erhielt 955 Danke für 769 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von volker
    Wieso?
    OK, ich bin zu sehr in C behaftet. Aber soweit ich weiss, kommen die Zeichen über ASCII rein. D.h. am Anfang müsste L W#16#3132 und nicht L L#3132 stehen. Daher vermutlich unser gedanklicher Unterschied.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

Ähnliche Themen

  1. integer 32Bit in integer 16 Bit wandeln
    Von slk230-power im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 09.11.2009, 22:35
  2. Ein ASCII-Zeichen im DB nach Integer
    Von noeppkes im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 09.11.2007, 11:42
  3. Umwandlung Integer(32bit) in Integer(16bit)
    Von Kojote im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 18.08.2005, 10:56
  4. ASCII => Real
    Von Anonymous im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 03.01.2005, 15:16
  5. Umwandlung Integer nach ASCII
    Von el-koenig im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 27.03.2004, 18:42

Lesezeichen

Berechtigungen

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