Page 1 sur 1

Débit Réseau

Publié : mar. 07/juin/2005 21:48
par Droopy
Ce code necessite ma lib ( Droopy Lib )

La première fois que vous lancerez le programme,
il vous demandera le fichier source et le fichier de destination.

( Ces paramètres sont stockés dans le répertoire de lancement de l'exe dans un fichier INI )

[img]http://purebasic.myftp.org/files/67/Déb ... Réseau.JPG[/img]


Le code source et l'exe sont fournis dans le fichier Zip

DOWNLOAD

Code : Tout sélectionner

; PureBasic 3.93
; Droopy 06/06/05

;{- Constantes
#Moyen=1.5
#Haut=3
#Full=10
#NbDeBarres=44
#TailleFichierMin=100001 ; 1Mo
#TaileLectureEcriture=100000
;}

;{- Si fichier INI absent le créer / Sinon le lire
If FileSize(GetProgramPath()+"Débit Réseau.ini")=-1
  Repeat ;/ Si fichier de lecture trop petit on redemande un autre fichier
    FichierLecture.s=OpenFileRequester("Fichier Source","","Tous les fichiers|*.*",0)
    If FileSize(FichierLecture)<#TailleFichierMin
      MessageRequester("Fichier Source trop petit","Min "+Str(#TailleFichierMin)+" octets")
    EndIf
  Until FileSize(FichierLecture)>#TailleFichierMin
  ;/ Demande le fichier de destination
  FichierEcriture.s=OpenFileRequester("Fichier Destination","","Tous les fichiers|*.*",0)
  IniWrite(GetProgramPath()+"Débit Réseau.ini","Config","Lecture",FichierLecture)
  IniWrite(GetProgramPath()+"Débit Réseau.ini","Config","Ecriture",FichierEcriture)
Else
  ;/ Fichier INI absent --> On le créé / Stocke les préférences
  FichierLecture.s=IniRead(GetProgramPath()+"Débit Réseau.ini","Config","Lecture")
  FichierEcriture.s=IniRead(GetProgramPath()+"Débit Réseau.ini","Config","Ecriture")
EndIf
;}
  
;{- Source et Destination accessible sinon quitte
If FileSize(FichierLecture)=-1
  MessageRequester("Fichier Source manquant",FichierLecture,#MB_ICONERROR)
  End
EndIf
If GetDiskFreeSpaceEx(Left(FichierEcriture,2))=0
  MessageRequester("Destination inaccessible",Left(FichierEcriture,2),#MB_ICONERROR)
  End
EndIf
;}

Enumeration ;- Des Gadgets
  #Cadre1
  #Cadre2
  #Lecture
  #Ecriture
  #GraphLecture
  #GraphEcriture
EndEnumeration

;{- Son début
Son=InitSound() 
If Son <>0
  CatchSound(0, ?Son)
  PlaySound(0,0)
EndIf
;}

;{- Visuel
Handle=OpenWindow(0, 216, 0, 510, 302,  #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_TitleBar | #PB_Window_Invisible , "Débit Réseau")
SetWindowsTransparency(Handle,0)
HideWindow(0,0)
CreateGadgetList(WindowID())
TextGadget(#Cadre1, 10, 10, 240, 20, "Lecture",#PB_Text_Center)
TextGadget(#Cadre2, 260, 10, 240, 20, "Ecriture",#PB_Text_Center)
TextGadget(#Lecture, 10, 250, 240, 20, "",#PB_Text_Center )
TextGadget(#Ecriture, 260, 250, 240, 20, "",#PB_Text_Center )
GraphLecture=Graph(20, 30, 220, 200, #NbDeBarres,#Moyen,#Haut,#Full,255,65535,65280,0)
GraphEcriture=Graph(270, 30, 220, 200 ,#NbDeBarres,#Moyen,#Haut,#Full,255,65535,65280,0)
CreateStatusBar(0,WindowID(0))
AddStatusBarField(255)
AddStatusBarField(255)
;/ Fade in
For n= 1 To 255 Step 6
  SetWindowsTransparency(WindowID(0),n)
  Delay(1)
Next n
;}    

*Tampon=AllocateMemory(#TaileLectureEcriture)

Repeat

  If totoro>250  
    totoro=0
    
  ;{/ Mesure & Calcul du débit en Lecture
  OpenFile(0,FichierLecture)
  CreateFile(1,GetEnvironmentVariable("temp")+"\TestDebit.tst")
  UseFile(0)
  MeasureHiResIntervalStart()
  ReadData(*Tampon,#TaileLectureEcriture)
  UseFile(1)
  WriteData(*Tampon,#TaileLectureEcriture)
  TempsDeLecture.f=MeasureHiResIntervalStop()
  DebitLecture.f=#TaileLectureEcriture/TempsDeLecture
  DebitLecture/1024/1024 ; Converit le débit en Mo / s
  CloseFile(0)
  CloseFile(1)
  DeleteFile(GetEnvironmentVariable("temp")+"\TestDebit.tst")
  ;}
  
  ;{/ Mesure & Calcul du débit en Ecriture
  CreateFile(0,FichierEcriture)
  MeasureHiResIntervalStart()
  WriteData(*Tampon,#TaileLectureEcriture)
  TempsEcriture.f=MeasureHiResIntervalStop()
  DebitEcriture.f=#TaileLectureEcriture/TempsEcriture
  DebitEcriture/1024/1024 ; Converit le débit en Mo / s
  CloseFile(0)
  DeleteFile(FichierEcriture)
  ;}
  
  ;{/ Ecriture dans les GadgetText
  SetGadgetText(#Lecture,StrF(DebitLecture,3)+" Mo/s")
  SetGadgetText(#Ecriture,StrF(DebitEcriture,3)+" Mo/s")
  ;}
  
  ;{/ Ecriture dans la Status Bar ( Maj Moyenne )
  MoyLecture.f+DebitLecture
  MoyEcriture.f+DebitEcriture
  NbDeFois+1
  temp1.s=" Moyenne Lecture "+StrF((MoyLecture/NbDeFois),2)+" Mo/s"
  temp2.s=" Moyenne Ecriture "+StrF((MoyEcriture/NbDeFois),2)+" Mo/s"
  StatusBarText(0,0,temp1)
  StatusBarText(0,1,temp2)
  ;}
  
  ;{/ Ecriture des Graphs
  GraphSet(GraphLecture,DebitLecture)
  GraphSet(GraphEcriture,DebitEcriture)
  ;}

  EndIf

  Delay(1)
  totoro+1

  ;/ Affichage du nombre d'échantillons dans la barre de titres
  SetWindowTitle(0,"Débit Réseau ( "+Str(NbDeFois)+" échantillons )")

a=WindowEvent()
Until a=#PB_Event_CloseWindow 

;/ Son fin
If Son <>0
  PlaySound(0,0)
EndIf

;{/ On quitte ( Libération des ressources & Fade Out
FreeMemory(*Tampon)
For n= 255 To 0 Step -3
  SetWindowsTransparency(Handle,n)
  Delay(1)
Next n
;}


DataSection
Son: IncludeBinary "Débit Réseau.wav"
EndDataSection

Publié : mar. 07/juin/2005 23:52
par Progi1984
Quel est le but de ce code ?

Publié : mer. 08/juin/2005 9:21
par Droopy
Connaitre le débit en lecture ( fichier source ) et le débit en écriture ( fichier destination )

Cela permet de visualiser rapidement si le débit est corecte.

Car souvent un mauvais mode des cartes réseaux génère un débit très lent ( ex: pc en 100 half / carte du switch en auto )