Speichern großer Datenmengen

Für allgemeine Fragen zur Programmierung mit PureBasic.
RolandIV
Beiträge: 28
Registriert: 11.09.2004 13:33

Beitrag 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 
PB-Version: 3.90
RolandIV
Beiträge: 28
Registriert: 11.09.2004 13:33

Beitrag 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
PB-Version: 3.90
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
RolandIV
Beiträge: 28
Registriert: 11.09.2004 13:33

Beitrag 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
PB-Version: 3.90
Antworten