Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Verlaufslinie

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Sippo



Anmeldungsdatum: 17.04.2008
Beiträge: 125

BeitragVerfasst am: 19.02.2011, 19:12    Titel: Verlaufslinie Antworten mit Zitat

Guten Tag liebes Forum,

ich programmiere derzeit ein Programm welches den aktuellen Verlauf einer Variablen in einem "Koordinatensystem" (hat keine Werte, kommt noch) anzeigen soll. Derzeit funktioniert das ganze so dass, das gesamte gecleant wird (CLS) sobald der hintere Rand erreicht ist. Besser wäre es nun beim erreichen des endes die Kennlinie 1 Pixel nach links zu verschieben und den ältesten Wert zu löschen. Hat mir jemand eine Idee wie ich die Kennlinie verschieben kann?

MfG Sippo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The_Muh
aka Mark Aroni


Anmeldungsdatum: 11.09.2006
Beiträge: 718

BeitragVerfasst am: 19.02.2011, 20:01    Titel: Antworten mit Zitat

Mit GET und PUT sollte das gehen...

einfach mal hier gucken:

GET (Grafik)

PUT (Grafik)

Wenn du nicht weiter weißt, schreib ich dir nen Beispiel, aber aktuell hab ich da keine lust zu zwinkern
_________________
// nicht mehr aktiv //
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sippo



Anmeldungsdatum: 17.04.2008
Beiträge: 125

BeitragVerfasst am: 19.02.2011, 20:03    Titel: Antworten mit Zitat

vielen Dank, werde ich bei Gelegenheit ausprobieren.
Sieht aber vielversprechend aus zwinkern

MfG Sippo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sippo



Anmeldungsdatum: 17.04.2008
Beiträge: 125

BeitragVerfasst am: 20.02.2011, 20:29    Titel: Antworten mit Zitat

Abend zusammen,

habe mich nun mal drangesetzt aber irgendwie mag das doch nicht so.
Das Programm stürtzt ab. In der Befehlsreferenz steht, dies geschieht, wenn der Bereich, welcher in GET angegeben wird auserhalb des Bildschirms liegt. Dies kann aber eigentlich nicht sein:

folgendes hab ich gemacht: (veraltet)
Code:

SCREEN 19,32,,&H01

...

Dim As Any Ptr bild ' Speicher für das Koordinatenfeld
bild = ImageCreate ( 674, 499 ) '(674X499) reservieren
 
...
do

...
    get (101,50)-(775,549), bild
    put (100,50), bild
    line (100,550)-(100,50),&hFFFFFF 'y-achse neu zeichnen
    line (775,550)-(775,50),&h000000 'letzte Spalte löschen
...

loop Until Inkey$ = Chr$(27) 

End


MfG Sippo

edit: gibts ne möglichkeit Beiträge zu löschen?
oder wird ein Thread auch als ungelesen angezeigt wenn man einen Beitrag nur editiert?

Edit2:

Mittlerweile stürzt es nicht mehr ab aber es Flackert als würde es ständig von neuem beginnen. (kleines Testprogramm)

Das behobene Problem war, dass der Puffer zu klein war (1 Pixel x und 1 Pixel für y)

Code:
SCREEN 19,32,,&H01

Dim As Any Ptr bild ' Speicher für das Koordinatenfeld
bild = ImageCreate ( 675, 500 ) '(675X500) reservieren

color &hFFFFFF,&h000000
    cls
    line (775,550)-(100,550),&hFFFFFF ' x achse
    line (100,550)-(100,50),&hFFFFFF ' y achse
'Testinhalt
color &hFFFF00,&h000000
line (101,51)-(774,549)

do
    get (101,50)-(775,549), bild
    put (100,50), bild
    line (100,550)-(100,50),&hFFFFFF 'y-achse neu zeichnen
    line (775,550)-(775,50),&h000000 'letzte Spalte löschen
    sleep 1000
loop Until Inkey$ = Chr$(27) 
   
End


Zuletzt bearbeitet von Sippo am 20.02.2011, 21:02, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 20.02.2011, 21:02    Titel: Antworten mit Zitat

Code:

bild = ImageCreate ( 674, 499 ) '(674X499) reservieren

Code:

get (101,50)-(775,549), bild


Zähl mal nach!

Edit: Flackern vermeidet man entweder mit mehreren Bildschirmseiten oder Screenlock/Screenunlock.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sippo



Anmeldungsdatum: 17.04.2008
Beiträge: 125

BeitragVerfasst am: 20.02.2011, 21:05    Titel: Antworten mit Zitat

Thx, das hatte ich im 2. Programm dann bereits behoben zwinkern

und nun scheint auch das andere Problem beseitigt. Ich bin davon ausgegangen schwarze Pixel würden mitkopiert werden und überschreiben die alten. Dies scheint wohl nicht der Fall zu sein.

Vielen Dank für die Hilfe,

MfG Sippo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
XOR



Anmeldungsdatum: 23.07.2010
Beiträge: 161

BeitragVerfasst am: 20.02.2011, 21:27    Titel: Antworten mit Zitat

wenn du statt
Code:
put (100,50), bild

Code:
put (100,50), bild, PSet

nimmst, werden alle pixel geschrieben
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sippo



Anmeldungsdatum: 17.04.2008
Beiträge: 125

BeitragVerfasst am: 20.02.2011, 22:36    Titel: Antworten mit Zitat

ah wunderbar thx
nun funktionierts bis auf ein paar kleinigkeiten wunderbar.

MfG Sippo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Sippo



Anmeldungsdatum: 17.04.2008
Beiträge: 125

BeitragVerfasst am: 02.03.2011, 23:07    Titel: Antworten mit Zitat

Guten Abend zusammen,
das Programm läuft nun mittlerweile ganz gut aber ich habe noch 2 Fragen zur verfeinerung.
1. Da die Datenmenge die empfangen werden soll erecht groß ist, das Programm nach möglichkeit aber immer den aktuellsten Wert anzeigen soll wäre es sinnvoll den Buffer vor dem Empfangen eines Datenpaketes zu leeren. Ist das irgendwie möglich? Also ich meine keinen Buffer meines Programms sondern einen welcher scheinbar alles speichert bis ich es auslese. Das merk ich derzeit daran, dass das Programm mit der Zeit immer weiter hinterherhinkt.

2. Gibt es eine Möglichkeit zu Prüfen, ob in diesem Buffer Zeichen empfangen wurden? Ich habe es ohne Erfolg so versucht:

Code:
if not EOF(1) then
        input #1, temp  'Aus COM - Schnittstelle auslesen
        WRITE #2, temp  ' IN Textdatei schreiben
end if


MfG Sippo
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz