-         

Ergebnis 1 bis 7 von 7

Thema: Uart Ausgabe vertauscht Wertepaare

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.08.2006
    Beiträge
    118

    Uart Ausgabe vertauscht Wertepaare

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo Profis,
    Hier mal ein Testprogramm ,das bei der Ausgabe die Zahlenpaare
    vertauscht.Es sollen die Paare so ausgegeben werden,wie sie
    abgelegt sind.Komischerweise fängt die Ausgabe mit einen Zahlenpaar
    aus der Mitte einer Data-ablage an.Wie kriegt man das hin,
    das der Speicher wahrheitsgemäss abgearbeitet wird?


    $regfile = "attiny2313.dat"
    $crystal = 3686400
    $baud = 9600
    $hwstack = 32
    $swstack = 10
    $framesize = 40
    Config Serialout = Buffered , Size = 10
    Config Com1 = Dummy , Synchrone = 0 , Parity = Even , Stopbits = 1 , Databits = 8 , Clockpol = 0
    Dim S As Byte , Count As Byte
    Declare Sub Datenpunkt
    Declare Sub Displaycls

    Do
    Wait 2
    Displaycls 'Display löschen
    Datenpunkt 'Datenpunkt setzen
    Restore Data1:
    For Count = 1 To 4
    Read S : Print Chr(s);
    Next
    Loop

    Sub Displaycls
    Local C As Byte
    Restore Cls1:
    For Count = 1 To 3
    Read C : Print Chr(c);
    Next
    End Sub

    Sub Datenpunkt
    Local D As Byte
    Restore Datp10:
    For Count = 1 To 5
    Read D : Print Chr(d);
    Next
    End Sub

    'Datentabelle
    Cls1:
    Data &H02 , &H43 , &H41 '02 43 41
    Datp10:
    Data &H04 , &H53 , &H01 , &H00 , &H56 '04 53 01 00 56
    Data1:
    Data &H03 , &H50 , &H41 , &H12 '03 50 41 12

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    28.03.2004
    Beiträge
    185
    Du fängst jetzt den dritten Thread zum gleichen Code-Schnipsel in zwei Tagen an !!

    Und schau Dir bitte mal das richtige Posten von Code an...

    PS: Im Simulator erfolgt die Ausgabe der Datenwerte in der Reihenfolge wie die DATA-Werte angeordnet sind.

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Hi,
    Code kannst du so posten:
    [ code]Hier kommt dein Code rein[ /code ]
    (Die Leerzeichen in den Klammern weglassen)
    Sieht dann so aus:
    Code:
    Hier kommt dein Code rein
    Vorteil ist, daß die Formatierungen (Einrücken) erhalten bleiben.
    Das macht's übersichtlicher.

    Gruß
    Christopher

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.08.2006
    Beiträge
    118

    Re Ausgabe

    Hallo Profis,
    ich hatte Bedenken das jemand Antworten noch liest.
    Mit dem Code stimme ich zu.Anbei ein geänderte Form.
    Die Anzahl der Wertepaare stimmt.Es werden aber Wertepaare aus
    beiden Data Blocks benutzt.Das ergibt keinen Sinn.
    die Hilfe kann ich schon langsam auswendig.Ich habe bewußt
    mal alles stehen lassen.Kriege soweit alles hin,bis auf die Ausgabe.
    Übrigens ich lese immer mit einen Terminalprogramm aus.
    Es wurden mehrere Varianten der Ausgabe probiert.
    Und Danke für die formellen Hinweise.

    Code:
    $regfile = "attiny2313.dat"
    $crystal = 3686400
    $baud = 9600
    $hwstack = 32
    $swstack = 10
    $framesize = 40
    Config Serialout = Buffered , Size = 10
    Config Com1 = Dummy , Synchrone = 0 , Parity = Even , Stopbits = 1 , Databits = 8 , Clockpol = 0
    Dim S As Byte , Count As Byte
    Declare Sub Datenpunkt
    Declare Sub Displaycls
    
    Do
    'Print Chr(&H02) ; Chr(&H43) ; Chr(&H41) ;                   'Display löschen
    Datenpunkt                                                  'Datenpunkt setzen
    Restore Dta2:
    For Count = 1 To 4
     Read S : Printbin S;
    Next
    Wait 2
    Loop
    
    'Sub Displaycls
    'Local C As Byte
    'Restore Cls1:
    'For Count = 1 To 3
    ' Read C : Print Chr(c);
    ' Next
    'End Sub
    
    Sub Datenpunkt
    Local A As Byte
    Restore Dta1:
    For Count = 1 To 5
     Read A : Printbin A;
     Next Count
     Wait 1
    End Sub
    
                                                                'Datentabelle
    Dta1:
    Data &H04 , &H53 , &H01 , &H00 , &H56                       '04 53 01 00 56
    Dta2:
    Data &H03 , &H50 , &H41 , &H12                              '03 50 41 12

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    17.09.2005
    Beiträge
    276
    selten so ein codegewurschtet gelesen.
    Mich wundert da nichts.

    Was genau soll Dein Prog
    Case of
    machen
    Können
    end ?

    Gento

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.08.2006
    Beiträge
    118

    re Ausgabe

    ich versuche einfach auf verschiedene Weise "Data" über die Schnittstelle
    auszugeben.Also lesen und ausgeben.Orginalgetreu!
    Wobei Dta2 hakt in der Simulation.Es werden später ca 50 Data's
    abgelegt.Aber wie gesagt ich habe einen Zahlendreher.

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    08.08.2006
    Beiträge
    118

    re Ausgabe

    Hallo Profis
    habe die Nacht durchgearbeitet und siehe da es läuft.
    Die Idee mit der Simulation war sehr gut.Es gibt nur noch ein Problem:
    Zum Schleifenende muss der zuletzt ausgegebene Wert gelöscht werden.
    Sicher keine grosse Sache mann muss es nur wissen.
    Anbei mal den Code in "Hochdeutsch".
    Vielleicht kann mal jemand die Werte in der Deklaretion kommentieren.
    Wurde aus Beispielen übernommen.



    Code:
    '-----------------------------------------------------------------------------------------
    'name                     : Display Nokia.bas
    
    'Programm Zur Ansteuerung Eines Miniterminals
    'zur Datenausgabe auf Nokia 3310 Display
    '-----------------------------------------------------------------------------------------
    
    $regfile = "attiny2313.dat"
    $crystal = 3686400
    $baud = 9600
    $hwstack = 32
    $swstack = 10
    $framesize = 40
    Config Serialout = Buffered , Size = 40
    Config Com1 = Dummy , Synchrone = 0 , Parity = Even , Stopbits = 1 , Databits = 8 , Clockpol = 0
    Dim Count As Byte
    Declare Sub Datenpunkt
    Declare Sub Displaycls
    Declare Sub Text
    
    '-----------------------------------------------------------------------------------------
    Do
                                                                'Hauptschleife
     Displaycls                                                 'Display löschen
     Datenpunkt                                                 'Datenpunkt setzen
     Text                                                       'Text
    'Platz für Hauptprogamm
    ' Wait 2
    Loop
    '-----------------------------------------------------------------------------------------
    
    Sub Displaycls                                              'Unterprogramm
    Local C As Byte                                             'Display löschen
    Restore Cls1:
    For Count = 1 To 3
     Read C : Printbin C;
     Next
    End Sub
    
    Sub Datenpunkt                                              'Unterprogramm
    Local A As Byte                                             'Datenpunkt setzen
    Restore Dta1:
    For Count = 1 To 5
     Read A : Printbin A;
     Next
    End Sub
    
    Sub Text                                                    'Unterprogramm
    Local B As Byte                                             'Text
    Restore Dta2:
    For Count = 1 To 4
     Read B : Printbin B;
     Next Count
    End Sub
    '-------------------------------------------------------------------------------------------
                                                                 'Datentabelle
    
    Cls1:
    Data &H02 , &H43 , &H41                                     '02 43 41
    Dta1:
    Data &H04 , &H53 , &H01 , &H00 , &H56                       '04 53 01 00 56
    Dta2:
    Data &H03 , &H50 , &H41 , &H12                              '03 50 41 12
    
    'und so weiter

Berechtigungen

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