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

Thema: Print-Befehl von Bascom in C nachbauen

  1. #1
    Murus
    Gast

    Print-Befehl von Bascom in C nachbauen

    Anzeige

    Praxistest und DIY Projekte
    Hallo zusammen,

    ich muss ein älteres, von mir geschriebenes Programm (Bascom Basic) nach C portieren.
    Dabei habe ich Probleme beim Print-Befehl. Sprich: Ich kriege die Routinen dahinter in C nicht nachgebaut - es funktioniert nicht.
    Hier mal die Codeschnipsel:

    Der Ursprüngliche Bascom-Code:

    Code:
          
    For I = 1 To 42
    Print Sendefeld(i);                                   ' das Semikolon verhindert den Zeilenbruch, sonst verheddert sich der Empfänger
    Waitms 2
    Next
    Diesen Abschnitt gilt es in C nachzubauen. Momentan habe ich das hier:
    Code:
    void Displayrefresh(void) 
    {
    	for(uint8_t i = 0; i<=41; i++)
    	{
    		while (!(UCSRA & (1<<UDRE))) // Wait until Buffer is empty - ready to send.
    		{
    		}
    
    		UDR = Sendefeld[i];
    		_delay_ms(2);
    		
    	}
    	
    }
    Der Code wird auf ein und demselben Controller ausgeführt. Doch bei der C-Version stellt sich der Empfänger quer.
    Hintergrund: Der Empfänger (Mega empfängt ein 42 Stellen grosses Array (unsigned 8bit integer), welches er dann verarbeitet und auf einem Display (LED-Matrix) repräsentiert. Bei der Bascom-Version zeigt er das Array korrekt an. Bei der C-Version kommt zeigt er gar nichts an. Den Empfänger kann ich leider nicht ändern, ich muss die C-Version dazu bringen, sich wie die Bascom-Software zu verhalten...

    Hat jemand Ideen?

    Gruss
    Mario

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Bascom konvertiert "sendefeld" je nach Datentyp (DIM) in druckbare Zeichen, bzw. versucht es.

    Test: teile und herrsche: ändere mal
    UDR = Sendefeld[i];
    in
    UDR = 65;

    Jetzt müssten 41 "A"s auftauchen.

    Passiert das NICHT ---> hats was mit dem printen selbst
    Passiert das schon ----> hats was mit den Zeichen (bzw. mit dem Array)
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Murus
    Gast
    Hmm... stimmt...
    Ich übertrage nur die Zahlen 0 bis 3... Werde das Ganze mal als ASCII rüberdrücken, danke für den Tipp!

    Edit: Volltreffer, das wars!

    Vielen Dank

    Gruss
    Mario

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Wenn's so ist (0-3), reicht

    UDR = Sendefeld[i] + 0x30;


    durch diese hohle gasse muss er kommen
    es führt kein and'rer weg nach küsnacht
    hier vollend' ich's, die gelegenheit ist günstig
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad