Seite 2 von 2

Verfasst: 22.01.2006 22:33
von Alex
hier kommt mein code
Bitte nicht lachen...


Code: Alles auswählen

  Global medium
  Global medium_auswahl
  Global M.f
  Global p0.f
  Global t0.f
  Global pe.f
  Global Mi.f
  Global p0i.f
  Global t0i.f
  Global pei.f
  Global ro1.f
  Global Xcr.f
  Global X.f
  Global kappahilfswert.f
  Global ng.f
  Global Lw
  Global kappa.f
  Global ro.f
  Global ng.f
  Global G1.f
  Global G2.f
  Global Image0
  Global Image1
  Global Image2
  Global Pmagnus.f

  
 Procedure metric()
  SetGadgetText(23, "kg/s")
  SetGadgetText(24, "bar")
  SetGadgetText(25, "°C")
  SetGadgetText(26, "bar")
    Mi.f=M*3600
    p0i.f=p0
    t0i.f=t0+274.15
    pei.f=pe
EndProcedure
 
 Procedure empiric()
  SetGadgetText(23, "lb/hr")
  SetGadgetText(24, "psi")
  SetGadgetText(25, "°F")
  SetGadgetText(26, "psi")
    Mi.f=M*0.453592
    p0i.f=p0*0.0689476
    t0i.f=(5/9)*(t0-32)+273.15
    pei.f=pe*0.0689476   
 EndProcedure

Procedure calc()
 medium_auswahl = GetGadgetState(16)
  M.f = ValF(GetGadgetText(7))
  p0.f = ValF(GetGadgetText(8))
  t0.f = ValF(GetGadgetText(9))
  pe.f = ValF(GetGadgetText(10))
  units= GetGadgetState(18) 
  If units = 1 
      metric()
      Else
      empiric()
  EndIf
  
  
  ;------------ Valve Values
  
                XT.f=0.7
                G1.f=-3
                G2.f=0.8
  
  ;------------ Gas Values
  
          ;- Air
                If medium_auswahl = 0
                  ro.f=1.293
                  kappa.f=1.402           
          ;- CO2
                 ElseIf medium_auswahl = 1
                  ro.f=1.965
                  kappa.f=1.289
           ;- He
                  ElseIf medium_auswahl = 2
                  ro.f=0.179
                  kappa.f=1.666          
           ;- CH4
                  ElseIf medium_auswahl = 3
                  ro.f=0.716
                  kappa.f=1.319            
            ;- N2
                 ElseIf medium_auswahl = 4
                  ro.f=1.251
                  kappa.f=1.400              
            ;- O2
                 ElseIf medium_auswahl = 5
                  ro.f=1.429
                  kappa.f=1.400               
            ;- H2O
                 ElseIf medium_auswahl = 6
                  ro.f=0.804
                  kappa.f=1.3
                              Pmagnus.f = (6.1*Pow(10,(((7.5*t0.f)/(t0.f+235.15)))))/1000
                             If p0i.f >= Pmagnus.f
                             liquid=1
                             Else
                             liquid=0
                             EndIf
                  
            ;- H2SO3
                 ElseIf medium_auswahl = 6
                  ro.f=1.522
                  kappa.f=1.33
                 EndIf

                        
    
  
  ro1.f=ro.f*(p0i.f*273*1)/(1.013*t0i.f)
  X.f=(p0i.f-pei.f)/p0i.f
  Xcr.f=1-(Pow((2/(kappa.f+1)),((kappa.f/(kappa.f-1))*1.9*1*XT.f)))
  Fx.f=1
  kappahilfswert.f=Log((1-X.f))/(Log(1-Xcr.f))
  ng.f=Pow(10,G1.f)*Pow(kappahilfswert.f,G2.f)
  
  
  Lw=134.4+10*Log10(Mi.f)+10*Log10(kappa.f/(kappa.f+1))+10*Log10(p0i.f/ro1.f)+10*Log10((Log(1-X.f))/(Log(1-Xcr.f)))+10*Log10(ng.f)
    
    
    If Lw<70
          Lw$="###"
          SetGadgetText(13, Lw$) 
          Else
          Lw$=Str(Lw)
          SetGadgetText(13, Lw$)
     EndIf
     
  If liquid=1
          Lw$="###"
          SetGadgetText(13, Lw$) 

     EndIf
  
  If t0i.f>900
          Lw$="###"
          SetGadgetText(13, Lw$) 

     EndIf
 
 
 
 
  
 EndProcedure
