mikrocontroller.net

Forum: PC Hard- und Software Wavedatei erzeugen


Autor: neuer (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, ich möchte eine Wave erstellen für den MPF-1 zum Laden von Daten.
Der Aufbau der Wav ist mir bekannt.
Meine Frage:
Müssen die Linien wie im Bild unten spitz sein oder können die wie oben 
(habe ich selber erstellt) rechteckig sein? um Daten zu übertragen.
Unten ist aus der originalen Datei der Daten.

Gruss

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Überleg mal scharf: WAV ist ein verlustfreies Audioformat.

Welchen Schluß kann man daraus für die damit aufzeichenbaren Signale 
ziehen?

Autor: neuer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das kann ich jetzt nicht auf die Linienform schliessen,
bei welcher Form jetzt verluste auftreten?

Gruss

Autor: Uhu Uhuhu (uhu)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es treten keine Verluste auf - das ist der Sinn des Wortes 
verlustfrei.

Autor: neuer (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Tut mir leid, erkenn ich nicht.

Dies ist das Aufzeichnungformat für 1 Byte bei 165 bps.
Oben bei der 1. Frage sind ja auf dem Bild unten diese Spitzen.
Kann ich jetz Programmtechnisch diese Rechtecke zum Senden der Daten 
verwenden wie hier auf der Vorlage vom MPF-1?

Gruss

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
neuer schrieb:

> Tut mir leid, erkenn ich nicht.

Ich erkenne auch keinen Zusammenhang zwischen deiner Frage und der 
Antwort.

> Dies ist das Aufzeichnungformat für 1 Byte bei 165 bps.
> Oben bei der 1. Frage sind ja auf dem Bild unten diese Spitzen.
> Kann ich jetz Programmtechnisch diese Rechtecke zum Senden der Daten
> verwenden wie hier auf der Vorlage vom MPF-1?

Ich würde sagen, ja. Die "Spitzen" sind wahrscheinlich auch nur durch 
einen begrenzten Frequenzgang verzerrte Rechtecke.

Autor: neuer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jup, danke. Hört sich Präzise an.

Gruss

Autor: Sebastian Hepp (sebihepp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Verschicken kannst du beide Kurven. Aber höre dir mal nacheinander beide 
an. Du solltest einen (sehr geringen) Unterschied hören.

Was genau hast du vor? Vielleicht können wir dir helfen, wenn wir 
darüber bescheid wissen?

Autor: neuer (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hexdaten für den MPF-1 umwandeln in eine Wav und dann per Band bzw über 
Pc übertragen zum MPF-1.

Da die Übertragung nicht sehr schnell ist, müsste man die anfertigen 
können.
Es sind 165 bps.

Hier sind die Übertragungsprotokolle.

Habe auch schon mit Purebasic einen Anfang gemacht mit 8000hz.

Gruss

Autor: neuer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier ist das Purebasicprogramm. Die Hexdatei ist 133byte gross.
Der Vergleich sieht schon gut aus.
Global *tonspeicher.l,tonlaenge.l,*datspeicher.l,datlaenge.l,adr_mem.l,wert.c,BytesPerSec.l
  Global adr_dat.l,uni.u,lo.c,hi.c,xx.l
  
  Declare bit_1()
  Declare bit_0()
  
  SetCurrentDirectory(GetPathPart(ProgramFilename()))
  
  InitSprite()
  InitSound()
 
  OpenWindow(0,0,0,800,600,"sound-test",#PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_ScreenCentered)
  OpenWindowedScreen(WindowID(0),10,10,350,300,0,0,0)
  
  text1=TextGadget(#PB_Any, 10,380,90,20, "Taste-Q") 
  
  ClearScreen(RGB(128,128,128))
  
  OpenFile(0,"dice2.hex")
  datlaenge=Lof(0) 
  *datspeicher= AllocateMemory(datlaenge) 
  ReadData(0, *datspeicher, datlaenge)
  CloseFile(0)
                       
  #samplerate = 8000
  #bitrate = 16                      
  #channels = 1  
  #secs = 20
  
  #breite=1                                                                      
 
  BytesPerSec = #channels*#bitrate/8*#samplerate  
  
  tonlaenge=BytesPerSec*#secs+44
  *tonspeicher= AllocateMemory(tonlaenge) 
  
  Repeat
    
    Event.l = WaitWindowEvent(2)
  
    If GetAsyncKeyState_(#VK_Q)   
      PokeS(*tonspeicher,"RIFF")     
      PokeL(*tonspeicher+4,36+BytesPerSec*#secs)        
      PokeS(*tonspeicher+8,"WAVE")  
      PokeS(*tonspeicher+12,"fmt ")  
      PokeL(*tonspeicher+16,16) 
      PokeW(*tonspeicher+20,1) 
      PokeW(*tonspeicher+22,#channels)          
      PokeL(*tonspeicher+24,#samplerate )  
      PokeL(*tonspeicher+28,BytesPerSec) 
      PokeW(*tonspeicher+32,#bitrate/8*#channels) 
      PokeW(*tonspeicher+34,#bitrate) 
      PokeS(*tonspeicher+36,"data")   
      PokeL(*tonspeicher+40,BytesPerSec*#secs) 
      
      adr_mem=44
      adr_dat=0
       
      For stt=0 To 3999 ;4sec 1khz
        For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
        Next
        For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
        Next
        For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
        Next
        For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
        Next
      Next
      
      uni=1   ;filenummer 2byte
      lo=uni & $00ff
      hi=uni & $ff00/256
      For i=0 To 7
        If (lo & (1<<i))
          bit_1()
        Else
          bit_0()
        EndIf
      Next i
      For i=0 To 7
        If (hi & (1<<i))
          bit_1()
        Else
          bit_0()
        EndIf
      Next i
      
      uni=$1800   ;startadresse $1800 2byte
      lo=uni & $00ff
      hi=uni & $ff00/256
      For i=0 To 7
        If (lo & (1<<i))
          bit_1()
        Else
          bit_0()
        EndIf
      Next i
      For i=0 To 7
        If (hi & (1<<i))
          bit_1()
        Else
          bit_0()
        EndIf
      Next i
      
      uni=$1800+datlaenge  ;endadresse $1800+datlaenge 2byte
      lo=uni & $00ff
      hi=uni & $ff00/256
      For i=0 To 7
        If (lo & (1<<i))
          bit_1()
        Else
          bit_0()
        EndIf
      Next i
      For i=0 To 7
        If (hi & (1<<i))
          bit_1()
        Else
          bit_0()
        EndIf
      Next i
      
      wert=0  ;checksumme 1byte
      For i=0 To 7
        If (wert & (1<<i))
          bit_1()
        Else
          bit_0()
        EndIf
      Next i
      
      For stt=0 To 3999 ;2sec 2khz
        For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
        Next
        For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
        Next
      Next
      
      For zz=0 To datlaenge-1 ;programmdaten
        wert = PeekB(*datspeicher+adr_dat)
        adr_dat +1
        
        For st=0 To 23 ;startbit 0
          For xx=0 To #breite
            PokeW(*tonspeicher+adr_mem,-32000)
            adr_mem + 2
          Next
        Next   
         
        For i=0 To 7 ;8bit daten
          If (wert & (1<<i))
            bit_1()
          Else
            bit_0()
          EndIf
        Next i
        
        For st=0 To 23 ;stopbit 1
          For xx=0 To #breite
            PokeW(*tonspeicher+adr_mem,32000)
            adr_mem + 2
          Next
        Next  
      Next
      
      For stt=0 To 3999 ;2sec 2khz
        For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
        Next
        For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
        Next
      Next
     
      CreateFile(0, "wavtest.wav")  
      WriteData(0,*tonspeicher,tonlaenge)
      CloseFile(0)
      
      CatchSound(0, *tonspeicher)
      PlaySound(0)  
    EndIf
     
  Until Event = #PB_Event_CloseWindow   

End 

Procedure bit_0()
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
          Next
 EndProcedure  
       
 Procedure bit_1()
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
          Next
          For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
          Next
EndProcedure

Autor: Sebastian Hepp (sebihepp)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay, also das Aussehen der Kurve ist egal. Das ist ja nur eine 
visualisierung der Tondaten.

Wenn dein MPF-1 die Wav-Datei empfangen und abspielen kann, sehe ich 
auch darin kein Problem.

Du liest einfach den Inhalt der Hex-Datei, wandelst in Wav um und 
schickst die Daten dann rüber. Danach kannst der MPF-1 sie abspielen. 
Informier dich nur im Vorraus darüber, welche Samplerate, Samplegröße, 
usw. der MPF-1 erwartet.

Wenn du während des Spielens die Daten übertragen möchtest, wird das 
dagegen nichts. Bei 165 Bit/Sekunde macht das etwa 20 Bytes/Sekunde und 
damit eine Samplerate von 10, wenn du 16 Bit Samplegröße benutzt. Du 
würdest nur noch ein mehr oder weniger schnelles Knacken hören.

Autor: neuer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich übertrage mit 8000hz, dementsprechend sind die Sound-Pokewerte.
Die Zeiten stimmen genau , wenn ich mit Audacity die Datei betrachtet.
Das heisst 1 bit in 6ms 10 bit 60ms usw.

Aber das Gerät nimmt nichts an.

Gruss

Autor: Route_66 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Diese Tonbandschnittstellen wurden früher an den Lautsprecherausgang 
eines Recorders angeschlossen. Der MPF-1 erwartet also Pegel im 
Voltbereich. Also wenn Deine Soundkarte diesae Pegel schafft, dann mal 
ordentlich "aufdrehen". Nach meiner Erfahrung wird aber meist ein 
Verstärker oder Trigger notwendig.
Rechtecksignal ist deshalb O.K.

Autor: neuer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe dafür einen Verstärker angeschlossen
Wenn ich die Demo-wav abspiele von der MPF-1-Seite, dann geht es ja.
Bloss die Demo-wav hat 44100hz.

Meine Abtastzeiten stimmen für 8000hz in ms.

Was ändert sich denn eigentlich bei 44100hz im Soundsystem?

Wenn ich da die Abtastzeiten prüfe im Audacity, habe ich auch 6ms pro 
bit auf der Anzeige, wie bei 8000hz, die ich in Purebasic herstelle.

Wenn ich jetz aber ein Programm aufnehme mit Audacity mit 8000hz vom 
MGF-1 dann kann ich diese Datei auch einwandfrei mit Audacity wieder 
fehlerfrei übertragen zum MPF-1. Also geht es auch mit 8000hz.

Gruss

Autor: Route_66 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Könnte es sein, daß das Startbit auch mit bit_0() und das Stopbit mit 
bit_1() codiert werden muß?

Autor: Route_66 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Könnte es sein, daß das Startbit auch mit bit_0() und das Stopbit mit
> bit_1() codiert werden muß?

...zumindest geht das aus dem Assemblerlisting des MPF-1 so hervor!

Du machst das Startbit aber einfach nur die Bitzeit (6ms) ständig LOW 
und das Stopbit die Bitzeit ständig HIGH.

Autor: neuer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hatte heute das Startbit(0) und Stopbit(1) gesetzt, ging auch 
nicht(siehe unten).
Werde es mal so umbauen, wie du gesagt hast.
Danke für den Vorschlag.
Das Listing oben stimmt nicht mehr.

...zumindest geht das aus dem Assemblerlisting des MPF-1 so hervor!

Spielst du auch mit so einem Ding?



uni=1   ;filenummer 2byte
      lo=uni & $00ff
      hi=uni & $ff00/256
      
      For st=0 To #stasto ;startbit 0
        For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
        Next
      Next   
      For i=0 To 7
        If (lo & (1<<i))
          bit_1()
        Else
          bit_0()
        EndIf
      Next i
      For st=0 To #stasto ;stopbit 1
        For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
        Next
      Next  
      
      For st=0 To #stasto ;startbit 0
        For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,-32000)
          adr_mem + 2
        Next
      Next     
      For i=0 To 7
        If (hi & (1<<i))
          bit_1()
        Else
          bit_0()
        EndIf
      Next i
      For st=0 To #stasto ;stopbit 1
        For xx=0 To #breite
          PokeW(*tonspeicher+adr_mem,32000)
          adr_mem + 2
        Next
      Next   

Autor: Route_66 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast nicht ganz verstanden, wie ich es meinte!

Statt

>        For st=0 To 23 ;startbit 0
>          For xx=0 To #breite
>            PokeW(*tonspeicher+adr_mem,-32000)
>            adr_mem + 2
>          Next
>        Next

sollst Du nur

            bit_0()

schreiben und statt

>      For st=0 To 23 ;stopbit 1
>          For xx=0 To #breite
>           PokeW(*tonspeicher+adr_mem,32000)
>            adr_mem + 2
>          Next
>        Next
>      Next

nur

            bit_1()

und nicht mehr!

...und
> Spielst du auch mit so einem Ding?
nein aber ich stamme noch aus einer Generation, wo man gewohnt ist jedes 
Bit im Prozessor persönlich zu kennen.

Viel Erfolg

Autor: neuer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt wird schon die Startadresse angezeigt, nur bei den letzten Bytes 
kommt ein "ERR".
Dein Tip war richtig.

"22.02.2010 18:21 Bild oben", ich weiss nur nicht wie das ChkByte 
aussieht , habe jetzt erstmal "0" gesetzt.

Gruss

Autor: Route_66 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

> ich weiss nur nicht wie das ChkByte
> aussieht , habe jetzt erstmal "0" gesetzt.

Hier der Link zum Assemblerlisting. Da kannst Du Dir das mal raussuchen.
VielleichIch finde ich auch etwas Zeit...

http://electrickery.xs4all.nl/comp/mfp1/doc/info.html

Autor: Route_66 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo noch mal. Die Checksumme ist einfach die 8-Bit-Summe aller Bytes 
im Datenbereich, also zwischen den beiden 2kHz Tönen.

Autor: neuer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Checkbyte ist nur 1 Byte gross und ich kann über 256 byte in den 
Speicher schreiben. Wie soll da die Summe rein?

Siehe "22.02.2010 18:21 " oben das Bild vom gesamten Header.

Gruss

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na, halt nur die unteren 8 Bit der Summe.

Autor: neuer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also les ich das so:
Jedes Datenbyte addieren und von der Summe das untere Byte nehmen als 
Checkbyte?

Gruss

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So funktioniert eine 8-Bit-Prüfsumme.

Autor: neuer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jup, danke.

jetzt läuft alles.

Kann jetzt mit dem Purebasic-Programm Binär-Bytes in Wav umwandeln und 
in den MPF-1 einladen.
Laufen alle fehlerfrei.

Gruss

Autor: Guido (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi, kannst du das entgültige funktionierende Programm hier posten?
Wäre super :)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.