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:

Stoppuhr über druckerport

 
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
möp



Anmeldungsdatum: 18.01.2007
Beiträge: 6

BeitragVerfasst am: 18.01.2007, 17:27    Titel: Stoppuhr über druckerport Antworten mit Zitat

für meinen facharbeitversuch hab ich ein kleines Programm geschrieben

hier erstmal der code:
Code:

 f = FREEFILE
    OPEN "file.txt"  FOR append AS #f


startzeit#=0
i=0
               

DO WHILE INKEY$ = ""
 InByte% = INP(&H378+1)       
 LOCATE 14, 29
 IF (InByte% AND 64) = 0 THEN
     if i=0 then
            i=1
            Endzeit# = TIMER
            Intervall# = Endzeit# - Startzeit#
            PRINT Intervall#

    write #f, intervall#


            Startzeit# = TIMER
        end if
else
    i=0
    end if
LOOP
    CLOSE #f


das ganze programm soll bei jedem kontakt von pin 10 mit masse ne stoppuhr starten und bei erneutem kontakt stoppen, die zeit speichern und die neue messung starten

funktioniert auch soweit
wenn ich nun aber zum testen den kontakt ein paar mal öffne und schließe und anschließend die gestoppten zeiten nach größe sortiere erhalt ich folgendes diagramm:
http://www.transistornet.de/download.php?id=987

sprich ich hab immer ein sprung bei den messungen

wie kann ich denv ermeiden?

schonmal vielen dank für alle antworten
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 18.01.2007, 19:02    Titel: Re: Stoppuhr über druckerport Antworten mit Zitat

möp hat Folgendes geschrieben:
funktioniert auch soweit
Erstma Willkommen im Forum..
1. hier mal in einer für mich lesbaren Form der
Code:
Option Explicit
Dim As Long i=0, InByte, Datei=FreeFile
Dim As Double Startzeit=0, Endzeit, Intervall
Open "file.txt" For Append As #Datei
Do While Inkey=""
  InByte=Inp(&H378+1)       
  Locate 14, 29
  IF (InByte% And 64)=0 Then
    If i=0 Then
      i=1
      Endzeit=Timer
      Intervall=Endzeit-Startzeit
      ?Intervall
      ?#Datei, Intervall
      Startzeit=Timer
    End If
  Else
    i=0
  End If
Loop
Close #Datei

2. mit welchem Compiler 'funktioniert' dieses Programm?
(FB0.16bSE meldet einen Read-Fehler wasweißichdennwo)
3. ich werde mich nicht in deinem Forum anmelden, um dein
Bild anzusehen, lager es einfach bei www.fileanchor.com oder sonstwo frei zugänglich..
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
möp



Anmeldungsdatum: 18.01.2007
Beiträge: 6

BeitragVerfasst am: 18.01.2007, 22:42    Titel: Antworten mit Zitat

hallo
vielen dank für deine antwort

ups
wegen dem bild dacht ich , dass mans auch ohne anmeldung sehn kann
außerdem is es net mein forum zwinkern

nun zum thema
als compiler hab ich den von http://www.freebasic.net/ verwendet

mitlerweile habe ich rausgefunden, dass es am timer liegt

wenn ich das programm unter windows in ner dos-box aufen lass hat der timer min 6 nachkommastellen

wenn ich das programm jedoch unter dos start hat der timer nurnoch 2 nachkommastellen
also maximal auf 10ms genau

gibts da ne lösung dafür?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 19.01.2007, 00:40    Titel: Antworten mit Zitat

möp hat Folgendes geschrieben:
wegen dem bild dacht ich , dass mans auch ohne anmeldung sehn kann
..falsch gedacht happy
möp hat Folgendes geschrieben:
als compiler hab ich den von http://www.freebasic.net/ verwendet
Welchen denn ?0.13??
(Wenn du im FB-Verzeichnis an einer Eingabeaufforderung fbc -version eingibst, erhältst du die Antwort..)
möp hat Folgendes geschrieben:
mitlerweile habe ich rausgefunden, dass es am timer liegt
..aber wie, wenn das Programm unter FB0.16b abstürzt?
möp hat Folgendes geschrieben:
wenn ich das programm unter windows in ner dos-box aufen lass hat der timer min 6 nachkommastellen
Timer liefert Double's s. Befehlsreferenz
möp hat Folgendes geschrieben:
wenn ich das programm jedoch unter dos start hat der timer nurnoch 2 nachkommastellen
Hilfreich wären hier Angaben zu Hardware und verwendetem OS
'unter dos start', vllt Win95?(@möp, nicht böse sein, ist ein Gag für Insider..)
[Edit]
Dreckfuhlerbereinigung.. happy
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..

Zuletzt bearbeitet von ytwinky am 19.01.2007, 10:07, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 19.01.2007, 09:32    Titel: Antworten mit Zitat

möp hat Folgendes geschrieben:

