-         

Ergebnis 1 bis 3 von 3

Thema: Qbasic-Grafik von IR-Codes unter WinXP

  1. #1
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.551

    Qbasic-Grafik von IR-Codes unter WinXP

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Aufgabenstellung/Stand: Zum Test von IR-Fernbedienungen bzw für Aufnahme und Analyse der gesendeten Codes verschiedener Fernbedienungen habe ich ein QBasicProgramm entdeckt, das recht praktisch parameterisierbar ist und den gesendeten Code visualisiert:
    ......

    Das Programm schaltet den Bildschirm auf Vollbildmodus und zeigt darauf die Grafik.

    Frage/Problem: Für Dokumentationszwecke würde ich gerne statt des Vollbildmodus den "kleinen" Bildschirm des Kommandozeilenmodus haben, weil der große Bildschirm mit der windowseigenen Capturefunktion nicht "druckbar" ist. Natürlich wäre es redlicher mich in Qbasic einzuarbeiten, aber vielleicht unterstützt jemand meine Faulheit und gibt mir einen Tip ob und evtl. wie ich die Grafik auf den kleinen Teilbildschirm bekomme. Zusatzfrage: ist die Aufgabenstellung/Grafikdarstellung am kleinen Bildschirm-Fenster überhaupt lösbar?

    Danke im Voraus.

    Der aktuell bei mir auf WinXP laufende Code (Qbasic 7.1, wird als *exe gestartet) :

    Code:
    'SCREEN 12
    DIM fz(1999)          'In fz werden die Zeiten der Impulsflanken abgelegt
    ba = 760              '1016 ist die Basisadr. fr COM1, fr COM2 ist sie 760
    ein% = ba + 6         'damit man in der Schleife nicht rechnen muss
    OUT ba + 4, 1         'DTR einschalten zur Stromversorgung
    t = TIMER                       'Der TSOP braucht nach dem Einschalten etwas
    DO: LOOP WHILE TIMER - t < .25  'Zeit bis er den Ausgang auf high legt
    OUT 67, 20            'TImer 0, nur LSB, Modus 2
    OUT 64, 0             'Timer initialisieren
    eingabe:
    CLS
    INPUT "Dauer der Aufzeichnung in ms (1-1000) "; ms
    IF ms < 1 OR ms > 1000 THEN GOTO eingabe
    LOCATE 20, 1
    PRINT "Jetzt eine Taste der Fernbedienung drcken."
    LOCATE 13, 1
    PRINT "Eine Einheit ="; ms / 50; "ms"
    tmax = ms * 1193.182    'Der Timer zaehlt mit 1193182 Hz
    tg = 0                  'tg ist die Gesamtzeit des Messvorgangs
    burst% = 0              'burst% zaehlt die Flanken des Signals
    FOR x = 0 TO 639 STEP 12.8                'Hier wird das
     IF x MOD 64 = 0 THEN f = 7 ELSE f = 8    'Raster gezeichnet
     LINE (x, 180)-(x, 140), f
    NEXT
    LINE (0, 140)-(639, 180), 8, B
    DO                                    'Dann wird gewartet,
     ialt% = INP(ein%) AND 16             'bis der TSOP-Ausgang und
     talt% = INP(64)                      'damit CTS das erste mal auf
    LOOP WHILE ialt% = 16                 'low gehen
    DO                                    'Beginn der Zeitmessung
     DO
      i% = INP(ein%) AND 16               'Status von CTS einlesen
      t% = INP(64)                        'Stand des Timerregisters lesen
      dt% = talt% - t%                    'Systemtakte seit der letzten Messung
      IF dt% < 0 THEN dt% = dt% + 256     'Ausgleich des Ueberlaufs
      tg = tg + dt%                       'Zeitdifferenz zur Geasmtzeit addieren
      talt% = t%                          'Zeit fuer naechsten Durchlauf merken
     LOOP WHILE i% = ialt%                'Auf Signalflanke warten
     ialt% = i%                           'Bei 0-1-Wechsel auf 1-0 und umgekehrt
     fz(burst%) = tg                      'Zeitpunkt der FLanke merken
     burst% = burst% + 1                  'Zahl der Flanken um eins erhoehen
    LOOP WHILE tg < tmax                  'Ausfuehren bis zur vorgegebenen Zeit
    y = 160                               'Startwerte fr die Grafik
    xa = 0
    FOR x = 0 TO burst% - 1               'Anzeige des aufgezeichneten
     xb = 640 * fz(x) / tmax              'Signals
     FOR xl = xa TO xb
      LINE (xl, 180)-(xl, y), 2
     NEXT
     xa = xb
     IF y = 160 THEN y = 180 ELSE y = 160
    NEXT
    LOCATE 20, 1                         'Menu
    PRINT "(1) Neue Messung                             "
    PRINT "(2) Ende"
    DO
    t$ = INKEY$
    LOOP UNTIL t$ = "1" OR t$ = "2"
    IF t$ = "1" THEN GOTO eingabe
    OUT 1020, 0                         'DTR ausschalten
    Danke im Voraus für die Hilfe
    Ciao sagt der JoeamBerg

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    17.09.2004
    Alter
    32
    Beiträge
    647
    Mach mal das ' vor dem screen befehl weg.
    Dann müsstest du ein fenster von 80 spalten mal 30 zeilen haben. Wenn dir ds nicht reicht kannst du mit...
    Code:
    WIDTH 80,60
    ... direkt unter dem screen befehl noch auf 80*60 umstellen.

    Ansonsten such mal nach "basic screenmodes"

    Gruss daniel
    Unser Sommer ist ein grün angestrichener Winter. Das einzige reife Obst, das wir haben, sind gebratene Äpfel. [Heinrich Heine]

  3. #3
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.551
    Hi Daniel,

    danke für die Hilfe. Die auskommentierte Zeile SCREEN 12 habe ich wieder aktviert, das ergibt die volle Bildschirmauflösung - also die Darstellungsvariante Vollbildschirm, die ich schon habe und die ich ändern will. Andere Werte wie 9 oder 13 (nach diversen Tutorials) ergeben "falsche" Bildschirmgrössen, offenbar diverse Herstellervarianten. Lediglich der Modus 0
    SCREEN 0
    macht das was ich will, allerdings läuft dann die Kästchengrafik nicht:

    ......Klicke auf die Grafik für eine größere Ansicht

Name:	screen-mode-0.jpg
Hits:	9
Größe:	22,4 KB
ID:	18884
    es gibt die oben genannte Fehlermeldung und das Programm ist abgestürzt. Also nach Deinem Vorschlag und auch nach dem Durcharbeiten der Tutorials (danke für den Hinweis zum Suchen) bekomme ich es nicht hin. Offenbar ist die verwendete Grafikvariante im DOSfenster nicht machbar - schade.
    Ciao sagt der JoeamBerg

Ähnliche Themen

  1. AVR über LPT brennen / Problem mit WinXP?
    Von Plasmagerd im Forum AVR Hardwarethemen
    Antworten: 5
    Letzter Beitrag: 17.03.2008, 14:18
  2. Antworten: 11
    Letzter Beitrag: 27.01.2007, 07:04
  3. LPT Port unter QBasic
    Von Michael 123 im Forum Elektronik
    Antworten: 8
    Letzter Beitrag: 26.06.2005, 19:35
  4. Probleme mit avrdudue4.4 unter WinXp
    Von Räuber Hotzenplotz im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 17.04.2005, 11:47
  5. QBasic Programierhilfe
    Von Michael 123 im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 4
    Letzter Beitrag: 09.04.2005, 11:44

Stichworte

Berechtigungen

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