start:
 Procedure main()
   
 OpenWindow(1, 445, 100, 510, 220,  #PB_Window_SystemMenu | #PB_Window_TitleBar , "Valve Noise Estimator 1.0 (for compressible fluids) ")
    
    
            ;#-If CreateMenu(0, WindowID()) 
        ;#---MenuTitle("Info...") 
        ;#-MenuItem(30, "About...")
        ;#-EndIf
    
    
    If CreateGadgetList(WindowID())
    
     ImageGadget(1, 0, 0, 1, 1, Image0)  
     ImageGadget(35, 25, 43, 42, 81, Image2)
     
      TextGadget(2, 441, 126, 29, 20, "dB(A)", #PB_Text_Center)
      TextGadget(3, 30, 124, 100, 15, "valve inlet pressure", #PB_Text_Right)
      TextGadget(4, 13, 150, 117, 15, "valve inlet temperature", #PB_Text_Right)
      TextGadget(5, 23, 175, 106, 15, "valve outlet pressure", #PB_Text_Right)
      TextGadget(6, 85, 100, 45, 15, "capacity", #PB_Text_Right)
      StringGadget(7, 140, 95, 60, 20, "")
      StringGadget(8, 140, 120, 60, 20, "")
      StringGadget(9, 140, 145, 60, 20, "")
      StringGadget(10, 140, 170, 60, 20, "")
      ;#---TextGadget(11, 103, 9, 370, 35, "Safety Valve Noise", #PB_Text_Center)
      SetGadgetFont(12, FontID1)
      TextGadget(13, 376, 121, 54, 20, "###", #PB_Text_Center | #PB_Text_Border)
      ;#---ButtonGadget(15, 130, 220, 305, 15, "www.vent-silencer.com", #PB_Text_Center)
      
   
      ComboBoxGadget(16, 140, 65, 120, 200)
        AddGadgetItem(16,-1,"Air (dry)")
        AddGadgetItem(16,-1,"Carbondioxide [CO2]")
        AddGadgetItem(16,-1,"Helium [He]")
        AddGadgetItem(16,-1,"Methane [CH4]")
        AddGadgetItem(16,-1,"Nitrogen [N2]")
        AddGadgetItem(16,-1,"Oxigen [O2]")
        AddGadgetItem(16,-1,"Steam [H2O]")
        AddGadgetItem(16,-1,"Vapour [H2O]")
       
                SetGadgetState(16,6)
                medium_auswahl = GetGadgetState(16)
                
      TextGadget(17, 89, 70, 41, 15, "medium", #PB_Text_Right)
      OptionGadget(18, 279, 70, 21, 15, "")
      SetGadgetState(18,1)
      OptionGadget(19, 370, 70, 15, 15, "")
      TextGadget(20, 299, 70, 72, 15, "metric units")
      TextGadget(21, 390, 70, 88, 15, "english units")
      TextGadget(22, 259, 125, 103, 15, "sound power level", #PB_Text_Right)
      TextGadget(23, 204, 100, 36, 15, "kg/s")
      TextGadget(24, 206, 124, 36, 15, "bar")
      TextGadget(25, 207, 150, 36, 15, "°C")
      TextGadget(26, 208, 175, 36, 15, "bar")
      ;# ButtonImageGadget(30, 460, 185, 25, 25, UseImage(1))
      Frame3DGadget(28, 255, 100, 250, 63, "")
      
      
      EndIf 
      
   
EndProcedure
main()
        
Procedure about()
 OpenWindow(2, 398, 258, 490, 400, #PB_Window_TitleBar , "About...")
    If CreateGadgetList(WindowID())
      TextGadget(31, 165, 25, 160, 15, "Valve Noise Estimator 1.0", #PB_Text_Center | #PB_Font_Bold )
     
      
      ListViewGadget(30, 30, 65, 435, 255)

      AddGadgetItem (30,-1,"   ")
      AddGadgetItem (30,-1,"                                                                                      copyright GLAUNACH GMBH 2006")
      ButtonGadget(32, 215, 340, 65, 35, "OK")
     
     EndIf


  Repeat           
        EventID = WaitWindowEvent() 
        WindowID = EventWindowID()
                                      
        Select EventGadgetID()
            
      Case 32
          CloseWindow(2)
          Goto start

        
        EndSelect
         
            Until WaitWindowEvent()=#PB_Event_CloseWindow
        

   EndProcedure

Procedure run()

  Repeat           
        EventID = WaitWindowEvent() 
        WindowID = EventWindowID()
                                      
        Select EventGadgetID()
            
            Case 7
                calc()      
             
            Case 8
                calc()      
             
              Case 9
                calc()      
             
              Case 10
                calc()      
                    
               Case 16
                calc()      
             
              Case 18
                calc()
                
              Case 19
                calc()  
                
              Case 14
               calc()
      
              Case 30
               about()
                
         EndSelect 
        
    Until WaitWindowEvent()=#PB_Event_CloseWindow
   End
EndProcedure
run() 

Verfasst: 22.01.2006 22:33
von roherter
Außerdem könntest du den schließen Knopf auch in einem Callback abfragen so in etwa!

Code: Alles auswählen

Procedure closeCallBack(Window,Message,lParam,wParam) 
  Result = #PB_ProcessPureBasicEvents 
  Select Window.l         
    Case WindowID(#Window_0)
      Select Message 
        Case #WM_CLOSE 
          End 
      EndSelect         
  EndSelect 
  ProcedureReturn Result 
EndProcedure 
Muste natürlich noch anpassen und über setcallback() aufrufen!

Verfasst: 22.01.2006 22:57
von ts-soft
DD hat recht gehabt :wink:

Code: Alles auswählen

Procedure run()

  Repeat           
      EventID = WaitWindowEvent()
      WindowID = EventWindowID()
      If EventID = #PB_Event_Gadget                             
        Select EventGadgetID()
           
            Case 7
                calc()     
             
            Case 8
                calc()     
             
              Case 9
                calc()     
             
              Case 10
                calc()     
                   
               Case 16
                calc()     
             
              Case 18
                calc()
               
              Case 19
                calc() 
               
              Case 14
               calc()
     
              Case 30
               about()
               
         EndSelect
       EndIf
    Until EventID=#PB_Event_CloseWindow
   End
EndProcedure
run() 
Hab jetzt nicht nach weiteren Fehlern gesucht, aber das doppelte WaitWindowEvent() scheints gewesen zu sein

// Nachtrag:
Hab den von HeXOr bemerkten Fehler jetzt auch noch beseitigt !

Verfasst: 22.01.2006 23:02
von HeX0R
EventGadgetID() darf man auch erst auswerten, wenn sichergestellt ist, dass WaitWindowEvent() ein #PB_Event_Gadget zurückgibt!

Verfasst: 22.01.2006 23:05
von Alex
@ts-soft
Danke ! Danke ! Danke !

Ich glaub' so gehts :-)

Verfasst: 22.01.2006 23:09
von Falko
Du musst dich bei DarkDragon bedanken :mrgreen:

Verfasst: 22.01.2006 23:16
von Alex
Mein besonderer Dank gilt natürlich DarkDragon - und allen anderen die sich meiner angenommen haben.

Programieren kann ja so einfach sein ;-)