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:
......Bild hier
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) :
Danke im Voraus für die HilfeCode:'SCREEN 12 DIM fz(1999) 'In fz werden die Zeiten der Impulsflanken abgelegt ba = 760 '1016 ist die Basisadr. fr COM1, fr 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 drcken." 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 fr 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







Zitieren


Lesezeichen