als compiler hab ich den von http://www.freebasic.net/ verwendet

vor lachen auf dem Boden rollen
Sorry, aber das is' auch die einzigste Seite, wo du den runterladen kannst. zwinkern Nur ist's so, dass sich FB in ständiger Bewegung befindet und deshalb auch mal Kompatiblitätsprobleme in unterschiedlichen FB-Versionen auftreten. Deswegen wäre die genaue Version hier wirklich wichtig. lächeln
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
möp



Anmeldungsdatum: 18.01.2007
Beiträge: 6

BeitragVerfasst am: 19.01.2007, 11:22    Titel: Antworten mit Zitat

ytwinky hat Folgendes geschrieben:
möp hat Folgendes geschrieben:
wegen dem bild dacht ich , dass mans auch ohne anmeldung sehn kann
..falsch gedacht happy
möp hat Folgendes geschrieben:
als compiler hab ich den von http://www.freebasic.net/ verwendet
Welchen denn ?0.13??
(Wenn du im FB-Verzeichnis an einer Eingabeaufforderung fbc -version eingibst, erhältst du die Antwort..)
möp hat Folgendes geschrieben:
mitlerweile habe ich rausgefunden, dass es am timer liegt
..aber wie, wenn das Programm unter FB0.16b abstürzt?
möp hat Folgendes geschrieben:
wenn ich das programm unter windows in ner dos-box aufen lass hat der timer min 6 nachkommastellen
Timer liefert Double's s. Befehlsreferenz
möp hat Folgendes geschrieben:
wenn ich das programm jedoch unter dos start hat der timer nurnoch 2 nachkommastellen
Hilfreich wären hier Angaben zu Hardware und verwendetem OS
'unter dos start', vllt Win95?(@möp, nicht böse sein, ist ein Gag für Insider..)
[Edit]
Dreckfuhlerbereinigung.. happy
Gruß
ytwinky


compiler hab ich auch den 0.16b verwendet
läufz bei mir unter windows, wie auch unter dos

hab auch schon die ganzen variablen rund um den timer als double deklariert, hat aber nix genützt
werds aber nochmal probiern

bisher hab ich nur ne startduskette bei xp erstellt und mit der gebootet umd des programm zu testen
werd heut aber nen rechner mit freedos aufziehen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
möp



Anmeldungsdatum: 18.01.2007
Beiträge: 6

BeitragVerfasst am: 19.01.2007, 12:42    Titel: Antworten mit Zitat

ok hilft auch nix der timer hatweiter nur 2 nachkommastellen also nur auf 10ms genau

Code:

DO
      print timer
LOOP WHILE INKEY = ""


auch bei diesem mini code

gibts irgendwie die mnöglichkeit einen genaueren timer zu erhalten?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 19.01.2007, 15:07    Titel: Antworten mit Zitat

Hi,
das klingt so als würde nur der alte DOS-Ticker im 56ms Takt benutzt.
Es sollte aber der time-stamp-counter der CPU abgefragr werden, der mit der CPU-Taktfrequenz betrieben wird und auch µsek anzeigen kann??
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
möp



Anmeldungsdatum: 18.01.2007
Beiträge: 6

BeitragVerfasst am: 19.01.2007, 15:21    Titel: Antworten mit Zitat

das kann gut sein
zum time-stamp-counter hab ich diesen code gefunden:

Code:
 
Function ReadTSC() As uLongInt
   Asm
     rdtsc
     mov [function], eax
     mov [function+4], edx
   End Asm
 End Function


wie kann ich das in meinen code einbauen?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 19.01.2007, 15:48    Titel: Antworten mit Zitat

Statt TIMER rufst du ReadTSC auf (statt mit double mit ulongint Variablen).
Dann sind aber die 'Zeiten' als Anzahl der vergangenen Taktzyklen angegeben.
Um diese in Sekunden zu erhalten müsste man die Werte durch die Taktfrequenz der CPU teilen (t= 1/f).
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
möp



Anmeldungsdatum: 18.01.2007
Beiträge: 6

BeitragVerfasst am: 19.01.2007, 21:36    Titel: Antworten mit Zitat

von functions hab ich absolut keine ahnung
wie ruf ich die auf?

Code:
 call readtsc(a)


so?
und dann schreibt er den wert von readtsc in die variable a???

ihr seht ich hab ka grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Michael712
aka anfänger, programmierer


Anmeldungsdatum: 26.03.2005
Beiträge: 1593

BeitragVerfasst am: 19.01.2007, 22:54    Titel: Antworten mit Zitat

Nein, das geht so:

Code:

Dim bla As UlongInt

bla =  ReadTSC
Print "Ergebnis: ";bla


http://www.freebasic.net/wiki/wikka.php?wakka=KeyPgFunction
Da stehe noch eine "kurze" Anleitung, die Beispiele kannst du dir mal angucken zwinkern
_________________
Code:
#include "signatur.bi"
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail 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