Seite 4 von 4

Verfasst: 25.02.2007 21:45
von RolandIV
jo die funktion ist declared, der code wäre zu lange denke ich um den jetzt hier zu posten.

Array ist global, MESSDAUER auch.
der rest des programms ist eigentlich unwichtig... hat nix mit den operationen mehr zu tun!
Wenn es weiterhilft: der Compiler meckert mit dem StartDrawing(ScreenOutput()) meint der "the specified output is NULL"

allerdings läuft es so fehlerlos
habe alles so gelassen nur diesen codeschnippsel lauffähig gemacht.

Code: Alles auswählen

Declare Aufnahme()
InitSprite()
InitKeyboard()
InitMouse()
OpenScreen(800,600,32,"")
MESSDAUER=10000
Dim YWerte(MESSDAUER*80)
Repeat
    ExamineKeyboard() 
     ClearScreen(0,0,0)   
     StartDrawing(ScreenOutput())
       FrontColor(0,0,0)
       Locate(0,0)
       DrawText("Aufnahme-Modus [P]: "+Str(AUFNAHME_MODUS))
     StopDrawing()
       
    FlipBuffers()
   
    ;Starten/Beenden der Aufnahme   
          If KeyboardReleased(#PB_KEY_P)
            Select AUFNAHME_MODUS
              Case 0 ;Aufnahme wird nun gestartet
                AUFNAHME_MODUS=1
                thid=CreateThread(@Aufnahme(),0)
              Case 1 ;Aufnahme lief und wird nun beendet
                AUFNAHME_MODUS=0   
                KillThread(thid)
            EndSelect
          EndIf
  ;[...]
  Until KeyboardPushed(#PB_KEY_ESCAPE)

;[...]
Procedure Aufnahme()
   For a=0 To MESSDAUER*80
      ExamineMouse()
      YWerte(a)=MouseDeltaY()
   Next
EndProcedure 

Verfasst: 25.02.2007 22:13
von RolandIV
wenn ich in der schleife nur bis 100 oder 1000 zähle stürzt nichts ab. MESSDAUER hat den Wert 10000, also wird bis 80000 gezählt. Bei so größeren Werten stürzt das programm dann ab

Verfasst: 25.02.2007 22:21
von Kaeru Gaman
vielleicht stürzt das prog garnicht ab.
du hast hier ne lange schleife ohne delay, ohne timer, ohne alles.
wahrscheinlich hängt der einfach so lange in der schleife.
mach mal zumindest ein Delay(10) da rein.
außerdem ist das ja auch nicht worauf du hinaus willst,
du willst ja nicht innerhalb 2-3 minuten 80.000 werte messen,
sondern über 20h alle 50ms...

weiterhin gibt es gerade bei threads einige unterschiede von 3.9x auf 4.0x

btw ich hab keine 3.90 installiert, nur die 3.94...

Verfasst: 25.02.2007 22:57
von RolandIV
vielleicht brauche ich gar keine threads, da in meiner Lösung sowieso nur 3, 4 schwingungen ganz angezeigt werden, der rest ist "hinter" dem bildschirm verborgen und es werden nur zum vergleich auf der linken bildschirmleiste verschiedene schwingungsamplituden angezeigt, die zu verschiedenen zeitpunkten der sozusagen "gespeichert" worden sind. dann hat man einen vergleich zu früheren amplituden und das problem wäre gelöst