AutoIndex/AutoIndex-2.2.40000755000000000000000000000000011421517357012134 5ustar AutoIndex/CountFile0000755000000000000000000003253711420525203011466 0ustar ../AutoIndex/LogFile 8 ../AutoIndex/CountFile 12 ../Suite2.html 2171 ../Suite1.html 2182 ../_index.html 2204 ../_favicon.ico 2151 ../Circlo_EL86/V2/Circlo_EL86-b.jpg 8 ../Transfos/PST-and-OPT.tar.gz 10 ../LOGO.BMP 2213 ../index.html 2173 ../favicon.ico 2144 ../PPKT88-WAD/update.JPG 3 ../Transfos/Papers/Mesurer/4pole.gif 6 ../Transfos/Papers/Mesurer/BP.gif 6 ../Transfos/Dissident/abl-da-clair.jpg 3 ../Transfos/Dissident/Fiches/DA154.pdf 4 ../Transfos/Dissident/Formul-JS-02.html 3 ../OPT_da/Mesures/Lf_et_Cp.gif 6 ../Pre_6J6/Line.gif 5 ../DPP_EL84/TRAL3.pdf 14 ../DPP_EL84/TRS6.pdf 16 ../Traceur/Pix/TopRight.jpg 1 ../Traceur/Pix/6V6-Ia-Ig2.gif 1 ../Traceur/Pix/InEmpty.jpg 1 ../Yves/4K-6R-70W-a.gif 40 ../Traceur/TC1.gif 17 ../Traceur/TDFiles/TDF1.zip 1 ../Traceur/PDFs/S20K75.pdf 3 ../Yves/Audiophile/Audiophile37-15.jpg 1 ../Yves/Audiophile/Audiophile36-1.jpg 3 ../Yves/2x6V6-ZeroBias.gif 40 ../Yves/6V6_SE_CFB.gif 38 ../Transfos/Papers/Fabriquer/Dévidoirs.jpg 6 ../Transfos/Papers/Fabriquer/Bobineuse 2.0.pdf 5 ../ckeditor/ckeditor/INSTALL.html 1 ../ckeditor/ckeditor/LICENSE.html 1 ../ckeditor/ckeditor/_samples/index.html 2 ../Pst/Bobineuse.zip 34 ../ckeditor/ckeditor/CHANGES.html 1 ../ckeditor/ckeditor/ckeditor.asp 1 ../ckeditor/ckeditor/config.js 1 ../ckeditor/ckeditor/_samples/sharedspaces.html 1 ../ckeditor/ckeditor/_samples/output_html.html 1 ../Traceur/Embarqued USB/Embarqued USB.html 3 ../Transfos/Papers/Wolpert_Audio_Xfmr_Design_Manual.pdf 246 ../Transfos/Papers/Fabriquer/Spirfil.jpg 4 ../Transfos/Papers/Fabriquer/BobineuseNumerique.pdf 2 ../Transfos/Dissident/ShortDoc.html 2 ../Loudspeakers/CriticalLSDamping.pdf 49 ../Circuits/Self_Filtrage.gif 85 ../Pst/DocPst.zip 38 ../Pst/Papers/Pst-AN-GEC30.zip 18 ../Traceur/Embarqued USB/2010-01.gif 1 ../Circuits/SourceSel.gif 84 ../Transfos/Dissident/Fiches/TRS12.pdf 6 ../SE_300B/KISS/DA143.pdf 8 ../SE_300B/KISS/Dsc01130.jpg 3 ../SE_300B/KISS/Right-4Wbode.png 5 ../SE_300B/KISS/Measures/MenoVanDerVen.doc 3 ../SE_300B/KISS/Measures/DA143-1.gif 4 ../SE_300B/KISS/Measures/300B-simload.gif 3 ../PP_ECL86/THD-3dB.pdf 321 ../PP_ECL86/Front.jpg 321 ../PP_ECL86/DA17-2.pdf 322 ../PP_ECL86/30Hz-8W-6R.gif 320 ../PP_ECL86/DA17-FF.gif 322 ../PP_ECL86/DA17.jpg 319 ../PP_ECL86/DA17.MOX 326 ../PP_ECL86/DA36.pdf 322 ../PP_ECL86/Charly/DSCN0175.JPG 2 ../PP_ECL86/JPB/1.jpg 1 ../PP_ECL86/BWandDF.pdf 321 ../PP_ECL86/Millérioux HH 18B.jpg 321 ../PP_ECL86/Page.html 318 ../PP_6L6/DA112-sim-bode.jpg 175 ../PP_6L6/DA112-sim-transient.jpg 175 ../PP_6L6/4xSQ.gif 172 ../PP_6L6/DA112.gif 174 ../PP_6L6/DA114.gif 177 ../PP_6L6/Dedans.jpg 172 ../PP_6L6/Zplot.gif 174 ../PP_6EM7/Draft.gif 39 ../DPP_EL84/Alim.gif 16 ../DPP_EL84/Ampli.cct 14 ../DPP_EL84/Ampli.gif 12 ../DPP_EL84/Schema1.gif 15 ../DPP_EL84/BOM.xls 16 ../Circlo_EL86/1EN00200.pdf 51 ../Circlo_EL86/DA115.jpg 50 ../Circlo_EL86/Circlo_EL86.gif 50 ../Circlo_EL86/Figure1.pdf 55 ../Circlo_EL86/Figure2.jpg 48 ../Yves/6L6-ScreenDriven.gif 39 ../Yves/6L6SE-1.jpg 39 ../Yves/Droite_de_charge.pdf 45 ../Yves/tri_pen.jpg 39 ../Yves/Z-Booster.gif 39 ../Yves/V72CIRCUIT.GIF 38 ../Yves/Driver845.gif 37 ../Yves/dephaseur.gif 40 ../Yves/Cfb.gif 38 ../SE_6L6/THD2W.gif 9 ../SE_6L6/6l6-kr.pdf 10 ../OPT_da/323/Draft33-Bode.asc 4 ../Traceur/first.jpg 20 ../Yves/Audiophile/Audiophile36-9.jpg 3 ../Yves/Audiophile/Audiophile37.jpg 2 ../Yves/ClasseB/Balancoire.gif 2 ../Yves/ClasseB/ClasseB-1.gif 4 ../Yves/ClasseB/ClasseB.gif 2 ../Yves/ClasseB/Image2.gif 3 ../Yves/Pierrot/Alim450-300.gif 4 ../Yves/829B_RFAmp.jpg 38 ../Yves/G2Shutdown.gif 39 ../Yves/Mullard_3-3.gif 38 ../Yves/WingedC.htm 40 ../Yves/WINGEDCLOGO.gif 39 ../Yves/VK200.jpg 40 ../Yves/SocketOctal.jpg 38 ../Yves/PSUT.psu 38 ../Yves/QQE03-12_triode.pdf 40 ../Circuits/Pwr_Zener.gif 81 ../PP_6L6/Percage.jpg 171 ../Circuits/Cathode_Follower.gif 87 ../Circuits/EL802-Drv.gif 82 ../OPT_da/OPT_da-322.zip 335 ../PP_6L6/Load.gif 171 ../OPT_da/V322.jpg 333 ../777/Amp-pre1.gif 7 ../PP_6L6/WN-Spectra.gif 172 ../PP_6L6/Talim.gif 172 ../PP_6L6/Schema3.gif 175 ../PP_6L6/Schema1.gif 175 ../Circlo_EL86/Arriere.jpg 47 ../PP_6L6/Sch-V21.gif 175 ../PP_6L6/Phase1.gif 171 ../PP_6L6/Page.html 174 ../PP_6L6/Mesures1.gif 173 ../PP_6L6/Gauche.jpg 171 ../PP_6L6/Front.jpg 171 ../PP_6L6/Droit.jpg 173 ../SE_EL36/Ampli-1.gif 3 ../PP_6L6/Bottom.jpg 172 ../PP_6L6/Arriere.jpg 172 ../SE_EL84/DA12-8_Bode.gif 15 ../SE_EL84/Front.jpg 16 ../SE_EL84/Schema.gif 16 ../Transfos/EI84A-5000-sim.gif 23 ../Mike_Preamp/Cascode/Cascode1.gif 3 ../Traceur/Tct.pdf 17 ../Traceur/PMCT4.gif 16 ../Traceur/Grid1b.gif 18 ../Traceur/Gravure.fpd 17 ../Traceur/FR1.html 19 ../Traceur/Ex1.jpg 19 ../Traceur/EN1.html 19 ../Traceur/88.pdf 19 ../Traceur/88.gif 19 ../Traceur/82-812.gif 18 ../SEPP_Pre/Circuit1.gif 6 ../SE_6L6/THD1W.gif 9 ../SE_6L6/Looped_jig test.gif 9 ../SE_6L6/IMD_FullRange.gif 11 ../SE_6L6/DA35P.gif 9 ../Circuits/1975-1.jpg 80 ../Circuits/CMiller.gif 82 ../Circuits/SinglePot.gif 83 ../Loudspeakers/BafflePlan-1.gif 45 ../Loudspeakers/BafflePlan-2.gif 45 ../Pst/SE-WINDUP.zip 31 ../Pst/SE-WINDUP.PNG 31 ../Pst/SE-STACK.PNG 31 ../Pst/Pst.zip 33 ../Pst/Prova1.gif 31 ../RIAA_PC900/Schema.gif 2 ../Pst/Power.zip 32 ../Pst/Personnaliser.jpg 33 ../Pst/OptionsRegionales.jpg 31 ../Pst/Fil.jpg 32 ../Pst/EIRATIO.PNG 31 ../Pst/CROSSSECTION.PNG 30 ../Pst/BOBBINSIZE.PNG 31 ../PP_845/Nagra.jpg 46 ../Pst/BOBBIN.PNG 33 ../Pst/4xEL84.zip 32 ../RegulHT/Shunt/1.gif 3 ../RegulHT/Shunt/2.gif 5 ../PP_EL36Triode/EL36-115.pdf 54 ../Transfos/EI96A-5000.jpg 23 ../PP_ECL86/THD0dB.pdf 319 ../PP_ECL86/THD-9dB.pdf 317 ../PP_ECL86/THD-6dB.pdf 318 ../PP_ECL86/Square_50KHz.pdf 321 ../PP_ECL86/Square_40Hz.pdf 320 ../PP_ECL86/Square_20Hz.pdf 320 ../PP_ECL86/Square_1KHz.pdf 317 ../PP_ECL86/Square_10KHz.pdf 320 ../PP_ECL86/Schema.gif 319 ../PP_ECL86/PDF.jpg 320 ../PP_ECL86/INSIDE.JPG 319 ../PP_ECL86/BOM.xls 321 ../OPT_da/Page.html 333 ../OPT_da/OPT_da-211.zip 331 ../OPT_da/DA17W.JPG 331 ../OPT_da/4pole.gif 331 ../Images/UKFlag.gif 210 ../Images/PassionTube.jpg 210 ../Images/MONTAGNE50.JPG 212 ../Images/MailMe.gif 90 ../Images/GeekZone.jpg 30 ../Images/DROOPY.GIF 30 ../Images/Diy.jpg 30 ../Images/aurora2_gd.jpg 30 ../Images/Audiyofan.jpg 30 ../Images/ArrowRight.jpg 29 ../Images/ArrowLeft.jpg 30 ../Yves/EL802Drivrs.gif 38 ../Yves/EL36-Triode.jpg 36 ../Yves/EL34.gif 36 ../Yves/EL34-Trioded.gif 37 ../Yves/EI108-1-sq.jpg 35 ../Yves/EI108-1-bp.jpg 38 ../Yves/ECL82-SEPP.gif 38 ../Yves/ECC99-PT.gif 38 ../Yves/ECC88Plate.gif 38 ../Yves/ECC86.gif 38 ../Yves/EC86.jpg 37 ../Yves/Circuit2.cct 38 ../Yves/Choke.jpg 37 ../Yves/Cedus.gif 37 ../Yves/CCSedLongTail.jpg 37 ../Yves/Bias.gif 38 ../Yves/AudioBoxLoop.jpg 38 ../Yves/AlimSEPP.jpg 36 ../Yves/alimriaa.gif 38 ../Yves/AlimPascal.jpg 38 ../Yves/AlimFouch.gif 37 ../Yves/AjPolar.gif 37 ../Yves/813-900V-6K4.gif 36 ../Yves/6SN7-27k-400v.gif 38 ../Yves/6SL7.gif 38 ../Yves/6SL7-lo-Ip.gif 39 ../Yves/6N1pPlate.gif 37 ../Yves/6CA7.gif 37 ../Yves/6C45p-1.gif 38 ../Yves/6C45-Alim.gif 39 ../Yves/6A5.gif 37 ../Yves/50W-25.gif 37 ../Yves/300B-PP-6K4.gif 41 ../Yves/300b-2.gif 39 ../Yves/300b-0.gif 39 ../Yves/276.GIF 37 ../Yves/211plaque.jpg 38 ../Yves/1960crowhurst.pdf 80 ../Xformers/Xformers.zip 26 ../Xformers/Xformers.vbw 25 ../Xformers/Xformers.vbp 24 ../Xformers/TOOLS.BAS 22 ../Xformers/Std.dat 23 ../Xformers/M6x.dat 23 ../Xformers/GLOBAL.BAS 23 ../Xformers/AddCore.frm 24 ../Transfos/EI96A-5000-sim.jpg 16 ../Transfos/EI84A-5000.jpg 16 ../Images/6BM8.jpg 30 ../Circlo_EL86/Dessous.jpg 47 ../Circlo_EL86/Avant.jpg 46 ../Circlo_EL86/1EN00201.pdf 46 ../Yves/Warmth.jpg 37 ../Yves/USBAudioBox.jpg 37 ../Yves/UL-or-not-UL.gif 38 ../Yves/StackedSupplies.gif 38 ../Yves/SSCCS.GIF 37 ../Yves/SrppSym.jpg 38 ../Yves/SRPPPP1.gif 38 ../Yves/Simul2.jpg 38 ../Yves/Simul1.psu 37 ../Yves/ShuntReg1.jpg 36 ../Yves/Shunt_Regs.gif 37 ../Yves/SEPP_pre.gif 38 ../Yves/SEPP.GIF 38 ../Yves/separateur 37 ../Yves/Selfs-a-air.jpg 36 ../Yves/SE_2A3-SQ.jpg 38 ../Yves/screwy1.jpg 38 ../Yves/riaa.gif 35 ../Yves/relais.gif 37 ../Yves/Quinet-Page-304.jpg 35 ../Yves/QUADIICIR.JPG 37 ../Yves/Pulser.gif 38 ../Yves/pstcalc.zip 37 ../Yves/Pre0.gif 37 ../Yves/PORTABLE.jpg 38 ../Yves/Pont_Hybride.gif 37 ../Yves/PNP.GIF 38 ../Yves/PMCT.gif 38 ../Yves/OPT_da-211.zip 37 ../Yves/KT88-Trioded.gif 37 ../Yves/Introt.txt 37 ../Yves/InputStage.gif 37 ../Yves/img_3635.jpg 38 ../Yves/IM18D.jpg 37 ../Yves/HVstereo.psu 38 ../Yves/HVmono.psu 38 ../Yves/H2SET.jpg 37 ../Yves/GU50.gif 38 ../Yves/Gr3gg_OPT.jpg 37 ../Yves/GM70.gif 37 ../Yves/GM70-4K7.gif 38 ../Yves/gec30psu.gif 37 ../Yves/G1Bias.gif 39 ../Yves/FRONT.JPG 37 ../Yves/FIRSTSS.gif 39 ../Yves/Filtre-Bouchra.gif 37 ../Yves/EL86Triode.pdf 38 ../Yves/EL83-Plate.gif 38 ../Yves/EL802LdLine.gif 38 ../Circuits/plate6N2-1.gif 79 ../Circlo_EL86/courants.gif 47 ../Traceur/Page2.html 16 ../Traceur/Page.html 19 ../SE_6L6/THD8W.gif 9 ../SE_6L6/THD4W.gif 9 ../SE_6L6/Page.html 9 ../SE_6L6/Internal_Z.gif 10 ../SE_6L6/IMD_Zoomed.gif 10 ../SE_6L6/DA101a.jpg 9 ../OPT_da/slup125.pdf 329 ../Images/screwy1.jpg 209 ../Images/Mauves.jpg 212 ../Images/FRFlag.gif 29 ../Images/flechegauche.gif 30 ../Images/flechedroite.gif 29 ../Images/Download.jpg 30 ../Images/DA_Logo.gif 30 ../Yves/WhiteCF.gif 38 ../Yves/Simul2.psu 38 ../Yves/Simul1.jpg 37 ../Yves/SE_2A3.jpg 37 ../Yves/SE_2A3-a.jpg 37 ../Yves/Sch1.jpg 36 ../Yves/Reguls.gif 37 ../Yves/PPEL34.jpg 38 ../Yves/PMCT3.gif 38 ../Yves/Overdrive.gif 37 ../Yves/oudonc.gif 37 ../Yves/MoreBootstrap.gif 38 ../Yves/gec30.psu 38 ../Yves/EL509-Triode.gif 39 ../Yves/EFL200_Lplate.gif 38 ../Yves/ECL86-Triode.gif 38 ../Yves/Cedus.mox 38 ../Yves/boucle.jpg 37 ../Yves/6C33.jpg 42 ../Yves/300b-1.gif 38 ../IMD_Tester/VA-multitone.gif 16 ../IMD_Tester/1.jpg 18 ../PP_6AS7/Page.html 21 ../IMD_Tester/2.jpg 19 ../SE_845/V1.gif 6 ../SE_845/SRPP.gif 9 ../SE_845/SRPP-18W_GNFB.gif 10 ../SE_845/Rear.jpg 5 ../SE_845/Protection.jpg 7 ../SE_845/Plate.jpg 10 ../SE_845/Front-x.jpg 7 ../SE_845/EL802-x.jpg 5 ../SE_845/EF184.pdf 10 ../SE_845/ECL86-845.gif 10 ../SE_845/DCCoupled.gif 11 ../SE_845/Compare.gif 7 ../SE_845/845_P2.GIF 7 ../SE_6L6/Front.jpg 4 ../SE_6B4/Front.jpg 2 ../PP_6B4/Projet1.gif 20 ../PP_6AS7/Front.gif 26 ../PP_300B/AB2.gif 31 ../Xformers/DA127.pdf 17 ../PP_6L6/Schema2.gif 83 ../OutsideDocs/RCA_1938_BeamPowerTubes_TechPapers.pdf 19 ../SpeakerBox/DA90-1.jpg 6 ../Xformers/core.tbx 9 ../SE_845/DA107-3.mox 6 ../SE_845/845_P1.GIF 10 ../PP_EL36Triode/Draft1.gif 31 ../RegulHT/Regul.html 12 ../IMD_Tester/1.gif 24 ../SE_845/SRPP-18W_LNFB.gif 6 ../SE_845/Scope.jpg 7 ../SE_845/Lateral.jpg 7 ../PP_6AS7/Schema.gif 23 ../Transfos/EI96A-5000.gif 8 ../SE_845/EL183-Tri-7K3.gif 8 ../SE_845/DA107-3-snap.jpg 4 ../SE_845/Amp.gif 9 ../SE_6L6/Schema.jpg 6 ../SE_845/Top-x.jpg 8 ../Xformers/Main.frm 16 ../SE_845/WhiteNoise.gif 11 ../SE_845/EL802-12K.gif 7 ../SE_845/18w.gif 6 ../SE_845/Thumbs.db 6 ../SE_845/Page.html 5 ../SE_845/EL802-845.gif 8 ../SE_845/3xSQ10K.gif 5 ../SE_6B4/3KAuto.gif 2 ../SE_EL84/Rear.jpg 10 ../SE_845/DA107-3.jpg 6 ../RegulHT/Shunt/3.gif 2 ../RegulHT/Shunt/4.gif 2 ../RegulHT/Totof/PCB-Double.gif 2 ../RegulHT/basic.gif 1 ../RegulHT/Tracking.gif 2 ../Transfos/Dissident/Fiches/DA107.pdf 5 ../Transfos/Dissident/Fiches/TRAL3.pdf 4 ../Transfos/Dissident/DimensionsEI.pdf 2 ../Transfos/Dissident/TRS.pdf 5 ../Transfos/Dissident/Fiches/DA130.pdf 16 ../Transfos/Dissident/Fiches/DA150.pdf 10 ../SE_6B4/Fond.jpg 2 ../SE_EL84/Inside.jpg 11 ../Transfos/Dissident/Fiches/DA17-2a.pdf 93 ../SpeakerBox/SpeakerBox.jpg 4 ../SpeakerBox/BEZEL2.TIF 8 ../SE_300B/KISS/Dsc01135.jpg 2 ../SE_300B/KISS/2.gif 3 ../SE_300B/KISS/1.gif 5 ../test/apacheasp/test.asp 1 ../Yves/SEPP(draft)/Sch7.gif 1 ../SE_6V6/Da33-4.gif 1 ../SE_6V6/DOUBLEVUE.JPG 1 ../SE_6B4/Schema.gif 2 ../SE_6AS7/DA118.pdf 1 ../SE_300B/KISS/Dsc01134.jpg 2 ../SE_300B/KISS/Dsc01133.jpg 1 ../Yves/SEPP(draft)/Article.DOC 2 ../Yves/Audiophile/Audiophile36-6.jpg 1 ../Yves/Audiophile/Audiophile37-17.jpg 1 ../SE_300B/KISS/Dsc01131.jpg 1 ../Transfos/Dissident/Fiches/SF5-300.pdf 5 ../Transfos/Dissident/Fiches/DA152.pdf 4 ../Transfos/Dissident/Fiches/DA134_2.jpg 5 ../Transfos/Dissident/Fiches/DA134_1.jpg 3 ../Transfos/Dissident/Fiches/TRS10.pdf 4 ../Transfos/Dissident/Fiches/TRS9.pdf 2 ../Transfos/Dissident/Fiches/TRS6.pdf 2 ../Transfos/Dissident/Fiches/TRAL5.pdf 2 ../Transfos/Dissident/Fiches/Pascal-1.gif 3 ../OPT_da/Papers/MuvsB.gif 2 ../SE_6AS7/Schema.pdf 2 ../Transfos/Dissident/Aide.html 2 ../Transfos/Dissident/AskOpt.html 2 ../Transfos/Dissident/Logoclair.jpg 1 ../Transfos/Dissident/Fiches/Pascal-1.xls 3 ../Transfos/Dissident/Fiches/EL809.gif 2 ../Yves/MCINTOSH/MC275CE_OWN.PDF 1 ../Yves/MCINTOSH/MI275.JPG 1 ../SE_6B4/6B4-6C4C.JPG 1 ../Yves/Audiophile/Audiophile37-4.jpg 1 ../SE_6AS7/DA117.jpg 1 ../OPT_da/Mesures/Lf_and_Cshunt.xls 2 ../OPT_da/317/setup.zip 1 ../Traceur/Gifs/EL36-Triode-200V-70mA-3K.gif 1 ../Traceur/Gifs/EL86-Triode.gif 1 ../Traceur/Gifs/6V6-anode et G2.gif 1 ../Traceur/Gifs/6CA7vsEL34.gif 1 ../Traceur/Soft/Backup 8bits.rar 1 ../Traceur/PDFs/ecl82pentode_as_triode.pdf 1 ../Yves/Audiophile/Audiophile36-10.jpg 1 ../Yves/Audiophile/Audiophile37-3.jpg 1 ../Yves/Audiophile/Audiophile37-14.jpg 1 ../Yves/Meeting/amboulons.jpg 1 ../Yves/Meeting/Final.jpg 1 ../Yves/Meeting/people3.jpg 1 ../Yves/Meeting/people1.jpg 1 ../Yves/Meeting/people2.jpg 1 ../Yves/Meeting/people4.jpg 1 ../Yves/Meeting/people5.jpg 1 ../Traceur/TDFiles/EF184-3.tdf 1 ../AutoIndex/change_log.html 1 ../AutoIndex/license.html 2 ../css/style.css 1 ../css/tabs.css 1 ../RegulHT/Totof/Schéma-Double.gif 1 ../RegulHT/Totof/Schéma-Simple.gif 1 ../RegulHT/Totof/PCB-Simple.gif 1 ../RegulHT/Totof/Régul HT a DN3545 et IRF820.rar 1 ../RIAA_PC900/Front.jpg 1 ../RIAA_PC900/PSU.gif 1 AutoIndex/SIPRO150000755000000000000000000000000013730575265010644 5ustar AutoIndex/SIPRO15/Form2.frm0000755000000000000000000026020313730575261012420 0ustar VERSION 5.00 Begin VB.Form Service BackColor = &H00000080& Caption = "Tests et maintenance" ClientHeight = 7200 ClientLeft = 60 ClientTop = 345 ClientWidth = 9435 LinkTopic = "Form2" ScaleHeight = 489.172 ScaleMode = 0 'User ScaleWidth = 640 StartUpPosition = 3 'Windows Default Begin VB.TextBox Spy BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 285 Left = 2040 TabIndex = 111 Top = 6840 Width = 2775 End Begin VB.CommandButton BtPanique Caption = "PANIQUE" BeginProperty Font Name = "MS Sans Serif" Size = 9.75 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 375 Left = 7200 TabIndex = 108 Top = 6120 Width = 2055 End Begin VB.CommandButton btT1 Caption = "Programmation" BeginProperty Font Name = "MS Sans Serif" Size = 9.75 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 375 Left = 7200 TabIndex = 103 Top = 6720 Width = 2055 End Begin VB.CommandButton BtSync Caption = "SYNC" BeginProperty Font Name = "MS Sans Serif" Size = 9.75 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 1575 Left = 4560 TabIndex = 102 Top = 4440 Visible = 0 'False Width = 375 End Begin VB.Timer Timer1 Enabled = 0 'False Interval = 100 Left = 4560 Top = 6240 End Begin VB.CheckBox Check1 Caption = "FinCycle" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 4920 TabIndex = 81 Top = 6840 Width = 2055 End Begin VB.CommandButton BtPowMotOff Caption = "Pas d'alim Moteurs" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 4920 TabIndex = 80 Top = 6360 Width = 2055 End Begin VB.CommandButton BtPwrMotOn Caption = "Alim Moteurs" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 4920 TabIndex = 79 Top = 6120 Width = 2055 End Begin VB.CheckBox Check5 Caption = "Frein" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 4920 TabIndex = 74 Top = 6600 Width = 2055 End Begin VB.Frame Frame1 BackColor = &H00C0FFC0& Caption = "Translation / Guide" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 5880 Left = 4920 TabIndex = 50 Top = 120 Width = 4300 Begin VB.CommandButton BtRSTIT Caption = "RSTI" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 1800 TabIndex = 110 Top = 5520 Width = 1095 End Begin VB.TextBox TxCPmm Alignment = 1 'Right Justify BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 285 Left = 960 TabIndex = 95 Text = "0" Top = 5160 Width = 735 End Begin VB.CheckBox CkDirT BackColor = &H00C0FFC0& Caption = "Direction" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 240 TabIndex = 91 Top = 4920 Width = 1215 End Begin VB.CheckBox CkModeVeloT BackColor = &H00C0FFC0& Caption = "Mode Vélocité" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 240 TabIndex = 89 Top = 4680 Width = 1575 End Begin VB.CommandButton BtFilterT Caption = "Test filtre" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 3000 TabIndex = 87 Top = 5520 Width = 1215 End Begin VB.CommandButton BtHResetT Caption = "RAZ" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 120 TabIndex = 85 Top = 3240 Width = 975 End Begin VB.TextBox TxFilkpT Alignment = 1 'Right Justify BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 285 Left = 3360 TabIndex = 20 Text = "0" Top = 3960 Width = 735 End Begin VB.CommandButton BtMajT Caption = "M.A.J Fichier" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 2880 TabIndex = 24 Top = 3240 Width = 1335 End Begin VB.TextBox TxIET Alignment = 1 'Right Justify BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 285 Left = 3360 TabIndex = 19 Text = "0" Top = 3600 Width = 735 End Begin VB.CommandButton BtTRJT Caption = "Test trajectoire" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 120 TabIndex = 25 Top = 5520 Width = 1575 End Begin VB.TextBox TxFilkiT Alignment = 1 'Right Justify BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 285 Left = 3360 TabIndex = 21 Text = "0" Top = 4320 Width = 735 End Begin VB.TextBox TxFilkdT Alignment = 1 'Right Justify BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 285 Left = 3360 TabIndex = 22 Text = "0" Top = 4680 Width = 735 End Begin VB.TextBox TxFililT Alignment = 1 'Right Justify BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 285 Left = 3360 TabIndex = 23 Text = "0" Top = 5040 Width = 735 End Begin VB.TextBox TxAccelT Alignment = 1 'Right Justify BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 285 Left = 960 TabIndex = 13 Text = "0" Top = 3600 Width = 735 End Begin VB.TextBox TxVeloT Alignment = 1 'Right Justify BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 285 Left = 960 TabIndex = 15 Text = "0" Top = 3960 Width = 735 End Begin VB.TextBox TxPosT Alignment = 1 'Right Justify BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 285 Left = 960 TabIndex = 17 Text = "0" Top = 4320 Width = 735 End Begin VB.CheckBox CkAccelRelT BackColor = &H00C0FFC0& Caption = "Rel." BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 1800 TabIndex = 14 Top = 3600 Width = 735 End Begin VB.CheckBox CkVeloRelT BackColor = &H00C0FFC0& Caption = "Rel." BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 1800 TabIndex = 16 Top = 3960 Width = 855 End Begin VB.CheckBox CkPosRelT BackColor = &H00C0FFC0& Caption = "Rel." BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 1800 TabIndex = 18 Top = 4320 Width = 855 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "1 mm =" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 9 Left = 240 TabIndex = 94 Top = 5205 Width = 615 End Begin VB.Label Label2 Alignment = 2 'Center AutoSize = -1 'True BackStyle = 0 'Transparent BorderStyle = 1 'Fixed Single Caption = "Tests manuels" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Index = 25 Left = 1320 TabIndex = 83 Top = 3240 Width = 1305 End Begin VB.Line Line2 X1 = 0 X2 = 4320 Y1 = 3120 Y2 = 3120 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "IE" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 23 Left = 3000 TabIndex = 78 Top = 3600 Width = 195 End Begin VB.Label LbIntegrationT Alignment = 1 'Right Justify BackColor = &H00FFFFFF& BorderStyle = 1 'Fixed Single Caption = "0" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 2880 TabIndex = 73 Top = 1920 Visible = 0 'False Width = 1305 End Begin VB.Label Label2 Alignment = 2 'Center BackStyle = 0 'Transparent BorderStyle = 1 'Fixed Single Caption = "Vélocité lue" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Index = 20 Left = 1560 TabIndex = 72 Top = 2280 Width = 1695 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "Intég:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 19 Left = 2280 TabIndex = 71 Top = 1920 Visible = 0 'False Width = 510 End Begin VB.Label Label2 Alignment = 2 'Center BackStyle = 0 'Transparent BorderStyle = 1 'Fixed Single Caption = "Position lue" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Index = 18 Left = 1560 TabIndex = 70 Top = 1200 Width = 1695 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "Désiré:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 17 Left = 120 TabIndex = 69 Top = 1920 Width = 615 End Begin VB.Label LbDesiredPosT Alignment = 1 'Right Justify BackColor = &H00FFFFFF& BorderStyle = 1 'Fixed Single Caption = "0" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 720 TabIndex = 68 Top = 1920 Width = 1545 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "Index:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 16 Left = 2280 TabIndex = 67 Top = 1560 Visible = 0 'False Width = 540 End Begin VB.Label LbIndexPosT Alignment = 1 'Right Justify BackColor = &H00FFFFFF& BorderStyle = 1 'Fixed Single Caption = "0" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 2880 TabIndex = 66 Top = 1560 Visible = 0 'False Width = 1305 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "Réèl:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 15 Left = 120 TabIndex = 65 Top = 1560 Width = 465 End Begin VB.Label LbRealPosT Alignment = 1 'Right Justify BackColor = &H00FFFFFF& BorderStyle = 1 'Fixed Single Caption = "0" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 720 TabIndex = 64 Top = 1560 Width = 1545 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "Désiré:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 14 Left = 2280 TabIndex = 63 Top = 2640 Width = 615 End Begin VB.Label LbDesiredVeloT Alignment = 1 'Right Justify BackColor = &H00FFFFFF& BorderStyle = 1 'Fixed Single Caption = "0" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 2880 TabIndex = 62 Top = 2640 Width = 1305 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "Etat:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 10 Left = 1680 TabIndex = 61 Top = 240 Width = 420 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "kp:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 8 Left = 3000 TabIndex = 60 Top = 3960 Width = 285 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "ki:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 7 Left = 3000 TabIndex = 59 Top = 4320 Width = 225 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "kd:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 6 Left = 3000 TabIndex = 58 Top = 4680 Width = 285 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "il:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 5 Left = 3000 TabIndex = 57 Top = 5040 Width = 165 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "Accel:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 3 Left = 120 TabIndex = 56 Top = 3600 Width = 555 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "Vélocité:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 2 Left = 120 TabIndex = 55 Top = 3960 Width = 765 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "Position" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 1 Left = 120 TabIndex = 54 Top = 4320 Width = 690 End Begin VB.Label LbStatT Alignment = 1 'Right Justify AutoSize = -1 'True BackColor = &H00FFFFFF& BorderStyle = 1 'Fixed Single Caption = "00000000" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 1440 TabIndex = 53 Top = 510 Width = 915 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "Réèl:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 0 Left = 120 TabIndex = 52 Top = 2640 Width = 465 End Begin VB.Label LbReaelVeloT Alignment = 1 'Right Justify BackColor = &H00FFFFFF& BorderStyle = 1 'Fixed Single Caption = "0" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 720 TabIndex = 51 Top = 2640 Width = 1305 End End Begin VB.Frame Frame2 BackColor = &H00C0FFFF& Caption = "Rotation / Broche" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 5880 Left = 240 TabIndex = 26 Top = 120 Width = 4300 Begin VB.CommandButton Command1 Caption = "Command1" Height = 255 Left = 360 TabIndex = 112 Top = 720 Visible = 0 'False Width = 1095 End Begin VB.CommandButton BtRSTIR Caption = "RSTI" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 1800 TabIndex = 109 Top = 5520 Width = 1095 End Begin VB.TextBox TxCPTR Alignment = 1 'Right Justify BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 285 Left = 960 TabIndex = 93 Text = "0" Top = 5160 Width = 735 End Begin VB.CheckBox CkDirR BackColor = &H00C0FFFF& Caption = "Direction" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 240 TabIndex = 90 Top = 4920 Width = 1215 End Begin VB.CheckBox CkModeVeloR BackColor = &H00C0FFFF& Caption = "Mode Vélocité" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 240 TabIndex = 88 Top = 4680 Width = 1575 End Begin VB.CommandButton BtFilterR Caption = "Test filtre" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 3000 TabIndex = 86 Top = 5520 Width = 1215 End Begin VB.CommandButton BtHResetR Caption = "RAZ" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 120 TabIndex = 84 Top = 3240 Width = 975 End Begin VB.TextBox TxIER Alignment = 1 'Right Justify BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 285 Left = 3360 TabIndex = 6 Text = "0" Top = 3600 Width = 735 End Begin VB.CheckBox CkPosRelR BackColor = &H00C0FFFF& Caption = "Rel." BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 1800 TabIndex = 5 Top = 4320 Width = 855 End Begin VB.CheckBox CkVeloRelR BackColor = &H00C0FFFF& Caption = "Rel." BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 1800 TabIndex = 3 Top = 3960 Width = 855 End Begin VB.CheckBox CkAccelRelR BackColor = &H00C0FFFF& Caption = "Rel." BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 1800 TabIndex = 1 Top = 3600 Width = 735 End Begin VB.TextBox TxPosR Alignment = 1 'Right Justify BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 285 Left = 960 TabIndex = 4 Text = "0" Top = 4320 Width = 735 End Begin VB.TextBox TxVeloR Alignment = 1 'Right Justify BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 285 Left = 960 TabIndex = 2 Text = "0" Top = 3960 Width = 735 End Begin VB.TextBox TxAccelR Alignment = 1 'Right Justify BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 285 Left = 960 TabIndex = 0 Text = "0" Top = 3600 Width = 735 End Begin VB.TextBox TxFililR Alignment = 1 'Right Justify BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 285 Left = 3360 TabIndex = 10 Text = "0" Top = 5040 Width = 735 End Begin VB.TextBox TxFilkdR Alignment = 1 'Right Justify BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 285 Left = 3360 TabIndex = 9 Text = "0" Top = 4680 Width = 735 End Begin VB.TextBox TxFilkiR Alignment = 1 'Right Justify BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 285 Left = 3360 TabIndex = 8 Text = "0" Top = 4320 Width = 735 End Begin VB.CommandButton BtTRJR Caption = "Test trajectoire" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 120 TabIndex = 12 Top = 5520 Width = 1575 End Begin VB.TextBox TxFilkpR Alignment = 1 'Right Justify BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 285 Left = 3360 TabIndex = 7 Text = "0" Top = 3960 Width = 735 End Begin VB.CommandButton BtMajR Caption = "M.A.J Fichier" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 2880 TabIndex = 11 Top = 3240 Width = 1335 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "1 Tour =" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 4 Left = 120 TabIndex = 92 Top = 5205 Width = 735 End Begin VB.Label Label2 Alignment = 2 'Center AutoSize = -1 'True BackStyle = 0 'Transparent BorderStyle = 1 'Fixed Single Caption = "Tests manuels" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Index = 24 Left = 1320 TabIndex = 82 Top = 3240 Width = 1305 End Begin VB.Line Line1 X1 = 0 X2 = 4320 Y1 = 3120 Y2 = 3120 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "IE" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 22 Left = 3000 TabIndex = 77 Top = 3600 Width = 195 End Begin VB.Label LbReaelVeloR Alignment = 1 'Right Justify BackColor = &H00FFFFFF& BorderStyle = 1 'Fixed Single Caption = "0" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 720 TabIndex = 49 Top = 2640 Width = 1300 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "Réèl:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 64 Left = 120 TabIndex = 48 Top = 2640 Width = 465 End Begin VB.Label LbStatR Alignment = 1 'Right Justify AutoSize = -1 'True BackColor = &H00FFFFFF& BorderStyle = 1 'Fixed Single Caption = "00000000" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 1680 TabIndex = 47 Top = 510 Width = 915 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "Position:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 63 Left = 120 TabIndex = 46 Top = 4320 Width = 750 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "Vélocité:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 62 Left = 120 TabIndex = 45 Top = 3960 Width = 765 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "Accel:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 61 Left = 120 TabIndex = 44 Top = 3600 Width = 555 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "il:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 59 Left = 3000 TabIndex = 43 Top = 5040 Width = 165 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "kd:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 58 Left = 3000 TabIndex = 42 Top = 4680 Width = 285 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "ki:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 57 Left = 3000 TabIndex = 41 Top = 4320 Width = 225 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "kp:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 56 Left = 3000 TabIndex = 40 Top = 3960 Width = 285 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "Etat:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 54 Left = 1920 TabIndex = 39 Top = 240 Width = 420 End Begin VB.Label LbDesiredVeloR Alignment = 1 'Right Justify BackColor = &H00FFFFFF& BorderStyle = 1 'Fixed Single Caption = "0" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 2880 TabIndex = 38 Top = 2640 Width = 1305 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "Désiré:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 50 Left = 2280 TabIndex = 37 Top = 2640 Width = 615 End Begin VB.Label LbRealPosR Alignment = 1 'Right Justify BackColor = &H00FFFFFF& BorderStyle = 1 'Fixed Single Caption = "0" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 720 TabIndex = 36 Top = 1560 Width = 1545 WordWrap = -1 'True End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "Réèl:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 49 Left = 120 TabIndex = 35 Top = 1560 Width = 465 End Begin VB.Label LbIndexPosR Alignment = 1 'Right Justify BackColor = &H00FFFFFF& BorderStyle = 1 'Fixed Single Caption = "0" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 2880 TabIndex = 34 Top = 1560 Visible = 0 'False Width = 1305 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "Index:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 48 Left = 2280 TabIndex = 33 Top = 1560 Visible = 0 'False Width = 540 End Begin VB.Label LbDesiredPosR Alignment = 1 'Right Justify BackColor = &H00FFFFFF& BorderStyle = 1 'Fixed Single Caption = "0" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 720 TabIndex = 32 Top = 1920 Width = 1545 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "Désiré:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 47 Left = 120 TabIndex = 31 Top = 1920 Width = 615 End Begin VB.Label Label2 Alignment = 2 'Center BackStyle = 0 'Transparent BorderStyle = 1 'Fixed Single Caption = "Position lue" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Index = 46 Left = 1560 TabIndex = 30 Top = 1200 Width = 1695 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "Intég:" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Index = 45 Left = 2280 TabIndex = 29 Top = 1920 Visible = 0 'False Width = 510 End Begin VB.Label Label2 Alignment = 2 'Center BackStyle = 0 'Transparent BorderStyle = 1 'Fixed Single Caption = "Vélocité lue" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Index = 41 Left = 1560 TabIndex = 28 Top = 2280 Width = 1695 End Begin VB.Label LbIntegrationR Alignment = 1 'Right Justify BackColor = &H00FFFFFF& BorderStyle = 1 'Fixed Single Caption = "0" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 2880 TabIndex = 27 Top = 1920 Visible = 0 'False Width = 1305 End End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "E/S C" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty ForeColor = &H00FFFFFF& Height = 195 Index = 12 Left = 240 TabIndex = 107 Top = 6720 Width = 525 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "E/S B" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty ForeColor = &H00FFFFFF& Height = 195 Index = 11 Left = 240 TabIndex = 106 Top = 6480 Width = 525 End Begin VB.Label LbESC Alignment = 1 'Right Justify AutoSize = -1 'True BackColor = &H00FFFFFF& BorderStyle = 1 'Fixed Single Caption = "00000000" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 960 TabIndex = 105 Top = 6720 Width = 915 End Begin VB.Label LbESB Alignment = 1 'Right Justify AutoSize = -1 'True BackColor = &H00FFFFFF& BorderStyle = 1 'Fixed Single Caption = "00000000" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 960 TabIndex = 104 Top = 6480 Width = 915 End Begin VB.Label LbMotB Alignment = 1 'Right Justify AutoSize = -1 'True BackColor = &H00FFFFFF& BorderStyle = 1 'Fixed Single Caption = "00000000" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 2160 TabIndex = 101 Top = 6480 Visible = 0 'False Width = 915 End Begin VB.Label LbMotC Alignment = 1 'Right Justify AutoSize = -1 'True BackColor = &H00FFFFFF& BorderStyle = 1 'Fixed Single Caption = "00000000" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 3480 TabIndex = 100 Top = 6480 Visible = 0 'False Width = 915 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "IF Mot.Pc" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty ForeColor = &H00FFFFFF& Height = 195 Index = 30 Left = 1920 TabIndex = 99 Top = 6480 Visible = 0 'False Width = 840 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "IF Mot.Pb" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty ForeColor = &H00FFFFFF& Height = 195 Index = 29 Left = 1920 TabIndex = 98 Top = 6240 Visible = 0 'False Width = 840 End Begin VB.Label LbMotA Alignment = 1 'Right Justify AutoSize = -1 'True BackColor = &H00FFFFFF& BorderStyle = 1 'Fixed Single Caption = "00000000" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 3480 TabIndex = 97 Top = 6240 Width = 915 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "IF Mot.Pa" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty ForeColor = &H00FFFFFF& Height = 195 Index = 28 Left = 2520 TabIndex = 96 Top = 6240 Width = 840 End Begin VB.Label Label2 AutoSize = -1 'True BackStyle = 0 'Transparent Caption = "E/S A" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty ForeColor = &H00FFFFFF& Height = 195 Index = 21 Left = 240 TabIndex = 76 Top = 6240 Width = 525 End Begin VB.Label LbESA Alignment = 1 'Right Justify AutoSize = -1 'True BackColor = &H00FFFFFF& BorderStyle = 1 'Fixed Single Caption = "00000000" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 255 Left = 960 TabIndex = 75 Top = 6240 Width = 915 End End Attribute VB_Name = "Service" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Option Explicit Private Sub BtFilterR_Click() SetFilterR End Sub Public Sub SetFilterR() LoadFilters RAxis, Val(TxIER.Text), Val(TxFilkpR.Text), _ Val(TxFilkiR.Text), Val(TxFilkdR.Text), Val(TxFililR) ' GetToken RAxis LM628Poke1 RAxis, UDF 'Apply immediatly ' FreeToken RAxis End Sub Private Sub BtFilterT_Click() SetFilterT End Sub Public Sub SetFilterT() LoadFilters TAxis, Val(TxIET.Text), Val(TxFilkpT.Text), _ Val(TxFilkiT.Text), Val(TxFilkdT.Text), Val(TxFililT) ' GetToken TAxis LM628Poke1 TAxis, UDF 'Apply immediatly ' FreeToken TAxis End Sub Private Sub BtHResetR_Click() DisableDriverR Wait 100 HReset RAxis MoveR 0, RELATIVE EnableDriverR BtTRJR.Enabled = True End Sub Private Sub BtHResetT_Click() DisableDriverT Wait 100 HReset TAxis MoveT 0, RELATIVE EnableDriverT BtTRJT.Enabled = True End Sub Private Sub BtMajR_Click() 'Save current Rotation values. SetLFILR App.Path & "\LM628R.ini" SetLTRJR App.Path & "\LM628R.ini" End Sub Private Sub BtPanique_Click() 'Just Motor Power OFF ? ? PwrMotOff DisableDriverT DisableDriverR End Sub Private Sub BtMajT_Click() 'Save current Translation values. SetLFILT App.Path & "\LM628T.ini" SetLTRJT App.Path & "\LM628T.ini" End Sub Private Sub SetLFILR(File As String) WriteIniString File, "LFIL", "IE", TxIER.Text WriteIniString File, "LFIL", "kp", TxFilkpR.Text WriteIniString File, "LFIL", "ki", TxFilkiR.Text WriteIniString File, "LFIL", "kd", TxFilkdR.Text WriteIniString File, "LFIL", "il", TxFililR.Text End Sub Private Sub SetLTRJR(File As String) WriteIniString File, "LTRJ", "Acceleration", TxAccelR.Text WriteIniString File, "LTRJ", "RelAcceleration", CkAccelRelR.Value WriteIniString File, "LTRJ", "Velocity", TxVeloR.Text WriteIniString File, "LTRJ", "RelVelocity", CkVeloRelR.Value WriteIniString File, "LTRJ", "Position", TxPosR.Text WriteIniString File, "LTRJ", "RelPosition", CkPosRelR.Value WriteIniString File, "LTRJ", "ModeVelocity", CkModeVeloR.Value WriteIniString File, "LTRJ", "Direction", CkDirR.Value WriteIniString File, "LTRJ", "CountsPerTurn", TxCPTR.Text End Sub Private Sub SetLFILT(File As String) WriteIniString File, "LFIL", "IE", TxIET.Text WriteIniString File, "LFIL", "kp", TxFilkpT.Text WriteIniString File, "LFIL", "ki", TxFilkiT.Text WriteIniString File, "LFIL", "kd", TxFilkdT.Text WriteIniString File, "LFIL", "il", TxFililT.Text End Sub Private Sub SetLTRJT(File As String) WriteIniString File, "LTRJ", "Acceleration", TxAccelT.Text WriteIniString File, "LTRJ", "RelAcceleration", CkAccelRelT.Value WriteIniString File, "LTRJ", "Velocity", TxVeloT.Text WriteIniString File, "LTRJ", "RelVelocity", CkVeloRelT.Value WriteIniString File, "LTRJ", "Position", TxPosT.Text WriteIniString File, "LTRJ", "RelPosition", CkPosRelT.Value WriteIniString File, "LTRJ", "ModeVelocity", CkModeVeloT.Value WriteIniString File, "LTRJ", "Direction", CkDirT.Value WriteIniString File, "LTRJ", "CountsPermm", TxCPmm.Text End Sub Private Sub BtPowMotOff_Click() PwrMotOff End Sub Private Sub BtPwrMotOn_Click() PwrMotOn End Sub Private Sub BtRSTIR_Click() DoRSTI RAxis End Sub Private Sub BtRSTIT_Click() DoRSTI TAxis End Sub Private Sub BtSync_Click() Dim Target As Long 'Use displayed parameters and start both axis simultaneously 'LoadTrajectory function get and free tokens themselves Poke MOTB, ENMOTR + ENMOTT 'Motors enable Target = DPR + Val(TxPosR.Text) * Val(TxCPTR.Text) LoadTrajectory RAxis, _ CkDirR.Value, _ Val(TxAccelR.Text), _ CkAccelRelR.Value, _ Val(TxVeloR.Text), _ CkVeloRelR.Value, _ Target, _ CkPosRelR.Value, _ CkModeVeloR.Value Target = DPT + Val(TxPosT.Text) * Val(TxCPmm.Text) LoadTrajectory TAxis, _ CkDirT.Value, _ Val(TxAccelT.Text), _ CkAccelRelT.Value, _ Val(TxVeloT.Text), _ CkVeloRelT.Value, _ Target, _ CkPosRelT.Value, _ CkModeVeloT.Value GetToken RAxis GetToken TAxis LM628Poke1 RAxis, STT 'Start moving both LM628Poke1 TAxis, STT FreeToken RAxis FreeToken TAxis End Sub Private Sub btT1_Click() Form1.Show Programing = True End Sub Private Sub BtTRJR_Click() Dim Target As Long BtTRJR.Enabled = False Target = Val(TxPosR.Text) * Val(TxCPTR.Text) 'DPR + Val(TxPosR.Text) * Val(TxCPTR.Text) LoadTrajectory RAxis, _ CkDirR.Value, _ Val(TxAccelR.Text), _ CkAccelRelR.Value, _ Val(TxVeloR.Text), _ CkVeloRelR.Value, _ Target, _ CkPosRelR.Value, _ CkModeVeloR.Value GetToken RAxis LM628Poke1 RAxis, STT 'Start moving immediatly ! FreeToken RAxis WaitRtrajectoryComplete BtTRJR.Enabled = True End Sub Private Sub BtTRJT_Click() Dim Target As Long BtTRJT.Enabled = False Target = Val(TxPosT.Text) * Val(TxCPmm.Text) ' + DPT LoadTrajectory TAxis, _ CkDirT.Value, _ Val(TxAccelT.Text), _ CkAccelRelT.Value, _ Val(TxVeloT.Text), _ CkVeloRelT.Value, _ Target, _ CkPosRelT.Value, _ CkModeVeloT.Value GetToken TAxis LM628Poke1 TAxis, STT 'Start moving immediatly ! FreeToken TAxis WaitTtrajectoryComplete BtTRJT.Enabled = True End Sub Private Sub Check1_Click() ' EndCycle Dim X As Byte X = Peek(GIOA) If Check1.Value Then Poke GIOA, X Or ENDCYCLE Else Poke GIOA, X And BRAKEON + MOTPWRON + MOTPWROFF End If End Sub Private Sub Check5_Click() ' Brake Dim X As Byte X = Peek(GIOA) If Check5.Value = 0 Then Poke GIOA, X Or BRAKEON 'Set to disable brake Else Poke GIOA, X And MOTPWRON + MOTPWROFF + ENDCYCLE End If End Sub Private Sub Command1_Click() ReadLM628s UpdateReadValues End Sub Private Sub Form_Load() #If Nohard Then Command1.Visible = True Debug.Print Debug.Print Debug.Print "***************** Service Form Load " TestPeekPoke.Show #End If Timer1.Enabled = False CenterForm Me Me.Show GetLFILR App.Path & "\LM628R.ini" GetLTRJR App.Path & "\LM628R.ini" GetLFILT App.Path & "\LM628T.ini" GetLTRJT App.Path & "\LM628T.ini" Kaccel = 2000 'Default until specified by OP. InitIO HReset RAxis HReset TAxis ' Dummy move once to reset Motor Off flag in LM628 MoveT 0, RELATIVE MoveR 0, RELATIVE EnableDriverR EnableDriverT #If Nohard = 0 Then Timer1.Enabled = True #End If PwrMotOn AllowsFreeShaft = True Me.BackColor = RGB(0, 180, 0) End Sub Private Sub Timer1_Timer() Static AutoExclude As Boolean Static VGuideStep As Integer Static FootStopped As Boolean 'Static BlinkRate As Integer 'Static Blink As Boolean If (Rtoken = True) Or (Ttoken = True) Then ' Debug.Print "Token in use" Exit Sub 'A LM628 multi bytes command is while loading, try later. End If If AutoExclude Then Exit Sub 'Do not reenter AutoExclude = True IOSwitchesA = Peek(GIOA) IOSwitchesB = Peek(GIOB) If IOSwitchesB And FOOTSWITCH Then 'Op is now allowed to press footswitch to free shaft If Not ShaftFree Then ShaftFree = True FootStopped = True DisableDriverR End If Else If ShaftFree And FootStopped Then ShaftFree = False FootStopped = False HReset RAxis MoveR 0, RELATIVE EnableDriverR End If End If FCButtonState = IOSwitchesB And FCBUTTON IOSwitchesC = Peek(GIOC) MotCtrlStat = Peek(MOTA) If Not SuspendPoll Then ReadLM628s 'Get as many infos as possible about hardware state UpdateReadValues 'Show collected If Not Simulate Then SetRef.FollowRPT (-RPT / CNTPERMM) SetRef.LbTurns.Caption = Format(Abs(RPR / CNTPERTURN), "#.0") End If End If ' BlinkRate = BlinkRate + 1 ' If BlinkRate > 3 Then ' BlinkRate = 0 ' Blink = Not Blink ' If Blink Then SetEndCycleOn ' Else: SetEndCycleOff ' End If '' TO DO and TEST WHEN HARDWARE AVAILABLE '' ' If VGuideStep = 0 Then 'Check for move ' If GuideTarget > GuideCurrent Then 'Do move ' MoveVUp ' End If ' If GuideTarget < GuideCurrent Then ' MoveVDown ' End If ' VGuideStep = VGUIDEPERIOD 'Reload interval ' Else ' VGuideStep = VGuideStep - 1 ' End If AutoExclude = False End Sub Private Sub GetLFILR(File As String) TxIER.Text = GetIniString(File, "LFIL", "IE") TxFilkpR.Text = GetIniString(File, "LFIL", "kp") TxFilkiR.Text = GetIniString(File, "LFIL", "ki") TxFilkdR.Text = GetIniString(File, "LFIL", "kd") TxFililR.Text = GetIniString(File, "LFIL", "il") End Sub Private Sub GetLFILT(File As String) TxIET.Text = GetIniString(File, "LFIL", "IE") TxFilkpT.Text = GetIniString(File, "LFIL", "kp") TxFilkiT.Text = GetIniString(File, "LFIL", "ki") TxFilkdT.Text = GetIniString(File, "LFIL", "kd") TxFililT.Text = GetIniString(File, "LFIL", "il") End Sub Private Sub GetLTRJR(File As String) TxAccelR.Text = GetIniString(File, "LTRJ", "Acceleration") CkAccelRelR.Value = Val(GetIniString(File, "LTRJ", "RelAcceleration")) TxVeloR.Text = GetIniString(File, "LTRJ", "Velocity") CkVeloRelR.Value = Val(GetIniString(File, "LTRJ", "RelVelocity")) TxPosR.Text = GetIniString(File, "LTRJ", "Position") CkPosRelR.Value = Val(GetIniString(File, "LTRJ", "Relposition")) CkModeVeloR.Value = Val(GetIniString(File, "LTRJ", "ModeVelocité")) CkDirR.Value = Val(GetIniString(File, "LTRJ", "Direction")) TxCPTR.Text = GetIniString(File, "LTRJ", "CountsPerTurn") End Sub Private Sub GetLTRJT(File As String) TxAccelT.Text = GetIniString(File, "LTRJ", "Acceleration") CkAccelRelT.Value = Val(GetIniString(File, "LTRJ", "RelAcceleration")) TxVeloT.Text = GetIniString(File, "LTRJ", "Velocity") CkVeloRelT.Value = Val(GetIniString(File, "LTRJ", "RelVelocity")) TxPosT.Text = GetIniString(File, "LTRJ", "Position") CkPosRelT.Value = Val(GetIniString(File, "LTRJ", "Relposition")) CkModeVeloT.Value = Val(GetIniString(File, "LTRJ", "ModeVelocité")) CkDirT.Value = Val(GetIniString(File, "LTRJ", "Direction")) TxCPmm.Text = GetIniString(File, "LTRJ", "CountsPermm") End Sub Public Sub UpdateReadValues() LbDesiredPosR.Caption = Format(DPR) LbDesiredPosT.Caption = Format(DPT) LbDesiredVeloR.Caption = Str(DVR) LbDesiredVeloT.Caption = Str(DVT) LbIndexPosR.Caption = Str(IPR) LbIndexPosT.Caption = Str(IPT) LbIntegrationR.Caption = "?" LbIntegrationT.Caption = "?" LbReaelVeloR.Caption = Str(RVR) LbReaelVeloT.Caption = Str(RVT) LbRealPosR.Caption = Format(RPR) LbRealPosT.Caption = Format(RPT) LbMotA.Caption = LongToSBin(MotCtrlStat) LbStatR.Caption = LongToSBin(STATR) LbStatT.Caption = LongToSBin(STATT) LbESA.Caption = LongToSBin(IOSwitchesA) LbESB.Caption = LongToSBin(IOSwitchesB) LbESC.Caption = LongToSBin(IOSwitchesC) End Sub Private Sub TxAccelR_Change() RealAccelR = Val(TxAccelR.Text) End Sub Private Sub TxAccelT_Change() RealAccelT = Val(TxAccelT.Text) End Sub Private Sub TxVeloR_Change() RealVeloR = Val(TxVeloR.Text) End Sub Private Sub TxVeloT_Change() RealVeloT = Val(TxVeloT.Text) End Sub AutoIndex/SIPRO15/Global.bas0000755000000000000000000010403613730575264012620 0ustar Attribute VB_Name = "Global" Option Explicit Global Machine As Integer 'The attached machine Public Const NOMACHINE = 0 Public Const SIPROMACHINE = 1 Public Const TESTMACHINE = 2 Public Programing As Boolean ''' Some GLOBAL VARIABLES to control execution ' Global AbortExec As Boolean Global Stepping As Integer Global Simulate As Boolean Global Pause As Boolean Global Suspended As Boolean Global InMacro As Integer Global FootSwitchState As Boolean Global FCButtonState As Boolean 'The physical button Global VButtonState As Boolean 'The Virtual (on screen) button Public ProgCopy As String ' Copy for redo Public SilentRun As Boolean Public SuspendLine As Integer Public SuspendStep As Integer Public RunList As String Public Running As String Public BreakLine As Integer Public Const BYSTEP = 1 'Constants for run mode Public Const SIMUL = 2 Public Const TOSTOP = 4 Public TheCaption As String Public LineNo As Integer 'To show current program line Public StepNo As Integer 'To show current program step Public LastPosDone As String Public PrgFile As String 'Path to files Public CcxFile As String Public GgxFile As String Public PrjFile As String ''' For X (carriage ) axis Public Type DChamber 'Pos and size for a chamber Org As Single Width As Single Free As Single End Type Public Chambers(1 To 4) As DChamber Public Chamber As Integer 'Current chamber( or former) 'Dim ChamberFree As Single 'Space remaining in the current chamber '' Moved in DChamber Public RefOffset As Single 'Actual reference offset from ZERO Public PosT As Single 'Actual carriage location relative to reference (in mm)'' Why not a long ? Public Direction As Integer '(1 = to right, -1 = to left) Const TORIGHT = 1 Const TOLEFT = -1 ''' For Y (shaft) axis Dim PosR As Single '' Why not a long ? Public ShaftFree As Boolean ''' For V (carriage lift) axis Global Const GUIDETRAVEL = 200 Public Guide As Integer ' Current guide Public Guides(1 To 4) As Single 'Offset for guides Public GuideTarget As Single ' Where it should be Public GuideCurrent As Single ' Where it really is Public GuideFromPark As Single ' Where it was before parking Global Const GUIDESTEPPERMM = 10 ' Steps per mm Global Const VGUIDEPERIOD = 100 ' Times Service.Timer1 interval Public TbVstep(0 To 7) As Byte 'Steps for the motors (10, 8, 9, 1, 5, 4, 6, 2) Public CurVstep As Integer Public GDone As Boolean Dim Turns As Single 'Last know values. Used by default if not specified Dim Pitch As Single Dim Layers As Single Global RealVeloR As Long Global RealVeloT As Long Global RealAccelR As Long Global RealAccelT As Long Public Sub Main() Dim S As String Machine = 0 S = LCase(Command$) If Len(S) Then Else StartForm.Show End If Select Case Machine Case NOMACHINE Form1.Show Case SIPROMACHINE Service.Show Case TESTMACHINE Exit Sub End Select End Sub Public Sub InitSpVars() 'Initialize the four special variables Dim I As Integer '' TODO '' Add Guides ? SetNVar ":LargeurC1", Chambers(1).Width SetNVar ":LargeurC2", Chambers(2).Width SetNVar ":LargeurC3", Chambers(3).Width SetNVar ":LargeurC4", Chambers(4).Width Form1.RefreshNVars End Sub Public Sub ProgExec(S As String) Dim LLen As Integer Dim I As Integer Dim Sleft As String Dim Command As String Form1.BtDummy.SetFocus 'Immune default button While Suspended 'Panic ! Stay here Wait 100 Wend If AbortExec Then ShowFatal "--- Exécution abandonnée ---" S = "" Exit Sub End If If Len(S) = 0 Then If InMacro Then ShowInfo "--- Fin de macro ---" Else ShowInfo "--- Fin du programme ---" End If Exit Sub End If ' Debug.Print S LLen = InStr(S, vbCrLf) 'Look for a Line feed (eol) ' Beep SuspendLine = LineNo LineNo = LineNo + 1 ' If SilentRun Then ' If LineNo = SuspendLine And StepNo = SuspendStep Then 'Target reached ' SilentRun = False ' ShowInfo "Point de reprise . . ." ' End If ' End If If LLen > 1 Then SuspendStep = StepNo StepNo = StepNo + 1 ShowLineStep Sleft = Trim(Left(S, LLen)) 'Current line) #If Nohard Then Debug.Print "Current Line: "; TTrim(Sleft) #End If Form1.CurLine.Caption = Sleft S = Right(S, Len(S) - LLen) 'Remainder I = InStr(Sleft, "#") 'Look for comment If I Then Sleft = Left(Sleft, I - 1) 'Remove comment from current line If Len(Sleft) Then 'Something else ? ' Form1.BtDoProg.Enabled = False Command = GetCommand(Sleft) Sleft = TTrim(Sleft) ' Select Case UCase(Left(Trim(Command), 1)) 'Commands are not case sensitive Select Case Left(Trim(Command), 1) 'Commands ARE case sensitive Case "A" 'Acceleration Kaccel = 1 + 10000 \ EvalExp(GetParam(Sleft)) 'Can't be zero. SetNVar ":Accel", Kaccel ShowInfo "Accélération: " & Format(Kaccel) Case "C" 'Load former file LoadFormer Sleft Case "G" 'Load guide file infos LoadGuide Sleft Case "R" ' Set reference SetRefV Sleft Case "P" ' "POSITION" Position Sleft ' Add (sub) guide offset Case "B" ' "BOBINE", "BOBINER" Roll Sleft ', 0 Case "V" 'Rotation speed in rpm SetRpm Sleft Case "H", "^" ShowInfo "Positionne l'ascenseur" PosVGuide Sleft ' Case "Z" ' ShowInfo "Recherche du zéro, patientez !" ' GoToZero Case "[", "D", "T" BlocBegin Sleft, S 'Will not return before end of bloc Case "]", "F" 'End of bloc, exit Exit Sub Case "S" '"IF" command. . . IfBegin Sleft, S Case "!", "I" If Len(Sleft) Then ShowInfo Left(Sleft, Len(Sleft)) Else ShowInfo "Presser bouton" End If WaitFCbutton Case "(", "{", "M" 'Insert/execute another program (macro) DoMacro Sleft, S Case "E", "§", "X" StopOrSetMode Sleft Case Else 'Not a command, may be a variable affectation with or without spaces Sleft = Command & Sleft If Len(Sleft) <> 0 Then 'Empty line, ignore I = InStr(Sleft, "=") If I <> 0 Then 'OK, it is an affectation If IsVar(Left(Sleft, I - 1)) Then AffectVar Sleft Else ShowFatal "Mauvais nom de variable" End If Else ShowFatal "Commande inconnue" End If End If End Select End If Else S = Right(S, Len(S) - LLen) 'Eat the line If Len(S) < 2 Then S = "" 'Too short ! End If If Len(Trim(S)) Then ProgExec S 'Up to end of string End Sub Private Sub StopOrSetMode(S As String) Dim Mode As Single Mode = EvalExp(S) '' Set chkboxes according to mode Form1.SetCkMode Mode If SilentRun Then ShowInfo "STOP ATTEIND" End If End Sub Private Sub WaitStep() 'Returns immediatly if not stepping, else wait . . . If AbortExec Then Exit Sub If SilentRun Then Exit Sub If Stepping Then Pause = True While Pause And Not AbortExec Wait 100 Wend End If End Sub Private Sub WaitFCbutton() If AbortExec Then Exit Sub If SilentRun Then Exit Sub Form1.BtFcbutton.Enabled = True 'Enable Virtual button SetEndCycleOn 'Light ON physical button Form1.BtDoProg.Enabled = False VButtonState = False While (Not (FCButtonState Or VButtonState)) And (Not AbortExec) 'Until someone else set it true Wait 100 If IOSwitchesB And FOOTSWITCH Then 'Op is now allowed to press footswitch to free shaft If Not ShaftFree Then ShaftFree = True DisableDriverR End If Else If ShaftFree Then ShaftFree = False HReset RAxis MoveR 0, RELATIVE EnableDriverR End If End If Wend If ShaftFree Then 'Insure shaft is not free ShaftFree = False HReset RAxis MoveR 0, RELATIVE EnableDriverR End If SetEndCycleOff 'Light OFF physical button While FCButtonState ' Wait for OP releases the button Wait 100 Wend ' FCButtonState = False Form1.BtFcbutton.Enabled = False ' SetEndCycleOff 'Light OFF physical button Form1.BtDoProg.Enabled = True End Sub Public Sub ShowInfo(S As String) If SilentRun Then Exit Sub Form1.TxInfo.Text = ExpandExp(S) WaitStep End Sub Public Function ExpandExp(S As String) As String 'Expand expressions included in curly brackets Dim I As Integer Dim T As String Dim L As Integer Dim E As String I = InStr(S, "{") 'Look for an open curly brace If I Then E = Left(S, I - 1) 'Get the left part T = Mid(S, I + 1) L = InStr(T, "}") - 1 'and a balanced closing one If L Then E = E & EvalExp(Left(T, L)) & Right(T, Len(T) - L - 1) ExpandExp = ExpandExp(E) 'More expressions to extend ? Exit Function End If Else ExpandExp = S End If End Function Public Sub ShowFatal(S As String) Beep Form1.TxInfo.Text = Str(LineNo) & " in " & Running & " Erreur: " & S ' AbortExec = True ' Pause = True 'Force pause ' While Pause And Not AbortExec ' Wait 100 ' Wend AbortExec = True End Sub Private Sub IfBegin(Sleft As String, S As String) Dim Condition As Single Condition = EvalExp(Sleft) ShowInfo "Début bloc à exécuter si <" & Sleft & "> différent de zéro" If Condition > 0 Then ProgExec S Else EatBloc S 'skip ShowLineStep End If ShowInfo "Fin SI" End Sub Private Sub BlocBegin(Sleft As String, S As String) Dim Cline As Integer 'Line number at call Dim LastLine As Integer 'Line number at end of loop Dim CE As String 'Dim Count As Integer Dim Bloc As String Dim TFool As Single Cline = LineNo 'Get the current line number ' CE = GetEndOfLine(S) ' CE = GetCommand(s) CE = Sleft TFool = EvalExp(CE) Bloc = S 'To be repeated ShowInfo "Début bloc à exécuter tant que <" & CE & "> différent de zéro" If AbortExec Then Exit Sub While EvalExp(CE) > 0 If AbortExec Then Exit Sub ProgExec Bloc ' Will return at end of THIS bloc Bloc = S ' ready for repeat If EvalExp(CE) >= TFool Then ShowFatal "< " & CE & "> n'évolue pas correctement" End If LastLine = LineNo LineNo = Cline StepNo = StepNo - 1 ' ?? Wend EatBloc S ' LineNo = LastLine StepNo = StepNo + 1 ' ?? again ?? ShowLineStep ShowInfo "Fin TANT QUE" End Sub Private Sub EatBloc(S As String) Dim Command As String Dim L As String Dim I As Integer While Len(S) L = GetEndOfLine(S) If Len(L) Then LineNo = LineNo + 1 Command = GetCommand(L) Select Case Left(Trim(Command), 1) Case "[", "D", "T", "S" I = I + 1 Case "]", "F" I = I - 1 End Select End If If I < 0 Then LineNo = LineNo - 1 ' Ooops ! Exit Sub End If Wend End Sub Private Sub Roll(S As String) Dim X As Single Dim T As String Dim P As String Dim L As String Dim W As Single Dim TLeft As Single Dim TC As Single Dim Diff As Single Dim CTurns As Single Dim N As Integer Dim Reverse As Integer #If Nohard Then Debug.Print "Roll "; S #End If T = GetParam(S) '1st is turns P = GetParam(S) '2nd is pitch L = GetParam(S) '3rd is layers If T = "?" Then 'Get the two other parameters and compute missing If P <> "_" Then Pitch = EvalExp(P) If L <> "_" Then Layers = EvalExp(L) Turns = Layers * Chambers(Chamber).Free / Pitch ' Turns that will fits ' If Turns < 1 Then Turns = Layers * Chambers(Chamber).Width / Pitch 'Less than one: next layer ElseIf P = "?" Then If T <> "_" Then Turns = EvalExp(T) If L <> "_" Then Layers = EvalExp(L) Pitch = Layers * Chambers(Chamber).Free / Turns ' Pitch to use to fill a layer ElseIf L = "?" Then If P <> "_" Then Pitch = EvalExp(P) If T <> "_" Then Turns = EvalExp(T) Layers = Pitch * Turns / Chambers(Chamber).Width End If ' All parameters are know ShowInfo Str(Turns) & " tour(s) au pas de" & Str(Pitch) & "mm en" & Str(Layers) & " couche(s)" If AbortExec Then Exit Sub 'Don't do more SetNVar ":Tours", Turns SetNVar ":Pas", Pitch SetNVar ":Couches", Layers Form1.RefreshNVars SetRef.LbTurns.Caption = "0.0" If Not Simulate Then LM628Poke1 RAxis, DFH 'Voids accumulation in positions register ' CTurns = 0 If Pitch = 0 Or Turns = 0 Or Layers = 0 Then 'No travel, just rotate shaft If Not Simulate Then Form1.BtDoProg.Enabled = False MoveR Turns, RELATIVE Form1.BtDoProg.Enabled = True End If CTurns = Turns ' ShowTurns CTurns Exit Sub End If '' TODO : Since total turns and total layers are know, count layers remaining rather than turns. '' While Layers . . . '' TLeft = Turns 'Local turns counter While TLeft <> 0 If AbortExec Then Form1.BtDoProg.Enabled = True Exit Sub End If Reverse = 1 If Pitch < 0 Then Reverse = -1 Pitch = Abs(Pitch) End If If Chambers(Chamber).Free <= Abs(Pitch) Then 'No enough room Chambers(Chamber).Free = Chambers(Chamber).Width 'A new layer Direction = -Direction End If TC = Chambers(Chamber).Free / Pitch 'How many turns could fits in this layer If TLeft < TC Then TC = TLeft 'But no more than specified ! DisableOp 'Voids operator intervention while motors move Form1.BtDoProg.Enabled = False If Not Simulate Then W = TC * Pitch 'Width to use If W > Chambers(Chamber).Free Then W = Chambers(Chamber).Free MoveSync Reverse * Direction * W, TC Else W = TC * Pitch 'Width to use If W > Chambers(Chamber).Free Then W = Chambers(Chamber).Free SetRef.CarLoc = SetRef.CarLoc + Reverse * Direction * W SetRef.WaitMe SetRef.LbTurns.Caption = Format(TC, "#.0") End If EnableOp Chambers(Chamber).Free = Chambers(Chamber).Free - TC * Pitch * Reverse If Chambers(Chamber).Free <= Pitch Then 'No enough room Chambers(Chamber).Free = Chambers(Chamber).Width 'A new layer Direction = -Direction End If TLeft = TLeft - TC Wend ' SetNVar ":CCN", CSng(Chamber) 'now in position SetNVar ":DChambre", Chambers(Chamber).Width - Chambers(Chamber).Free SetNVar ":SBobinage", CSng(Direction) Form1.RefreshNVars Form1.BtDoProg.Enabled = True ' ShowTurns CTurns End Sub Private Function WidePitch(Pitch As Single, Turns As Single, CWidth As Single) As Single ' Increase pitch so that Turns fit in an integral number of layers having a width of CWidth Dim L As Single 'Layers needed WidePitch = Pitch 'May be we are lucky ! L = Turns * Pitch / CWidth 'How many layers needed ? If L - Int(L) <> 0 Then 'Not an integer L = Int(L) + 1 'Add one layer WidePitch = L * CWidth / Turns 'Total available space divided by turns. End If End Function Public Function Reposition() As Boolean If Len(LastPosDone) Then Position LastPosDone LastPosDone = "" Reposition = True End If End Function Private Sub Position(S As String) ' Up to 4 params: guide, chamber, origin (side)and offset separated by any no print char ' W/O parameters: Park up and Right Dim X As Single Dim V As Single Dim P As String Dim Offset As Single Dim O As String Dim HG As Single ' LastPosDone = S ParkVguides If Len(S) <= 1 Then 'Only one or no parameter at all: park '' TODO '' Check Simulation Select Case UCase(S) Case "D" ShowInfo "Dégagement à droite" If AbortExec Then Exit Sub Form1.BtDoProg.Enabled = False If Not Simulate Then MoveTAbs TOTALTRAVEL Else SetRef.CarLoc = TOTALTRAVEL SetRef.WaitMe End If Case "G" ShowInfo "Dégagement à gauche" If AbortExec Then Exit Sub Form1.BtDoProg.Enabled = False If Not Simulate Then MoveTAbs 0 Else SetRef.CarLoc = 0 SetRef.WaitMe End If Case "H" ShowInfo "Dégagement en haut" If AbortExec Then Exit Sub Case Else ShowInfo "Parking" If AbortExec Then Exit Sub Form1.BtDoProg.Enabled = False If Not Simulate Then MoveTAbs TOTALTRAVEL Else SetRef.CarLoc = TOTALTRAVEL SetRef.WaitMe End If End Select Form1.BtDoProg.Enabled = True Exit Sub End If Chamber = 1 'Default values if not specified. Guide = 1 X = EvalExp(GetParam(S)) If X > 0 And X < 5 Then Guide = Int(X) HG = EvalExp(GetParam(S)) SetNVar ":HGuide", HG X = EvalExp(GetParam(S)) If X > 0 And X < 5 Then Chamber = Int(X) SetNVar ":NChambre", CSng(Chamber) V = Chambers(Chamber).Org - Guides(Guide) 'Add Guide offset wich is negative ! P = GetParam(S) Offset = EvalExp(GetParam(S)) Chambers(Chamber).Free = Chambers(Chamber).Width - Offset SetNVar ":NDispo", Chambers(Chamber).Free Select Case P 'May be litteral "G" or "D" Case "D" Direction = TOLEFT V = V + Chambers(X).Width - Offset P = "à droite" O = " -" & Format(Offset) & "mm" Case "G" Direction = TORIGHT V = V + Offset 'EvalExp(GetParam(S)) P = "à gauche" O = " +" & Format(Offset) & "mm" Case Else If EvalExp(P) >= 0 Then 'Any positive value means relative to LEFT Direction = TORIGHT V = V + Offset P = "à gauche" O = " +" & Format(Offset) & "mm" Else Direction = TOLEFT V = V + Chambers(X).Width - Offset P = "à droite" O = " -" & Format(Offset) & "mm" End If End Select ShowInfo "Positionnement guide" & Str(Guide) & " " & P & " de chambre" & Str(Chamber) & O & " (" & Format(V + RefOffset) & "mm)" If AbortExec Then Exit Sub Form1.BtDoProg.Enabled = False If Not Simulate Then '''' Use absolute positionning to move carriage alone MoveTRef V 'MoveTRef absolute relative to RefOffset Else SetRef.CarLoc = V + RefOffset SetRef.WaitMe End If SetNVar ":NGuide", CSng(Guide) Form1.RefreshNVars Form1.BtDoProg.Enabled = True End Sub Private Sub SetRpm(S As String) Dim X As Single X = EvalExp(GetParam(S)) ShowInfo "Vitesse broche " & X & " tours minute" Form1.HsRotate.Value = Int(X) SetNVar ":Vitesse", X End Sub Private Function GetCommand(S As String) ' Remove the command string from S and returns it Dim I As Integer Dim L As Integer I = 1 While IsWhite(Mid(S, I, 1)) And I <= Len(S) 'Skip leading white spaces I = I + 1 Wend L = I While Not IsWhite(Mid(S, L, 1)) And L <= Len(S) 'to next space L = L + 1 Wend GetCommand = Mid(S, I, L - I) If Len(GetCommand) = 0 Then S = "" Exit Function End If ' Returns remaining of the line (if any) If Len(S) > Len(GetCommand) Then S = Right(S, Len(S) - L) Else S = "" End If End Function Private Function GetEndOfLine(S As String) Dim I As Integer I = InStr(S, Chr(10)) If 1 = 0 Then Exit Function GetEndOfLine = Left(S, I) S = Mid(S, I + 1) ', Len(S) - 1) End Function Public Function NotWhite(S) As String ' Returns the first notwhite string found in S Dim I As Integer Dim L As Integer I = 1 While IsWhite(Mid(S, I, 1)) And I <= Len(S) 'Skip leading white spaces I = I + 1 Wend L = I While Not IsWhite(Mid(S, L, 1)) And L <= Len(S) 'to next space L = L + 1 Wend NotWhite = Mid(S, I, L - I) End Function Private Function GetParam(S As String) As String 'Extract /remove and returns param in param from S. 'S truncated. Dim I As Integer I = 1 While IsWhite(Mid(S, I, 1)) And I <= Len(S) 'Skip leading white spaces I = I + 1 Wend While Not IsWhite(Mid(S, I, 1)) And I <= Len(S) GetParam = GetParam & Mid(S, I, 1) I = I + 1 Wend If Len(S) >= I - 1 Then S = Right(S, Len(S) - (I - 1)) End Function Private Function IsWhite(S As String) As Boolean If S = " " Or S = Chr(9) Or S = Chr(10) Or S = Chr(13) Then IsWhite = True 'space, tab, lf or cr End Function Private Sub AffectVar(S As String) 'Affect a value to a variable and return value Dim I As Integer Dim Var As String Dim Value As String Dim V As Single I = InStr(S, "=") If I > 0 Then Var = TTrim(Left(S, I - 1)) Value = TTrim(Right(S, Len(S) - I)) SetNVar Var, EvalExp(Value) Form1.RefreshNVars ShowInfo "La variable '" & Var & "' vaut " & Str(GetNVar(Var)) End If End Sub Public Function IsVar(S As String) As Boolean Dim C As Integer Dim I As Integer IsVar = False If Len(S) = 0 Then Exit Function C = Asc(Left(S, 1)) 'Check for first letter to be lower case or an underscore or an ":" If C >= Asc("a") And C <= Asc("z") Or C = Asc(":") Or C = Asc("_") Then 'Good candidate For I = 1 To Len(S) 'Let's check remaining C = Asc(Mid(S, I, 1)) If C < Asc("0") Then Exit Function If C > Asc("z") Then Exit Function If (C > Asc("Z") And C < Asc("_")) Then Exit Function If (C > Asc(":") And C < Asc("A")) Then Exit Function If C = Asc("'") Then Exit Function Next IsVar = True 'No forbiden character found End If End Function Public Function EvalExp(Exp As String) As Single ' Recursive expression parser ' Credits to Jos de Jong Dim P As Integer Dim E As String Dim I As Integer Dim J As Integer Dim SRight As String Dim Sleft As String Dim Op As String Dim Temp As Single E = TTrimAll(Exp) 'Remove all spaces. Better to do that before initial call ! ! ! Debug.Print "EvalExp "; E If IsVar(E) Then EvalExp = GetNVar(E) 'just get variable value as string Exit Function End If For J = 1 To 11 Op = Mid("?<>-+\%/*^E", J, 1) P = InP(UCase(E), Op, 255) While P > 0 If IsOp(E, Op, P) Then Sleft = Left(E, P - 1) SRight = Right(E, Len(E) - P) Select Case Op Case "?" 'Force any non nul value to be 1 Temp = EvalExp(SRight) If Temp <> 0 Then Temp = 1 EvalExp = Temp Exit Function Case "<" 'Floor EvalExp = Int(EvalExp(SRight)) Exit Function Case ">" 'Ceil Temp = Int(EvalExp(SRight)) If Temp < EvalExp(SRight) Then EvalExp = Temp + 1 Else EvalExp = Temp End If Exit Function Case "-" EvalExp = EvalExp(Sleft) - EvalExp(SRight) Exit Function Case "+" EvalExp = EvalExp(Sleft) + EvalExp(SRight) Exit Function Case "*" EvalExp = EvalExp(Sleft) * EvalExp(SRight) Exit Function Case "/" If EvalExp(SRight) = 0 Then ' ShowInfo "FATAL: " & Str(Sleft) & " / " & Str(SRight) & ": Division par 0" Exit Function End If EvalExp = EvalExp(Sleft) / EvalExp(SRight) Exit Function Case "\" 'Integer division If EvalExp(SRight) = 0 Then 'Divide by 0 Exit Function End If EvalExp = EvalExp(Sleft) \ EvalExp(SRight) Exit Function Case "%" 'Division remainder If EvalExp(SRight) = 0 Then 'Divide by 0 Exit Function End If EvalExp = Int(EvalExp(Sleft) Mod EvalExp(SRight)) Exit Function Case "^" EvalExp = EvalExp(Sleft) ^ EvalExp(SRight) Exit Function Case "E" EvalExp = EvalExp(Sleft) * 10 ^ EvalExp(SRight) Exit Function End Select End If If P > 0 Then P = InP(E, Op, P - 1) 'not an operator, search for another before Wend Next 'Check if expression starts and ends with parenthesis If Left(E, 1) = "(" And Right(E, 1) = ")" Then E = Mid(E, 2, Len(E) - 2) 'Remove them EvalExp = EvalExp(E) 'And evaluate Exit Function End If ' No more operator, evaluates and returns the operand EvalExp = Val(E) Exit Function End Function Private Function InP(Source As String, Search As String, start As Integer) As Integer ' Search backward for "Search" in "String" returning where it was found. Dim N As Integer Dim Bopen As Integer Dim Bclose As Integer Dim Sign As String N = start If N > Len(Source) Then N = Len(Source) - Len(Search) + 1 Bopen = 0 Bclose = 0 ' Do While N Sign = Mid(Source, N, Len(Search)) If (Sign = Search) And (Bopen = Bclose) Then InP = N Exit Function End If If Left(Sign, 1) = "(" Then Bopen = Bopen + 1 If Left(Sign, 1) = ")" Then Bopen = Bopen - 1 N = N - 1 Wend ' Loop Until N <= 0 InP = 0 End Function Private Function IsOp(expr As String, Op As String, N As Integer) As Boolean Dim Sign As String Select Case Op Case "+" If N = 1 Then IsOp = False Exit Function End If If Mid(expr, N - 1, 1) = "E" Then 'Do not accept lower case e wich can be a variable If N > 2 Then If InStr("1234567890.", Mid(expr, N - 2, 1)) > 0 Then IsOp = False Exit Function End If End If End If IsOp = True Exit Function Case "-" If N = 1 Then IsOp = False Exit Function Else Sign = Left(expr, N - 1) Sign = Right(RTrim(Sign), 1) If InStr("=?<>+-/*\%^", Sign) > 0 Then IsOp = False Exit Function End If If Mid(expr, N - 1, 1) = "E" And N > 2 Then If InStr("1234567890.", Mid(expr, N - 2, 1)) > 0 Then IsOp = False Exit Function End If End If End If IsOp = True Exit Function End Select IsOp = True End Function Public Sub ShowLineStep() Form1.LbShowLS.Caption = "Line: " & Str(LineNo) & " Pas: " & Str(StepNo) Form1.SelectLine LineNo End Sub Private Sub DisableOp() '' TODO '' Disable pertinent buttons ' Form1.MousePointer = vbHourglass End Sub Private Sub EnableOp() ' Form1.MousePointer = vbDefault End Sub Private Sub SetRefV(S As String) RefOffset = EvalExp(GetParam(S)) ShowInfo "La référence est " & Format(RefOffset, "0.0##") End Sub Public Sub ParkVGuide(Guide As Integer) Lift.MoveGuide Guide, 0 While Not GDone Wait 100 Wend End Sub Public Sub ParkVguides() Lift.MoveGuide 0, 0 Lift.MoveGuide 1, 0 While Not GDone Wait 100 Wend End Sub Public Sub UnparkVGuide() GuideTarget = GuideFromPark End Sub Public Sub PosVGuide(S As String) Dim G As Single Dim H As Single G = EvalExp(GetParam(S)) H = EvalExp(GetParam(S)) If G < 0 Or G > 1 Then ShowFatal "Pas cet ascenseur !" Exit Sub End If If H < 0 Or H > GUIDETRAVEL Then ShowFatal "Pas cet étage" Exit Sub End If Lift.MoveGuide Int(G), Int(H) While Not GDone Wait 100 Wend End Sub Public Sub WaitForPark() While GuideTarget <> GuideCurrent 'Camp here Wait 100 Wend End Sub Public Sub DisableDriverV() 'poke 0 . . . End Sub Public Sub EnableDriverV() 'Poke TbVstep(CurVstep) End Sub Public Sub MoveVUp() CurVstep = CurVstep + 1 If CurVstep > 4 Then CurVstep = 0 EnableDriverV End Sub Public Sub MoveVDown() CurVstep = CurVstep - 1 If CurVstep < 1 Then CurVstep = 4 EnableDriverV End Sub Private Sub DoMacro(Sleft As String, S As String) Dim SaveLineno As Integer Dim SaveTxProg Dim SaveS As String Dim File As String Dim F As Integer Dim T As String Dim Macro As String Dim Path As String If Not MarkRunning(Sleft) Then ShowFatal Sleft & " ne peut s'appeler lui même" Exit Sub End If SaveLineno = LineNo ' Save caller's context SaveTxProg = Form1.TxProg.Text SaveS = S Path = GetIniString(INIFILE, "PATH", "PROGRAM") If Len(Path) = 0 Then Path = App.Path File = Path & "\" & NotWhite(Sleft) & ".prg" F = IsOpen(File, "R", 10) If F = 0 Then ShowFatal "--- " & GetFname(File) & " introuvable ---" Exit Sub End If Running = GetFname(File) ShowInfo "Exécution de " & GetFname(File) If AbortExec Then Exit Sub '' TODO Restore current before ? While Not EOF(F) Line Input #F, T Macro = Macro & T & vbCrLf Wend XClose F, 10 InMacro = InMacro + 1 Form1.TxProg.Text = Macro 'This trigs TxProg change etc .... Form1.Caption = TheCaption & "( Exécution macro: " & Running & ")" LineNo = 0 ProgExec Macro ' Execute content of the "macro" file LineNo = SaveLineno 'At return, restore context Form1.TxProg.Text = SaveTxProg Form1.Caption = TheCaption & "(" & GetFname(PrgFile) & ")" S = SaveS InMacro = InMacro - 1 FreeRunning Sleft End Sub Private Sub LoadFormer(Sleft As String) Dim F As Integer Dim I As Integer Dim File As String Dim T As String Dim Path As String Path = GetIniString(INIFILE, "PATH", "FORMER") If Len(Path) = 0 Then Path = App.Path File = Path & "\" & TTrim(Sleft) & ".ccx" ShowInfo "Chargement des infos carcasse " & GetFname(File) F = IsOpen(File, "R", 10) If F = 0 Then ShowFatal "--- " & GetFname(File) & " introuvable ---" Exit Sub End If For I = 0 To 7 Line Input #F, T Form1.TxC(I) = T Next XClose F, 10 Form1.SetupChambers End Sub Private Sub LoadGuide(Sleft As String) Dim F As Integer Dim I As Integer Dim File As String Dim T As String Dim Path As String Path = GetIniString(INIFILE, "PATH", "GUIDE") If Len(Path) = 0 Then Path = App.Path File = Path & "\" & TTrim(Sleft) & ".ggx" ShowInfo "Chargement des infos guide " & GetFname(File) F = IsOpen(File, "R", 10) If F = 0 Then ShowFatal "--- " & GetFname(File) & " introuvable ---" Exit Sub End If For I = 0 To 3 Line Input #F, T Form1.TxG(I) = T Next XClose F, 10 Form1.SetupGuides End Sub Private Function MarkRunning(ToAdd As String) If InStr(RunList, UCase(ToAdd)) <> 0 Then ' Already running MarkRunning = False Exit Function Else RunList = RunList & UCase(ToAdd) & "," 'Add in list MarkRunning = True End If End Function Private Sub FreeRunning(ToRemove As String) Dim I As Integer I = InStr(RunList, UCase(ToRemove)) If I > 0 Then RunList = Left(RunList, Len(RunList) - Len(ToRemove)) End Sub AutoIndex/SIPRO15/HelpFile.txt0000755000000000000000000001733213730575262013162 0ustar ==== RESUME DES COMMANDES DE PROGRAMMATION ==== # Commentaire sans effet. ! (ou I) Pause suivi d'instructions pour l'opérateur. [ (ou D ou T) Début bloc à répéter (Imbricables) . ] (ou F) Fin bloc à répeter ou à exécuter (voir commande S). ( (ou M) Appel sous programme. Suivi de nom de fichier "x.prg". A Acceleration . B Bobiner . C Suivi de nom de fichier "x.ccx" E Test et change le mode d'Exécution du programme. G Suivi de nom de fichier "x.ggx". H (ou ^) Hauteur du guide . P Positionner chariot et guide R Définir la Référence. S Si :Debut d'un bloc de commandes à exécuter (Imbricables) . Z Cherche la limite gauche (Zéro). ==== SYNTAXE GENERALE ==== Le premier caractère d'une commande DOIT toujours être majuscule. Il DOIT exister un espace entre la commande et ses paramètres ainsi qu'entre les paramètres eux mêmes. Le nom de la commande peut être rallongé à volonté afin d'améliorer la lisibilité mais SANS espaces. Exemples: Bobiner ou BOBINER est equivalent à B Carcasse est équivalent à C Debut ou DebutBloc est équivalent à D etc... Représente un NOMBRE, une VARIABLE ou une EXPRESSION. Un NOMBRE ne doit contenir que des chiffres, le séparateur décimal est le point (.). Un nom de VARIABLE DOIT commencer par une lettre minuscule ou le signe _. Il peut contenir un nombre quelconque de chiffres, de lettres minuscules ou majuscules ou le signe _ mais PAS d'espaces. Le contenu d'une VARIABLE est un NOMBRE. Une EXPRESSION DOIT contenir des NOMBRES ou des VARIABLES séparés par des opérateurs et renvoie un NOMBRE. Les espaces sont facultatifs. Les opérateurs + - / * ^ et E sont supportés ainsi que : \ Division entière. % Reste de la division. > Qui renvoie le nombre entier immédiatement supérieur. < Qui renvoie le nombre entier immédiatement inférieur. ? Qui renvoie la valeur 1 pour toute valeur différente de 0 (zéro). Les parenthèses sont supportées. ==== DETAIL DE LA SYNTAXE DE CHAQUE COMMANDE dans l'ordre logique d'emploi.==== == Syntaxe Z (Zero) Déplace le chariot vers sa position extrème gauche et l'enregistre. DOIT être effectuée à chaque mise sous tension. Le bouton "Zéro" de la zône verte (chariot) dans la fenêtre de programation a le même effet. == Syntaxe R (Référence) Distance entre la position ZERO du chariot et le bord gauche de la première chambre/carcasse pour le premier guide. Sert de base de calcul pour toutes les commandes P suivantes. Le bouton "Référence" de la zône verte (chariot) dans la fenètre de programmation autorise le positionnement visuel de la référence. == Syntaxe P (Position) sans paramètre ou P D Dégage le guide vers le haut et le chariot vers la droite. P G Dégage le guide vers le haut et le chariot vers la gauche. P H Dégage le guide vers le haut, ne déplace pas le chariot. P Déplace le chariot pour faire coïncider un guide avec une chambre/carcasse. est le numéro du guide de 1 à 4. est la profondeur du guide dans la chambre en millimètres. est le numéro de la chambre de 1 à 4. Si < 0, positionne le guide à gauche de la chambre. Le bobinage suvant se fera vers la droite. Si > 0, positionne le guide à droite de la chambre. Le bobinage suivant se fera vers la gauche. Les lettres "G" ou "D" majuscules sont aussi acceptées. (facultatif, 0 par défaut). En millimètres. Si positif, corrige la position vers l'intérieur de la chambre. Si négatif, corrige la position vers l'extérieur de la chambre. Variables affectée. L'exécution de cette commande met à jour les variables suivantes: :NChambre = N° de la chambre :LDispo = Largeur dispo dans la chambre :NGuide = N° du Guide NOTE ::: Les raccourcis P G, P D et P H n'affectent pas ces variables. == Syntaxe H ou ^ (Hauteur guides) en mms. 0 est la position haute. == Syntaxe A (Acceleration) Ajuste la valeur de l'accélération en début et en fin de couche. == Syntaxe B (Bobine) Seulement deux paramètres doivent être spécifiés, le troisième (indiqué par un ?) est calculé en fonction des deux autres et de la largeur de la chambre/carcasse. NOTE ::: Un pas spécifié 0 fait tourner la broche du nombre de tours spécifié, le paramètre est ignoré. NOTE ::: Si les trois paramètres sont spécifiés, le nombre de couches est ignoré. Variables affectées. L'exécution de cette commande met à jour les variables suivantes: :DChambre = Decalage dans la chambre :SBobinage = Sens du bobinage, +1 vers la gauche, -1 vers la droite. :Tours = Nombre de tours efectivement bobinés. :Pas = Pas effectivement utilisé. :Couches = Nombre de couches effectivement bobinées Après exécution, les trois valeurs réellement utilisées sont disponibles dans les variables ":Tours", ":Pas" et ":Couches". Elles sont remises à jour à chaque exécution de la commande. == Syntaxe D (DébutBloc) ou T (Tantque) Début de bloc de commande à itérer tant que est supérieure à zéro. est une expression réévaluée à chaque itération. Une erreur est signalée si la valeur de condition ne diminue pas ce qui aboutirait à un nombre infini de répétitions. Les blocs à répéter sont imbricables. F (Finbloc) : Fin du bloc à répéter. == Syntaxe S (Si) Debut de bloc de commande à exécuter si est supèrieure a zéro. F (FinSi) : Fin du bloc a exécuter. == Syntaxe M (Macro ou sous programme) Fichier Fichier est le nom du fichier.prg à exécuter qui peut lui même invoquer une autre macro mais ne doit JAMAIS aboutir à s'invoquer elle même ce qui céerait une boucle infinie. Les macros héritent des variables, c'est la seule façon de les paramétrer. == Syntaxe E (Exécution) Définit et teste le mode d'exécution du programme. Il y a trois modes d'exécution combinables et définissables par cette commande comme par les trois cases à cocher suivantes: - Pas à pas: (Valeur 1) Le programme s'arrète à chaque ligne en détaillant les effets de la commande. - Simulation: (Valeur 2) Les moteurs ne sont pas pilotés, les mouvements du chariot sont simulés dans la fenêtre "Définir la référence" - Coi: (Valeur 4) Le programme s'exécute sans effets apparents mais exécute tous les calculs intèrmédiares. Le mode pas à pas est ignoré La valeur donnée à la commande E est la somme des valeurs individuelles, les valeurs les plus utiles sont: 0 : Exécution Normale. 1 : Exécution pas à pas. 2 : Exécution simulée. 3 : Exécution pas à pas simulée. 6 : Exécution coite simulée. La commande E est exécutée quel que soit le mode courant puis l'exécution se poursuit dans le nouveau mode spécifié. La combinaison de ces trois modes facilite la mise au point d'un programme ainsi que la reprise après un incident. IMPORTANT: les mouvements du chariot n'étant pas effectués en mode Coi, la commande E provoquant la reprise DOIT préceder une commande de positionnement. AutoIndex/SIPRO15/LM628.bas0000755000000000000000000005336613730575263012200 0ustar Attribute VB_Name = "LM628" Option Explicit ''''''''''''''''''''''''''''''''''''''''''' ''' Hardware adresses and usage ''' 'LM628s Base addresses Global Const RAxis = &H100 'Rotation(W) Global Const TAxis = &H104 'Translation(X) Global Const RELATIVE = True 'Set corresponding bit to 1 Global Const ABSOLUTE = False 'Set corresponding bit to 0 Global Const CNTPERTURN = 720 Global Const CNTPERMM = 1000 Global Const TOTALTRAVEL = 160 'As Charly said Public Kaccel As Single 'Global Const KACCEL = 200 'Global Ports(1 To 2) As Long 'LM628 command codes Global Const RESET = 0 'As expected ! Global Const PORT8 = 5 '8 bits output (not used) Global Const PORT12 = 6 '12 bits output Global Const DFH = 2 'Define Home Global Const SIP = 3 'Set Index Position Global Const LPEI = &H1B 'Interrupt On Error Global Const LPES = &H1A 'Stop on Error Global Const SBPA = &H20 'Set Breakpoint Absolute Global Const SBPR = &H21 'Set Breakpoint Relative Global Const MSKI = &H1C 'Mask Interrupt Global Const RSTI = &H1D 'Reset Interrupt Global Const LFIL = &H1E 'Load Filter 'Bits allocation in Control Word for LFIL command Global Const LDil = 1 Global Const LDkd = 2 Global Const LDki = 4 Global Const LDkp = 8 Global Const UDF = 4 'Update Filter Global Const LTRJ = &H1F 'Load Trajectory 'Bits allocation in Control Word for LTRJ command Global Const POSREL = 1 Global Const LDPOS = 2 Global Const VELOREL = 4 Global Const LDVELO = 8 Global Const ACCREL = 16 Global Const LDACC = 32 Global Const TMOTOFF = 256 Global Const STOPABRUPT = 512 Global Const STOPSOFT = 1024 Global Const VELOMODE = 2048 Global Const FWD = 4096 Global Const STT = 1 'Start Trajectory Global Const RDSTAT = 0 'Read Satus adress 'Bits allocation in RDSTAT: Global Const Busy = 1 Global Const CmdError = 2 Global Const TrajectComplete = 4 Global Const IndexPulse = 8 Global Const WrapAround = 16 Global Const ExessivePos = 32 Global Const BkPointReached = 64 Global Const MototOff = 128 Global Const RDSIGS = &HC 'Read Signals Register Global Const RDIP = 9 'Read Index Position Global Const RDDP = 8 'Read Desired Position Global Const RDRP = &HA 'Read Real Position Global Const RDDV = 7 'Read Desired Velocity Global Const RDRV = &HB 'Read Real Velocity Global Const RDSUM = &HD 'Read Integration Sum '8255 IO Board Global Const GIOA = &H300 'Bit alocation in GIOA Global Const BRAKEON = 8 'output 1 to release brake Global Const MOTPWRON = 1 'output: Pulse to switch Motors Supply On Global Const MOTPWROFF = 2 'output: Pulse to switch Motors Supply Off Global Const ENDCYCLE = 4 'output: ? Global Const GIOB = &H301 'Bit allocation in GIOB Global Const PROTECT = 4 'input: Protection Open Global Const GENPWR = 1 'input: Main Power On Global Const MOTPWR = 2 'input: Motors Powered Global Const FCBUTTON = 8 'input: Fin Cycle Global Const FOOTSWITCH = 16 'input: FootSwitch Global Const GIOC = &H302 'Bit allocation in GIOC Global Const GIOCreg = &H303 'Bit allocation in GIOCreg 'Control PP3 on Motor Control Board Global Const MOTA = &H110 'Bit allocation in MOTA Global Const OneTurn = 1 'Input (Latched ?) Global Const OneStep = &H10 'Input (Latched ?) Global Const ENDT = &H20 'Input: Carriage End of Travel Global Const DRVTOK = &H40 'Input: ? Global Const DRVROK = &H4 'Input: ? Global Const MOTB = &H111 'Bit allocationin MOTB Global Const ENMOTR = 1 ' output: Enable Rotation Global Const ENMOTT = 2 ' output: Enable Translation Global Const MOTC = &H112 'Bit allocation in MOTC ' UNUSED ' Global Const MOTCreg = &H113 'Bit allocation in MOTCreg ' UNUSED ' ''' End of Hardware adresses and usage ''' ''''''''''''''''''''''''''''''''''''''''''''''''' '' Some variables to emulate peek an poke when debging w/o hardware Public vGIOA As Byte Public vGIOB As Byte Public vGIOC As Byte Public vMOTA As Byte Public vMOTB As Byte Public vMOTC As Byte Public vMOTCreg As Byte Public vRaxis As Byte Public vTaxis As Byte 'Some current values updated by the timer Public STATR As Long Public STATT As Long Public SIGSR As Long Public SIGST As Long Public IPR As Long Public IPT As Long Public DPR As Long Public DPT As Long Public DVR As Long Public DVT As Long Public RVR As Long Public RVT As Long Public RPR As Long Public RPT As Long Public SUMR As Long Public SUMT As Long Public IOSwitchesA As Long 'Integer Public IOSwitchesB As Long Public IOSwitchesC As Long Public MotCtrlStat As Long Public IOSwitchesP As Long 'Previously read values to detect changes Public MotCtrlStatP As Long Global Rpm As Long ' Rotation speed Global RStoppedAt As Single Global TStoppedAt As Single Global Zeroed As Boolean Public CurrentVG As Integer 'Location of the vertical guide Public TargetVG As Integer 'from 0 (up) to MAXVG Public Const MAXVG = 1000 'Steps to move full range ' InterLock flags Global SuspendPoll As Boolean Global Rtoken As Boolean 'Dialog pending when true Global Ttoken As Boolean Global AllowsFreeShaft As Boolean Public Sub SetEndCycleOn() Poke GIOA, Peek(GIOA) Or ENDCYCLE End Sub Public Sub SetEndCycleOff() Poke GIOA, Peek(GIOA) And Not ENDCYCLE ' Debug.Print "SetEndCycleOff "; Hex(Not ENDCYCLE) End Sub Public Function AdjustFormat(X As Long) As Long 'Returns a 30bits signed value as expected by LM628 AdjustFormat = X 'Except if ... If X < &HC0000000 Then AdjustFormat = &HC0000000 End If If X > &H3FFFFFFF Then AdjustFormat = &H3FFFFFFF End If ' Debug.Print "Adjust", X, Hex(AdjustFormat) End Function Public Sub InitIO() #If Nohard = 1 Then Debug.Print "****************** Public Sub InitIO()" #End If Poke GIOCreg, &H8A 'Affect pins direction ? Poke MOTCreg, &H91 'Affect pins direction ? Poke GIOA, BRAKEON ' + MOTPWRON ' Release brake only, no power applied Poke MOTB, 0 'Disable motor drivers End Sub Public Sub EnableDriverR() Poke MOTB, Peek(MOTB) Or ENMOTR End Sub Public Sub EnableDriverT() Poke MOTB, Peek(MOTB) Or ENMOTT If Programing Then Form1.TOnOff.Visible = True End Sub Public Sub DisableDriverR() Poke MOTB, Peek(MOTB) And Not ENMOTR End Sub Public Sub DisableDriverT() Poke MOTB, Peek(MOTB) And Not ENMOTT If Programing Then Form1.TOnOff.Visible = False End Sub Public Sub PwrMotOff() Poke GIOA, Peek(GIOA) Or MOTPWROFF Wait 100 Poke GIOA, Peek(GIOA) And Not MOTPWROFF Wait 100 End Sub Public Sub PwrMotOn() Poke GIOA, Peek(GIOA) Or MOTPWRON Wait 100 Poke GIOA, Peek(GIOA) And Not MOTPWRON Wait 100 End Sub Public Sub ReadLM628s() '' TODO '' Remove calls to unused registers #If Nohard = 1 Then Debug.Print "****************** ReadLM628s " ' MsgBox "", vbOKOnly, "Public Sub ReadLM628s()" ' Exit Sub #End If STATR = Peek(RAxis) 'read base adress W/O any test STATT = Peek(TAxis) ' SIGSR = ReadData(RAxis, RDSIGS, 2) ' SIGST = ReadData(TAxis, RDSIGS, 2) ' IPR = ReadData(RAxis, RDIP, 4) ' IPT = ReadData(TAxis, RDIP, 4) DPR = ReadData(RAxis, RDDP, 4) DPT = ReadData(TAxis, RDDP, 4) RPR = ReadData(RAxis, RDRP, 4) RPT = ReadData(TAxis, RDRP, 4) DVR = ReadData(RAxis, RDDV, 4) DVT = ReadData(TAxis, RDDV, 4) RVR = ReadData(RAxis, RDRV, 2) RVT = ReadData(TAxis, RDRV, 2) ' SUMR = ReadData(RAxis, RDSUM, 2) ' SUMT = ReadData(TAxis, RDSUM, 2) End Sub Public Function ReadData(Port As Long, Cmde As Byte, Bytes As Integer) As Long ' Obtain values from LM628 readable registers. ' Cmde is the command code, Bytes is the length of data to be read. ' #If Nohard = 1 Then ' MsgBox "Axis: " & Axis & vbCrLf & "Code: " & Str(Code) & vbCrLf & "Bytes: " & Str(Bytes) ' Exit Function ' #End If GetToken Port LM628Poke1 Port, Cmde ReadData = RcvData(Port, Bytes) FreeToken Port End Function Public Function RcvData(Port As Long, Bytes As Integer) As Long Dim B As Byte Dim I As Integer Dim J As Integer Dim X As Double Dim T(1 To 4) As Integer ' #If Nohard = 1 Then ' T(1) = &H0 ' T(2) = &H0 ' T(3) = &H0 ' T(4) = &H1 ' ' For I = 1 To Bytes ' B = T(I) 'Simulate peek a byte ' X = X * 256 'Accumulate in a double to void sign interpretation ' X = X + B ' Debug.Print I, X ' Next ' If X >= 2 ^ 31 Then 'Too large for a signed long ' X = X - 2 ^ 32 'Convert to a signed long ' End If ' RcvData = X ' Debug.Print RcvData, Hex(RcvData) ' Exit Function ' #End If ' GetToken Port Wbusy Port For I = 1 To Bytes / 2 For J = 1 To 2 B = Peek(Port + 1) ' Data address is at port+1 X = X * 256 X = X + B Next Wbusy Port Next If X >= 2 ^ 31 Then 'Too large for a signed long X = X - 2 ^ 32 'Convert to a signed long End If RcvData = X #If Nohard Then Debug.Print "Read value "; X #End If ' FreeToken Port End Function Public Sub HReset(Port As Long) ' Reset the LM628 and reload filter parameters. Dim R As Byte #If Nohard = 1 Then Debug.Print "****************** HReset "; Hex(Port) Exit Sub #End If SuspendPoll = True Wait 100 'Alow current poll to finish While R <> &HC0 'Or R <> &HC0 While R <> &HC4 'Or R <> &HC4 Poke Port, RESET 'Or a software RESET if hardware not available Wait 2 'Wait for LM628 terminates internal reset sequence. R = Peek(Port) Or &H40 'Read STSAT Wend LM628Poke1 Port, RSTI LM628Poke2 Port, 0 'Disable all interrupts Wait 2 R = Peek(Port) Or &H40 Wend Wait 2 LM628Poke1 Port, PORT12 LM628Poke1 Port, RSTI LM628Poke2 Port, 0 'Disable all interrupts LM628Poke1 Port, MSKI LM628Poke2 Port, 0 'Mask all interrupts If Port = RAxis Then Service.SetFilterR If Port = TAxis Then Service.SetFilterT SuspendPoll = False End Sub Public Sub LoadFilters(Port As Long, SI As Byte, kp As Long, ki As Long, kd As Long, il As Long) #If Nohard = 1 Then ' MsgBox "Port: " & Str(Port) & vbCrLf & "SI: " & Str(SI) & vbCrLf & "kp: " & Str(kp) & vbCrLf & "kd: " & Str(kd) & vbCrLf & "ki: " & Str(ki) & vbCrLf & "il: " & Str(ki), _ vbOKOnly, "Public Sub LoadFilters(Port As Long, SI As Byte, kp As Long, kd As Long, ki As Long, il As Long)" Debug.Print "LoadFilters "; Port, Hex(SI), Hex(kp), Hex(ki), Hex(kd), Hex(il) Exit Sub #End If ' GetToken Port LM628Poke1 Port, LFIL LM628Poke2 Port, SI * 256 + LDil + LDkd + LDki + LDkp 'Load all parameters LM628Poke2 Port, kp LM628Poke2 Port, ki LM628Poke2 Port, kd LM628Poke2 Port, il ' FreeToken Port End Sub Public Sub LoadTrajectory(Port As Long, _ Dir As Boolean, _ Acc As Long, _ RelAcc As Boolean, _ Velov As Long, _ RelVelo As Boolean, _ Pos As Long, _ RelPos As Boolean, _ Velom As Boolean) Dim ControlWord As Long #If Nohard = 1 Then Static N As Integer N = N + 1 Debug.Print "LoadTrajectory (" & Format(N) & ") Port :", Port, N Debug.Print "Dir", "Acc", "RelAcc", "VeloV", "RelVelo", "Pos", "RelPos", "Velom" Debug.Print Dir, Acc, RelAcc, Velov, RelVelo, AdjustFormat(Pos), RelPos, Velom Exit Sub #End If GetToken Port LM628Poke1 Port, LTRJ 'Send command code ControlWord = LDPOS + LDVELO + LDACC 'Build Control Word If Dir Then ControlWord = ControlWord + FWD If RelAcc Then ControlWord = ControlWord + ACCREL If RelVelo Then ControlWord = ControlWord + VELOREL If RelPos Then ControlWord = ControlWord + POSREL If Velom Then ControlWord = ControlWord + VELOMODE ' Debug.Print Hex(ControlWord) Service.Spy.Text = LongToSBin(ControlWord) LM628Poke2 Port, ControlWord ''''''Theese Parameters have to be formated . . . LM628Poke4 Port, Acc LM628Poke4 Port, Velov LM628Poke4 Port, AdjustFormat(Pos) FreeToken Port End Sub Public Sub DoRSTI(Port As Long) LM628Poke1 Port, RSTI LM628Poke2 Port, 0 End Sub Public Function Peek(Port As Long) As Byte #If Nohard = 1 Then ' Debug.Print "peek "; Hex(Port) Select Case Port Case GIOA Peek = vGIOA Case GIOB Peek = vGIOB Case GIOC Peek = vGIOC Case MOTA Peek = vMOTA Case MOTB Peek = vMOTB Case MOTC Peek = vMOTC Case vMOTCreg Peek = vMOTCreg ' Case RAxis ' Peek = vRaxis ' Case TAxis ' Peek = vTaxis Case Else Peek = &HFF End Select Debug.Print "peek "; Hex(Port), Peek Exit Function #End If Peek = DlPortReadPortUchar(Port) End Function Public Sub Poke(Port As Long, V As Byte) 'don't care if busy ' Send a single byte to an IO. #If Nohard = 1 Then Debug.Print "Poke "; Hex(Port), Hex(V) Select Case Port Case GIOA vGIOA = V TestPeekPoke.Text1 = Str(V) Case GIOB vGIOB = V TestPeekPoke.Text2 = Str(V) Case GIOC vGIOC = V TestPeekPoke.Text3 = Str(V) Case MOTA vMOTA = V TestPeekPoke.Text4 = Str(V) Case MOTB vMOTB = V TestPeekPoke.Text4 = Str(V) Case MOTC vMOTC = V TestPeekPoke.Text5 = Str(V) Case vMOTCreg vMOTCreg = V TestPeekPoke.Text6 = Str(V) Case RAxis vRaxis = V TestPeekPoke.Text7 = Str(V) Case TAxis vTaxis = V TestPeekPoke.Text8 = Str(V) End Select Exit Sub #End If DlPortWritePortUchar Port, V End Sub Public Sub LM628Poke1(Port As Long, V As Byte) ' Send a single byte (command) to one LM628 waiting for not busy. #If Nohard = 1 Then ' Just skip Debug.Print "LM628Poke1 "; Hex(Port), Hex(V) Exit Sub #End If #If Nohard = 2 Then ' Show where we are MsgBox "Port: " & Hex(Port) & vbCrLf & "V: " & Hex(V), vbOKOnly, "Public Sub LM628Poke1(Port As Long, V As Byte)" Exit Sub #End If Wbusy Port DlPortWritePortUchar Port, V End Sub Public Sub LM628Poke2(Port As Long, V As Long) 'when busy free ' Send a 16 bit data word as two 8 bits, MSB first into LM628. #If Nohard Then Debug.Print "Poke2", Hex(V), Hex(V \ 256), Hex(V And 255) #End If Wbusy Port Poke Port + 1, (V \ 256) 'Shift right Poke Port + 1, V And 255 'Mask End Sub Public Sub LM628Poke4(Port As Long, V As Long) ' Send a 32 bits data word to one LM628. Dim Y As Long Y = V \ 65536 'Right shift 16bits but sign is lost ! If V < 0 Then Y = Y - 1 'Restore it. Y = Y And 65535 'And truncate. Funny isn't it #If Nohard Then Debug.Print "Poke4", Hex(V), Hex(Y), Hex(V And 65535) #End If LM628Poke2 Port, Y 'Send 16 msb checking busy LM628Poke2 Port, V And 65535 End Sub Public Sub Wbusy(Port As Long) 'Wait for LM628 not busy #If Nohard = 1 Then Exit Sub #End If While Peek(Port) And Busy 'Stay here ! 'Should be (Port + RDSTAT) but since RDSTAT is 0 . . . Wend End Sub Public Sub GetToken(Port As Long) ' Wait for token free then get it #If Nohard = 1 Then Debug.Print "---- GetToken", Port ' Exit Sub #End If If Port = RAxis Then While Rtoken = True DoEvents 'Camp here until token free Wend Rtoken = True 'mark not free ' Debug.Print Port & " Token in use" End If If Port = TAxis Then While Ttoken = True DoEvents Wend Ttoken = True ' Debug.Print Port & " Token in use" End If End Sub Public Sub FreeToken(Port As Long) ' Release token #If Nohard Then Debug.Print "---- FreeToken", Port #End If If Port = RAxis Then Rtoken = False ' Debug.Print Port & " Token free" End If If Port = TAxis Then Ttoken = False ' Debug.Print Port & " Token free" End If End Sub Public Sub MoveSync(mms As Single, Turns As Single) ' Move both axis simultaneously using relative positioning. ' It rolls the specified turns number at Rpm (global) speed ' while simultaneously moving the carriage by the specified number of millimeters. ' Positive turns values mean clockwise rotation (when looking to the shaft) ' Positive mms values mean the carriage moves to the right. ' Returns only after the command in completed and the hardware is ' ready to accept a new order ' With the mecanical constants of the Sipro hardware, we have a pitch of ' 1mm per turn when the rotation velocity is 0.72 times the translation velocity. ' Thus, VeloT = VeloR / 0.72 * pitch (in mms). Pitch being mms / Turns. Dim V As Long EnableDriverT V = RealVeloR / 0.72 * (Abs(mms) / Abs(Turns)) 'Must be positive. LoadTrajectory RAxis, False, 1 + RealVeloR / Kaccel, False, RealVeloR, False, -Turns * CNTPERTURN, True, False LoadTrajectory TAxis, False, 1 + V / Kaccel, False, V, False, -mms * CNTPERMM, True, False DoRSTI RAxis DoRSTI TAxis LM628Poke1 RAxis, STT LM628Poke1 TAxis, STT WaitTrajectoriesComplete '' TODO '' Replace by read RPT when hard available #If Nohard Then SetRef.CarLoc = SetRef.CarLoc + mms 'Show in SetRef SetRef.WaitMe #End If DisableDriverT End Sub Public Sub WaitTrajectoriesComplete() #If Nohard Then Debug.Print "WaitTrajectoriesComplete" ' Wait 500 ' Exit Sub #End If While 1 If ((Peek(RAxis) And TrajectComplete) = TrajectComplete) And ((Peek(TAxis) And TrajectComplete) = TrajectComplete) Then Exit Sub ' Both terminate End If DoEvents ' Wait 100 Sleep 100 Wend End Sub Public Sub WaitRtrajectoryComplete() #If Nohard Then Debug.Print "WaitRtrajectoryComplete" ' Wait 500 ' Exit Sub #End If While 1 If ((Peek(RAxis) And TrajectComplete) = TrajectComplete) Then Exit Sub DoEvents ' Wait 100 Sleep 100 Wend End Sub Public Sub WaitTtrajectoryComplete() #If Nohard Then Debug.Print "WaitTtrajectoryComplete" ' Wait 500 ' Exit Sub #End If While 1 If ((Peek(TAxis) And TrajectComplete) = TrajectComplete) Then Exit Sub DoEvents ' Wait 100 Sleep 100 Wend End Sub Public Sub MoveTRel(mms As Single) MoveT mms, RELATIVE End Sub Public Sub MoveTAbs(mms As Single) MoveT mms, ABSOLUTE End Sub Public Sub MoveT(mms As Single, AR As Boolean) EnableDriverT LoadTrajectory TAxis, False, 1 + RealVeloT / Kaccel, False, RealVeloT, False, -mms * CNTPERMM, AR, False DoRSTI TAxis 'Clear pending status LM628Poke1 TAxis, STT WaitTtrajectoryComplete #If Nohard Then If AR = ABSOLUTE Then 'To show carriage move in SetRef SetRef.CarLoc = mms Else SetRef.CarLoc = SetRef.CarLoc + mms End If SetRef.WaitMe #End If DisableDriverT End Sub Public Sub MoveR(Turns As Single, AR As Boolean) LoadTrajectory RAxis, False, 1 + RealVeloR / Kaccel, False, RealVeloR, False, -Turns * CNTPERTURN, AR, False DoRSTI RAxis 'Clear pending status LM628Poke1 RAxis, STT WaitRtrajectoryComplete End Sub Public Sub MoveTRef(mms As Single) ' Go to mms from reference #If Nohard Then Debug.Print "MoveTRef "; RefOffset - mms #End If MoveT mms + RefOffset, ABSOLUTE End Sub Public Sub GoToZero() 'Move carriage slowly just away from ENDT switch '' TODO '' Permettre abandon si pb Dim SaveVeloT As Long #If Nohard Then Debug.Print "GoToZero " Zeroed = True ParkVguides Exit Sub #End If SaveVeloT = RealVeloT RealVeloT = 100000 'Slow while searching for zero ParkVguides If (Peek(MOTA) And ENDT) <> ENDT Then 'We are not already past ENDT While (Peek(MOTA) And ENDT) <> ENDT MoveTRel -2 ' move to the left in ?? mms steps up to ENDT DoEvents Wend End If While (Peek(MOTA) And ENDT) = ENDT 'We are past ENDT MoveTRel 0.05 ' move to the right in small steps DoEvents Wend LM628Poke1 TAxis, DFH 'Define home here Zeroed = True RealVeloT = SaveVeloT End Sub AutoIndex/SIPRO15/Math.bas0000755000000000000000000002055313730575260012306 0ustar Attribute VB_Name = "Module1" '========================================================== ' Muhammad Abubakar ' ' '========================================================== 'You can use the code as u like in your projects but please 'give credit where credit is due :) ' '======================================= November 14th 2014 ' Added operators: ' "\" (integer division) and "%" (division remainder) ' By y.monmagnon@wanadoo.fr '=========================================================== Option Explicit Public Function parse(expr As String) As Double Dim i As Double, a As String Dim start As Double, endat As Double expr = Trim(expr) If InStr(expr, "(") <> 0 Then i = 1 While (InStr(expr, "(") <> 0) a = Mid(expr, i, 1) If a = "(" Then start = i ElseIf a = ")" Then If start = 0 Then MsgBox "Invalid Syntax." Exit Function End If endat = i i = Val(givePrecedence(Mid(expr, start + 1, endat - start - 1))) expr = Left(expr, start - 1) & Str(i) & Right(expr, Len(expr) - endat) start = 0: endat = 0 i = 0 End If i = i + 1 Wend End If If expr <> "" Then parse = Val(givePrecedence(expr)) Else parse = i End If End Function Private Function Eval(temp As String, sign As String, prevExpr As String) As String Select Case sign Case "+": Eval = Str(Val(prevExpr) + Val(temp)) Case "-": Eval = Str(Val(prevExpr) - Val(temp)) Case "*": Eval = Str(Val(prevExpr) * Val(temp)) Case "/": If Val(temp) = 0 Then MsgBox "Divide by zero" & vbCrLf & "Ignored", vbCritical, "MathParser" Else Eval = Str(Val(prevExpr) / Val(temp)) End If Case "^": Eval = Str(Val(prevExpr) ^ Val(temp)) Case "\": Eval = Str(Val(prevExpr) \ Val(temp)) Case "%": Eval = Str(Val(prevExpr) Mod Val(temp)) End Select End Function Private Function givePrecedence(expr As String) As String Dim X As Integer, temp As String Do While (InStr(expr, "!") <> 0 Or InStr(expr, "*") <> 0 Or InStr(expr, "/") <> 0 Or InStr(expr, "^") <> 0 _ Or InStr(expr, "+") <> 0 Or InStr(expr, "-") <> 0 Or InStr(expr, "\") <> 0 Or InStr(expr, "%") <> 0) DoEvents X = InStr(expr, "!") If X <> 0 Then temp = solveFor("!", expr) Else X = InStr(expr, "^") If X <> 0 Then temp = solveFor("^", expr) Else X = InStr(expr, "/") If X <> 0 Then temp = solveFor("/", expr) Else X = InStr(expr, "\") If X <> 0 Then temp = solveFor("\", expr) Else X = InStr(expr, "%") If X <> 0 Then temp = solveFor("%", expr) Else X = InStr(expr, "*") If X <> 0 Then temp = solveFor("*", expr) Else X = InStr(expr, "+") If X <> 0 Then temp = solveFor("+", expr) Else X = InStr(expr, "-") If X <> 0 Then temp = solveFor("-", expr) End If End If End If End If End If End If End If End If If temp = "" Then Exit Do Else expr = temp End If Loop givePrecedence = expr End Function Private Function GetNumFrom(Pos As Integer, expr As String) As String Dim i As Integer, temp As String Dim a As String If Pos <= Len(expr) Then For i = Pos To Len(expr) '{ a = Mid(expr, i, 1) If Asc(a) >= 48 And Asc(a) <= 58 Or a = " " Or a = "." _ Or ((a = "-" Or a = "+") And Trim(temp) = "") Then temp = temp & a Else If LCase(a) = "e" Then temp = temp & "E" & GetNumFrom(i + 1, expr) 'Recursion i = Len(expr) Else ' MsgBox "Invalid syntax", vbCritical, "MathParser" 'wrong syntax, u can handle error as you like End If i = Len(expr) End If Next '} GetNumFrom = temp End If End Function Private Function solveFor(sign As String, expr As String) As String '{ Dim X As Integer, start As Integer, endat As Integer Dim temp As String, a As String, i As Integer start = 1 X = InStr(expr, sign) If sign <> "!" Then If sign = "+" Or sign = "-" Then a = GetNumFrom(1, expr) If Len(a) = Len(expr) Then solveFor = "" Exit Function End If temp = GetNumFrom(Len(a) + 1, expr) If Sgn(Val(temp)) < 0 Then sign = "-" Else: sign = "+" End If X = InStr(Len(a), expr, sign) endat = Len(a) + Len(temp) temp = Eval(GetNumFrom(X + 1, expr), sign, a) expr = Left(expr, start - 1) & temp & Right(expr, Len(expr) - endat) solveFor = expr Exit Function End If End If 'i = InStr(x + 1, expr, sign) For i = X - 1 To 1 Step -1 'going back a = Mid(expr, i, 1) If Asc(a) >= 48 And Asc(a) <= 58 Or a = " " Or a = "." Or LCase(a) = "e" Then temp = a & temp Else If (a = "-" Or a = "+") And i - 1 > 0 Then If Mid(expr, i - 1, 1) = "e" Then temp = a & temp Else start = i + 1 i = 1 End If Else start = i + 1 i = 1 End If End If Next If Trim(temp) <> "" Then 'solving for factorial If sign = "!" Then If Int(Val(temp)) <> Val(temp) Then MsgBox "Invalid syntax", vbCritical, "MathParser" 'wrong syntax, handle it in whatever way u awnt Else expr = Left(expr, start - 1) & Str(fact(Val(temp))) & Right(expr, Len(expr) - X) solveFor = expr End If Else 'its not a factorial calculations endat = X + Len(GetNumFrom(X + 1, expr)) temp = Eval(GetNumFrom(X + 1, expr), sign, temp) expr = Left(expr, start - 1) & temp & Right(expr, Len(expr) - endat) 'Job done, go back solveFor = expr End If Else solveFor = "" End If '} End Function 'Algo for factorial Private Function fact(num As Integer) As Double Dim b As Double b = 1 For num = 1 To num b = b * num 'I wish I could write it as b * = num :( Next fact = b End Function AutoIndex/SIPRO15/MesGuides0000755000000000000000000000000013730575265012531 5ustar AutoIndex/SIPRO15/SetRef.frm0000755000000000000000000002276013730575262012630 0ustar VERSION 5.00 Begin VB.Form SetRef Caption = "Définir la référence" ClientHeight = 1800 ClientLeft = 60 ClientTop = 345 ClientWidth = 11070 ClipControls = 0 'False ControlBox = 0 'False LinkTopic = "Form2" ScaleHeight = 1800 ScaleMode = 0 'User ScaleWidth = 100 StartUpPosition = 3 'Windows Default Visible = 0 'False Begin VB.CommandButton BtCancel Caption = "Annuler" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 375 Left = 8880 TabIndex = 8 Top = 1320 Width = 975 End Begin VB.PictureBox PsetTTrim AutoRedraw = -1 'True BackColor = &H00FF8080& BorderStyle = 0 'None ForeColor = &H00FFFFFF& Height = 255 Left = 120 ScaleHeight = 255 ScaleMode = 0 'User ScaleWidth = 25.343 TabIndex = 5 Top = 960 Width = 10815 End Begin VB.CommandButton BtFixRef Caption = "Appliquer" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 375 Left = 9960 TabIndex = 2 Top = 1320 Width = 975 End Begin VB.PictureBox PsetT AutoRedraw = -1 'True BackColor = &H00C00000& BorderStyle = 0 'None DrawMode = 7 'Invert DrawWidth = 4 ForeColor = &H00C0C0FF& Height = 255 Left = 120 ScaleHeight = 4.498 ScaleMode = 0 'User ScaleWidth = 10 TabIndex = 0 Top = 360 Width = 10815 End Begin VB.Label LbTurns Alignment = 1 'Right Justify AutoSize = -1 'True Caption = "0.0" BeginProperty Font Name = "MS Sans Serif" Size = 12 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 300 Left = 1920 TabIndex = 10 Top = 1360 Width = 390 End Begin VB.Label Label5 Alignment = 2 'Center AutoSize = -1 'True Caption = "0" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Left = 5424 TabIndex = 9 Top = 720 Width = 120 End Begin VB.Label Label4 Alignment = 2 'Center AutoSize = -1 'True Caption = "+10 mm" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Left = 10305 TabIndex = 7 Top = 720 Width = 660 End Begin VB.Label Label3 Alignment = 2 'Center AutoSize = -1 'True Caption = "160 mm" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Left = 10335 TabIndex = 6 Top = 120 Width = 660 End Begin VB.Label Label2 Alignment = 2 'Center AutoSize = -1 'True Caption = "-10 mm" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Left = 120 TabIndex = 4 Top = 720 Width = 630 End Begin VB.Label Label1 Alignment = 2 'Center AutoSize = -1 'True Caption = "0 mm" BeginProperty Font Name = "MS Sans Serif" Size = 8.25 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 195 Left = 120 TabIndex = 3 Top = 120 Width = 450 End Begin VB.Label LbPosRef Alignment = 1 'Right Justify AutoSize = -1 'True Caption = "0.000" BeginProperty Font Name = "MS Sans Serif" Size = 12 Charset = 0 Weight = 700 Underline = 0 'False Italic = 0 'False Strikethrough = 0 'False EndProperty Height = 345 Left = 8040 TabIndex = 1 Top = 1360 Width = 690 End End Attribute VB_Name = "SetRef" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Option Explicit Dim FTop As Single Dim FLeft As Single Public CarLoc As Single Public CarNow As Single Dim Cpos As Single Dim Prev As Single Public Sub FollowRPT(P As Single) If P = Prev Then Exit Sub SetCarriage P End Sub Public Sub SetCarriage(P As Single) PsetT.Line (Prev, 0)-(Prev, 255) 'Once to erase Prev = P PsetT.Line (Prev, 0)-(Prev, 255) 'Once to redraw LbPosRef.Caption = Format(Prev, "0.0##") End Sub Private Sub BtCancel_Click() Me.Hide End Sub Private Sub BtFixRef_Click() RefOffset = Cpos Me.Hide End Sub Private Sub Form_Load() ' CenterForm Me Me.Top = Val(GetIniString(INIFILE, "FormsLoc", "SetRefTop")) Me.Left = Val(GetIniString(INIFILE, "FormsLoc", "SetRefLeft")) FTop = Me.Top FLeft = Me.Left PsetT.ScaleWidth = TOTALTRAVEL PsetTTrim.ScaleWidth = 20 '+ - 1 cm PsetTTrim.Line (10, 0)-(10, 255) 'Show middle Cpos = RefOffset LbPosRef.Caption = Format(Cpos, "0.0##") End Sub Private Sub PsetT_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) #If Nohard Then Debug.Print "PsetT "; X; Y #End If MoveTAbs X Cpos = X LbPosRef.Caption = Format(Cpos, "0.0##") SetCarriage Cpos End Sub Private Sub PsetTTrim_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Dim T As Single T = X - PsetTTrim.ScaleWidth / 2 If Shift Then T = T / 10 'Very small steps if shift hold down If Cpos + T >= 0 Then Cpos = Cpos + T Else Cpos = 0 'Not past ENDT End If MoveTAbs Cpos LbPosRef.Caption = Format(Cpos, "0.0##") SetCarriage Cpos End Sub Public Sub WaitMe() If SilentRun Then CarNow = CarLoc SetCarriage CarNow Exit Sub End If While CarLoc <> CarNow ' Sleep 10 '1000 / (Rpm + 1) 'Simulate speed ' Wait 1000 / (Rpm + 1) 'Simulate speed Wait 1 'DO NOT simulate speed, go fast If CarLoc > CarNow Then CarNow = CarNow + 0.1 If CarLoc < CarNow Then CarNow = CarNow - 0.1 If Abs(CarLoc - CarNow) < 0.1 Then CarNow = CarLoc SetCarriage CarNow Wend Cpos = CarNow End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) ' Debug.Print "MouseMove" If FTop <> Me.Top Or FLeft <> Me.Left Then WriteIniString INIFILE, "FormsLoc", "SetRefTop", Str(Me.Top) WriteIniString INIFILE, "FormsLoc", "SetRefLeft", Str(Me.Left) FTop = Me.Top FLeft = Me.Left End If End Sub AutoIndex/SIPRO15/Sipro.INI0000755000000000000000000000040613730575264012362 0ustar [FormsLoc] LiftTop= 2535 Liftleft= 4815 SetRefTop= 960 SetRefLeft= 7635 [PATH] PROGRAM=\\VBOXSVR\Public\SIPRO15\Programs FORMER=E:\SIPRO\MesCarcasses GUIDE=E:\SIPRO\MesGuides [MRU] Last=\\VBOXSVR\Public\SIPRO15\Programs\MSpiraleDerniereAvecpapier.prg AutoIndex/SIPRO15/Sipro.vbw0000755000000000000000000000067113730575262012543 0ustar Form1 = 54, 25, 756, 838, , 346, 90, 1382, 732, C Global = 896, 15, 1629, 884, LM628 = 152, 7, 811, 890, Service = 9, 45, 784, 916, , 164, 106, 893, 651, C TOOLS = 201, 106, 780, 886, DLPortIO = 154, 154, 1517, 775, C SetRef = 116, 82, 697, 862, , 611, 293, 1453, 488, C Lift = -1, 10, 722, 874, C, 1267, 180, 1463, 806, C TestPeekPoke = 0, 0, 0, 0, C, 198, 198, 1401, 755, C StartForm = 70, 64, 793, 638, , 22, 77, 745, 651, C AutoIndex/SIPRO15/TOOLS.BAS0000755000000000000000000013345213730575265012165 0ustar Attribute VB_Name = "TOOLS" Option Explicit Public Type NVar 'A named variable Name As String Value As Single End Type Global NVars() As NVar 'A redimable array of Named Variables Dim Rstring As String * 1024 Global Manquants As String Global GereManque As Boolean Global DureeMsg As Integer Global NivTrace As Integer Global FicTrace As String Global F_INI As String Global INIFILE As String Public Const HFILE_ERROR = -1 Dim S As String Dim Chronos(10) As Long Global Pass As Boolean Private Type LUID UsedPart As Long IgnoredForNowHigh32BitPart As Long End Type Private Type TOKEN_PRIVILEGES PrivilegeCount As Long TheLuid As LUID Attributes As Long End Type Private Const EWX_SHUTDOWN As Long = 1 Private Const EWX_FORCE As Long = 4 Private Const EWX_REBOOT = 2 Declare Function SetWindowSubclass Lib "comctl32" Alias "#410" _ (ByVal hWnd As Long, ByVal pfnSubclass As Long, ByVal uIdSubclass As Long, _ ByVal dwRefData As Long) As Long Declare Function GetWindowSubclass Lib "comctl32" Alias "#411" _ (ByVal hWnd As Long, ByVal pfnSubclass As Long, ByVal uIdSubclass As Long, _ pdwRefData As Long) As Long Declare Function RemoveWindowSubclass Lib "comctl32" Alias "#412" _ (ByVal hWnd As Long, ByVal pfnSubclass As Long, ByVal uIdSubclass As Long) _ As Long Declare Function DefSubclassProc Lib "comctl32" Alias "#413" _ (ByVal hWnd As Long, ByVal uMsg As Long, ByVal wParam As Long, _ ByVal lParam As Long) As Long Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Declare Function ExitWindowsEx Lib "User32" ( _ ByVal dwOptions As Long, ByVal dwReserved As Long) As Long Declare Function GetModuleHandle Lib "kernel32" Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long Declare Function GetHandleInformation Lib "kernel32" (ByVal hObject As Long, lpdwFlags As Long) As Boolean Declare Function GetTickCount Lib "kernel32" () As Long Declare Function GetActiveWindow Lib "kernel32" () As Integer Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal SName As String, KName As Any, SString As Any, ByVal FName As String) As Integer Declare Function GetProfileString Lib "kernel32" (ByVal lpAppName As String, lpKeyName As Any, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Integer) As Integer Declare Function lopen Lib "kernel32" Alias "_lopen" (ByVal lpPathName As String, ByVal iReadWrite As Long) As Long Declare Function lread Lib "kernel32" Alias "_lread" (ByVal hFile As Long, lpBuffer As Any, ByVal wBytes As Long) As Long Declare Function lclose Lib "kernel32" Alias "_lclose" (ByVal hFile As Long) As Long Declare Function hread Lib "kernel32" Alias "_hread" (ByVal hFile As Long, lpBuffer As Any, ByVal lBytes As Long) As Long Declare Function LocalAlloc Lib "kernel32" (ByVal wFlags As Long, ByVal wBytes As Long) As Long Declare Function LocalFree Lib "kernel32" (ByVal hMem As Long) As Long Declare Function GetProcessVersion Lib "kernel32" (ByVal hModule As Long) As Long Declare Function QueryPerformanceCounter Lib "kernel32" (lpPerformanceCount As Single) As Long Declare Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Declare Function WaitForSingleObject Lib "kernel32" (ByVal hHandle As Long, ByVal dwMilliseconds As Long) As Long Declare Function PostMessage Lib "User32" Alias "PostMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParams As Long, ByVal lParam As Long) As Long Declare Function IsWindow Lib "User32" (ByVal hWnd As Long) As Long Declare Function GetCurrentProcess Lib "kernel32" () As Long Declare Function OpenProcessToken Lib "advapi32" ( _ ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, _ TokenHandle As Long) As Long Declare Function LookupPrivilegeValue Lib "advapi32" _ Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, _ ByVal lpName As String, lpLuid As LUID) As Long Declare Function AdjustTokenPrivileges Lib "advapi32" ( _ ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, _ NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, _ PreviousState As TOKEN_PRIVILEGES, ReturnLength As Long) As Long Public Declare Function sndPlaySound Lib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As String, ByVal uFlags As Long) As Long Public Const SND_ASYNC = &H1 ' play asynchronously Type RingBuffer B As String * 32000 Nb As Long Wp As Long Rp As Long End Type ' Added 21/10/2006 Da Silva Serge Type PROCESS_INFORMATION hProcess As Long hThread As Long dwProcessID As Long dwThreadID As Long End Type ' ShellAndWait Type STARTUPINFO cb As Long lpReserved As String lpDesktop As String lpTitle As String dwX As Long dwY As Long dwXSize As Long dwYSize As Long dwXCountChars As Long dwYCountChars As Long dwFillAttribute As Long dwFlags As Long wShowWindow As Integer cbReserved2 As Integer lpReserved2 As Long hStdInput As Long hStdOutput As Long hStdError As Long End Type Public Const NORMAL_PRIORITY_CLASS = &H20& Public Const INFINITE = -1& Declare Function CreateProcessA Lib "kernel32" (ByVal lpApplicationName As Long, ByVal lpCommandLine As String, ByVal lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As String, lpStartupInfo As STARTUPINFO, lpProcessInformation As PROCESS_INFORMATION) As Long Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long 'Déclaration des fonctions API Private Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCTYPE As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long Private Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCTYPE As Long, ByVal lpLCData As String) As Long Private Declare Function GetUserDefaultLCID Lib "kernel32" () As Long 'Déclaration de la constante séparateur décimal Global DecSep As String Private Const LOCALE_SDECIMAL = &HE Public Property Get DecimalSeparator() As String Dim nLength As Long Dim nLocale As Long nLocale = GetUserDefaultLCID() nLength = GetLocaleInfo(nLocale, LOCALE_SDECIMAL, vbNullString, 0) - 1 DecimalSeparator = Space$(nLength) GetLocaleInfo nLocale, LOCALE_SDECIMAL, DecimalSeparator, nLength End Property Public Property Let DecimalSeparator(ByRef Value As String) Dim nLocale As Long If Value <> DecimalSeparator Then If Value = "." Or Value = "," Then nLocale = GetUserDefaultLCID() SetLocaleInfo nLocale, LOCALE_SDECIMAL, Value End If End If End Property Sub ForceLignes(Fichier As String, MaxLignes As Integer, NbLignes As Integer) ' Si plus de MaxLignes, ne garde que les Nblignes dernières lignes du fichier texte Dim Fs As Integer Dim Fo As Integer Dim L As String Dim I As Integer Dim Temp As String If Not FileExists(Fichier) Then Exit Sub If MaxLignes <= NbLignes Then MaxLignes = NbLignes * 2 Fs = FreeFile Open Fichier For Input As Fs Do While Not EOF(Fs) Line Input #Fs, L I = I + 1 'Compte les lignes Loop If I > MaxLignes Then Seek #Fs, 1 'Rewind I = I - NbLignes 'Nombre de lignes à supprimer For NbLignes = 1 To I Line Input #Fs, L Next NbLignes Fo = FreeFile Temp = App.Path & "\" & Format(Now, "ddhhmmss") & "." & Format(Fo, "000") Open Temp For Output As Fo Do While Not EOF(Fs) Line Input #Fs, L Print #Fo, L Loop Close Fs Close Fo Kill Fichier Name Temp As Fichier Else Close Fs End If End Sub Function WriteRb(RB As RingBuffer, C As String) As Long ' Ecrit un caractère dans buffer. ' Retourne le nombre de caractères en attente ou 0 si buffer plein With RB If .Nb < 32000 Then .Nb = .Nb + 1 If .Wp > 32000 Then .Wp = 0 .Wp = .Wp + 1 Mid(.B, .Wp, 1) = C WriteRb = .Nb End If End With End Function Function ReadRb(RB As RingBuffer, N As Integer) As String 'Retourne les N caractères suivants du buffer Dim NN As Integer With RB If N > .Nb Then N = .Nb If .Nb Then .Nb = .Nb - N If .Rp + N > 32000 Then 'On va wrapper avant NN = 32000 - .Rp ReadRb = Mid(.B, .Rp, NN) .Rp = 1 End If N = N - NN ReadRb = ReadRb & Mid(.B, .Rp, N) .Rp = .Rp + N End If End With End Function Function ShowRb(RB As RingBuffer, N As Integer) As String 'Montre les N caractères suivants du buffer sans les retirer Dim Tp As Long 'Pointeur temporaire With RB If N > .Nb Then N = .Nb If .Nb Then Tp = .Rp Do While N > 0 If Tp > 32000 Then Tp = 0 Tp = Tp + 1 ShowRb = ShowRb & Mid(.B, Tp, 1) N = N - 1 Loop End If End With End Function Sub ClearRb(RB As RingBuffer) 'Réinitialse le buffer With RB .Nb = 0 .Wp = 1 .Rp = 1 End With End Sub Sub OpenSection(Section As String) S = "[" & UCase(Trim$(Section)) & "]" & Chr$(13) & Chr$(10) End Sub Sub AddKey(key As String, Value As String) S = S & Trim$(key) & "=" & Trim$(Value) & Chr$(13) & Chr$(10) End Sub Sub CloseSection(FicNum As Integer) Print #FicNum, S End Sub Function GetFname(FullPath As String) As String 'Retourne le nom du fichier sans le chemin Dim I As Integer Dim J As Integer Dim Sep As String Sep = "\" 'Assume Windows style If InStr(FullPath, "/") Then Sep = "/" 'Set Unix style Do J = InStr(I + 1, FullPath, Sep) If J = 0 Then Exit Do I = J Loop GetFname = Right$(FullPath, Len(FullPath) - I) End Function Function GetFnameWOext(FullPath As String) As String 'Retourne le nom du fichier sans le chemin ni l'extension Dim S As String Dim I As String S = GetFname(FullPath) I = InStr(S, ".") If I Then GetFnameWOext = Left(S, I - 1) End Function Function GetParams(Section As String, Cle As String) As String Dim S As String Dim Substitute As String S = GetIniString(F_INI, Section, Cle) If Len(S) Then GetParams = S Substitute = GetIniString(F_INI, "DEFINE", S) If Len(Substitute) Then GetParams = Substitute Else GetParams = GetIniString(F_INI, "DEFAUT", Cle) End If End Function Function Get_Start_Params() As String Dim S As String Dim P As String S = LCase$(Command$) If Len(S) = 0 Then S = InputBox$("Entrer les parametres", "Pas de parametres") If Len(S) = 0 Then End End If INIFILE = Substring(S, 1, " ") P = GetPath(INIFILE) If InStr(P, ".") = 1 Then INIFILE = App.Path & Mid$(INIFILE, 2) If Len(P) = 0 Then INIFILE = App.Path & "\" & INIFILE Get_Start_Params = S End Function Sub Set_StartParams() Dim S As String S = Command$ If Len(S) Then INIFILE = Substring(S, 1, " ") Exit Sub 'utilise 1er paramètre ligne commande End If INIFILE = App.Path & "\" & App.EXEName & ".INI" 'utilise fichier par défaut End Sub Function GetIniString(Fichier As String, Section As String, Cle As String) As String Dim S As String Dim X As Integer If Not FileExists(Fichier) Then Exit Function X = GetPrivateProfileString(ByVal Section, ByVal Cle, ByVal "", ByVal Rstring, ByVal Len(Rstring), ByVal Fichier) S = Left$(Rstring, X) If InStr(S, "'") = 1 Then S = Right$(S, Len(S) - 1) GetIniString = S End Function Function GetSystemString(SName As String, Section As String, Cle As String) As String Dim Rstring As String Dim X As Integer Rstring = String$(256, 0) X = GetPrivateProfileString(ByVal Section, ByVal Cle, ByVal "", ByVal Rstring, ByVal Len(Rstring), ByVal SName) GetSystemString = Left$(Rstring, X) End Function Sub SetTrace() NivTrace = 0 FicTrace = GetIniString(INIFILE, "DEBUG", "Trace") If Len(FicTrace) Then If GetPath(FicTrace) = "." Or Len(GetPath(FicTrace)) = 0 Then FicTrace = App.Path & "\" & GetFname(FicTrace) End If NivTrace = Val(GetIniString(INIFILE, "DEBUG", "Niveau")) End If End Sub Function GetPath(FullPath As String) As String 'Retourne le chemin sans le nom du fichier Dim I As Integer Dim J As Integer Dim Sep As String GetPath = "" If Len(FullPath) Then If InStr(FullPath, "/") Then Sep = "/" 'Set Unix style ElseIf InStr(FullPath, "\") Then Sep = "\" 'May be Windows style Else Exit Function 'None, nothing to return End If Do J = InStr(I + 1, FullPath, Sep) If J = 0 Then Exit Do I = J Loop GetPath = Left$(FullPath, I - 1) End If End Function Function GetExtension(Fichier As String) As String 'Retourne l'extension de fichier (sans le point !) GetExtension = Substring(GetFname(Fichier), 2, ".") End Function Function Substring(Texte As String, Item As Integer, Separateur As String) As String Dim D As Integer Dim F As Integer Dim I As Integer D = 1 I = 1 Do F = InStr(D, Texte, Separateur) If F = 0 Then F = Len(Texte) + 1 If I = Item Then Exit Do I = I + 1 D = F + Len(Separateur) If D > Len(Texte) Then Substring = "" Exit Function End If Loop Substring = Mid$(Texte, D, F - D) ' If Len(Substring) = 0 Then Substring = " " End Function Function SubStringVal(Texte As String, Item As Integer, Separateur As String) As Integer SubStringVal = Val(Substring(Texte, Item, Separateur)) End Function Sub Trace(Niveau As Integer, Message As String) Dim I As Integer Dim F As Integer Dim C As String Dim S As String If (Niveau And NivTrace) = 0 Then Exit Sub Do While Niveau Niveau = Niveau \ 2 Message = " " & Message Loop S = Format(Now, "dd/mm/yyyy hh:mm:ss") & " " & Message F = FreeFile On Error Resume Next Open FicTrace For Append As F If Err Then Exit Sub Print #F, S Close #F End Sub Sub WriteIniString(Fichier As String, Section As String, Cle As String, Texte As String) Dim X As Integer ' Debug.Print Texte X = WritePrivateProfileString(ByVal Section, ByVal Cle, ByVal Texte, ByVal Fichier) End Sub Function FileCopyDiff(Source As String, Destin As String) As Boolean 'Copie source dans destination seulement si contenus differents Dim Fs As Integer Dim FD As Integer If Not FileExists(Source) Then Exit Function If FileExists(Destin) Then If FileLen(Destin) <> FileLen(Source) Then Copy Source, Destin, 1, True FileCopyDiff = True Else Fs = FreeFile Open Source For Input As Fs FD = FreeFile Open Destin For Input As FD If Input(LOF(Fs), Fs) <> Input(LOF(FD), FD) Then Close Fs Close FD Copy Source, Destin, 1, True FileCopyDiff = True Else Close Fs Close FD End If End If Else Copy Source, Destin, 1, True FileCopyDiff = True End If End Function Sub MarkActivity(MarkFile As String) Dim F As Integer F = FreeFile Open MarkFile For Output As F Print #F, Format(Now, "ddmmyyyyhhmmss") Close F End Sub Function PathExists(ThisPath As String) As Boolean Dim Temp As String PathExists = True Temp = CurDir On Error Resume Next ChDir ThisPath If Err Then PathExists = False End If On Error GoTo 0 ChDir Temp End Function Function GetFileListe(Masque) As String 'Retourne la liste de tous les fichiers correspondants au masque sous ' la forme de chaines séparées par des virgules. Dim S As String On Error Resume Next S = Dir$(Masque, vbHidden + vbSystem + vbReadOnly) Do While Len(S) GetFileListe = GetFileListe & S & "," S = Dir$ Loop End Function Function GetDirListe(Masque As String) As String 'Retourne la liste de tous les sous répertoires correspondant au masque ' sous la forme de chaines séparées par des virgules. Dim S As String S = Dir$(Masque, vbDirectory + vbHidden + vbSystem + vbReadOnly) Do While Len(S) If PathExists(Masque & S) Then GetDirListe = GetDirListe & S & "," S = Dir$ Loop ' #If Win32 Then If Len(Masque) > 3 Then ' GetDirListe = Mid$(GetDirListe, 6) 'Enlève '.' et '..' ' #End If End If End Function Function IsTimeValid(T As String) As Boolean IsTimeValid = False If IsDate(T) Then T = Format$(CDate(T), "hh:mm") IsTimeValid = True End If End Function Sub RemoveDuplicate(S As String, Sep As String) Dim I As Integer Dim J Dim S1 As String Dim S2 As String I = InStr(S, Sep) While I S1 = Left(S, I) S2 = Right(S, Len(S) - I) J = InStr(S1, S2) If J Then S = S2 End If I = InStr(S, Sep) Wend End Sub Function ReplaceString(Source As String, Match As String, Replace As String, NoWhite As Boolean) As Integer 'Remplace dans la chaine source les occurences de 'Match' par 'Replace' et retourne ' le nombre de remplacements effectués. 'Si le flag NoWhite est spécifié, les codes contrôles ( < 31 décimal) sont 'éliminés de la chaine de sortie AVANT l'insertion de 'Replace'. ' Ex: X = ReplaceString(S, Chr$(10), Chr$(10), True) retourne le nombre de lignes ' non vides de S, et remplace les cr/lf par lf. Dim I As Integer Dim J As Integer Dim S As String Dim T As String If InStr(Source, Match) = 0 Then Exit Function J = 1 ' Debug.Print Source ' Debug.Print "-------------------" S = Substring(Source, J, Match) Do While Len(S) If NoWhite Then S = TTrim(S) If Len(S) Then T = T & S & Replace I = I + 1 End If Else T = T & S & Replace I = I + 1 End If J = J + 1 S = Substring(Source, J, Match) Loop ReplaceString = I Source = T ' Debug.Print Source End Function Function TTrim(S As String) As String 'Total Trim: Elimine tous les caractères non imprimables ( 0 à 32 décimal) 'Conserve les espaces entre les mots Dim I As Integer Dim C As String ' S = Trim(S) 'Supprime espaces de début et de fin For I = 1 To Len(S) C = Mid$(S, I, 1) If C > Chr$(31) Then TTrim = TTrim & C Next I TTrim = Trim(TTrim) 'Supprime espaces de début et de fin End Function Function TTrimAll(S As String) As String 'Total Trim: Elimine tous les caractères non imprimables et les espaces ( 0 à 32 décimal) Dim I As Integer Dim C As String S = Trim$(S) 'Supprime espaces de début et de fin For I = 1 To Len(S) C = Mid$(S, I, 1) If C > Chr$(32) Then TTrimAll = TTrimAll & C Next I End Function Sub ShowError(ErrDescription As String, Message As String) ' MsgBox "(" & ErrDescription & ")" & vbCrLf & Message MsgBox ErrDescription, , Message End Sub Function IsSameFile(F1 As String, F2 As String) As Boolean 'Compare nom et date de deux fichiers avec chemins '** Rajouter comparaison de la taille ? IsSameFile = False If FileExists(F1) And FileExists(F2) Then If GetFname(F1) = GetFname(F2) And FileDateTime(F1) = FileDateTime(F2) Then IsSameFile = True End If End If End Function Function GetNextInList(List As String, Sep As String) As String ' Retourne la sous chaine suivante de la liste de chaines 'List' séparées par 'Sep' ' Réinitialisé si appelé avec un nom de liste différent ou de longueur nulle ' Retourne une chaine vide quand liste épuisée ' Non reéntrant !!! Static I As Integer Static LastList As String If List <> LastList Then LastList = List I = 0 End If I = I + 1 GetNextInList = Substring(List, I, Sep) End Function Sub MakeDirTree(Tree As String) ' format de Tree: "x:\a\b\c.." ou ".\a\b\c.." ou "a\b\c.." ou "\a\b\c.." ' Crée tout l'arbre avec les sous répertoires i.e. md a, md a\b, md a\b\c, etc... Dim I As Integer Dim S As String Dim T As String I = 1 S = Substring(Tree, I, "\") If InStr(S, ":") Or InStr(S, ".") Or _ (Len(S) = 0 And Len(Tree) > 0) Then 'Récupère le premier chemin complet: "x:\a" I = I + 1 S = S & "\" & Substring(Tree, I, "\") End If T = S On Error Resume Next Do While Len(T) MkDir S If Err = 0 Or Err = 75 Then 'Reussi ou déja créé I = I + 1 T = Substring(Tree, I, "\") S = S & "\" & T Err.Clear Else MsgBox "MakeDirTree " & Tree & " " & S & vbCrLf & _ "Erreur " & Err, vbCritical, App.EXEName End If Loop ' On Error GoTo 0 End Sub Function GetKeysInSection(Fichier As String, Section As String) As String 'Retourne la liste des clés trouvées dans la section spécifiée. ' Ignore les entrées commençant par ';' Dim F As Integer Dim Ligne As String Dim InSection As Boolean If FileExists(Fichier) Then F = FreeFile Open Fichier For Input As F Do While Not EOF(F) Line Input #F, Ligne If InSection Then If InStr(Trim(Ligne), "[") = 1 Then Close F Exit Function End If ' S = UCase(Trim$(Substring(Ligne, 1, "="))) S = Trim$(Substring(Ligne, 1, "=")) If Len(S) And InStr(S, ";") = 0 Then GetKeysInSection = GetKeysInSection & S & "," Else If InStr(Ligne, "[" & UCase(Section) & "]") = 1 Then InSection = True End If End If Loop Close F End If End Function Function GetSections(Fichier As String) As String 'Retourne la liste des sections trouvées dans le fichier spécifié ' Ignore les entrées commeçant par ';' Dim F As Integer Dim Ligne As String F = IsOpen(Fichier, "Input", 1000) If F Then Do While Not EOF(F) Line Input #F, Ligne If InStr(Trim(Ligne), "[") = 1 Then Ligne = Mid$(Ligne, 2, InStr(Ligne, "]") - 2) GetSections = GetSections & Ligne & "," End If Loop Close F End If End Function Sub Wait(ByVal Millisecs As Double) ' Ne retourne qu'après 'Millisecs' en millisecondes ou si Unsign(GetTickCount) wrappe (le 49 ème jour) Dim Day49 As Double Dim M As Double Day49 = Unsign(GetTickCount) M = Day49 + Millisecs 'Unsign(GetTickCount) + Millisecs Do DoEvents Sleep 1 'This voids hanging full CPU usage. Why ?? Loop While Unsign(GetTickCount) < M Or Unsign(GetTickCount) < Day49 ' bug du 49 ème jour, tant pis ! End Sub Function WaitFor(Something As Boolean, Delai As Long) As Boolean ' Wait for 'something' be true while 'Delai' milliseconds' ' Returns the value of 'Something' as soon it becomes true or ' False if Delai elapsed before Dim Day49 As Double Dim D As Double 'Ne pas modifier le parametre ! Day49 = Unsign(GetTickCount) D = Day49 + Delai 'Unsign(GetTickCount) + Millisecs Do DoEvents Sleep 1 If Something Then WaitFor = Something Exit Function End If Loop While Unsign(GetTickCount) < D Or Unsign(GetTickCount) < Day49 ' bug du 49 ème jour, tant pis ! End Function Sub ShowMsg(Message As String, Titre As String) ' Affiche une boite de message pendant 'Duree' x millisecondes Trace 128, Titre & Chr$(9) & Message #If ShowMsg Then If MyMsg.Visible Or DureeMsg = 0 Then Exit Sub MyMsg.LblDelai.Caption = Str$(DureeMsg) MyMsg.Caption = Titre MyMsg.LblMsg.Caption = Message MyMsg.Show 0 #End If End Sub Function Copy(Org As String, Dest As String, Delai As Integer, TouchDate As Boolean) As Boolean 'Recopie Org sous un nouveau nom (duplique) Dim W As Double Dim Day49 As Double Copy = False Day49 = Unsign(GetTickCount) W = Day49 + Delai On Error Resume Next Do Err.Clear FileCopy Org, Dest If Err = 0 Then If TouchDate Then Touch Dest, 0 Copy = True Exit Function End If DoEvents Loop While Unsign(GetTickCount) < W Or Unsign(GetTickCount) < Day49 ShowMsg "Can't copy " & Org & " in " & Dest, "Copy Error N°" & Str(Err) & " " & Err.Description End Function Function IsOpen(File As String, Mode As String, Delai As Integer) As Integer ' Retourne un numéro de fichier si ouverture possible dans les delais, sinon 0 Dim W As Double Dim Day49 As Double Day49 = Unsign(GetTickCount) W = Day49 + Delai On Error Resume Next Select Case UCase(Mode) Case "INPUT", "READ", "R" Do If Not FileExists(File) Then Exit Function Err.Clear IsOpen = FreeFile Open File For Input Access Read As IsOpen If Err = 0 Then Exit Do DoEvents Loop While Unsign(GetTickCount) < W Or Unsign(GetTickCount) < Day49 Case "OUTPUT", "WRITE", "W" Do Err.Clear IsOpen = FreeFile Open File For Output Access Write As IsOpen If Err = 0 Then Exit Do DoEvents Loop While Unsign(GetTickCount) < W Or Unsign(GetTickCount) < Day49 Case "APPEND", "A" Do Err.Clear IsOpen = FreeFile Open File For Append Access Write As IsOpen If Err = 0 Then Exit Do DoEvents Loop While Unsign(GetTickCount) < W Or Unsign(GetTickCount) < Day49 Case "BINARY", "B" Do Err.Clear IsOpen = FreeFile Open File For Binary Access Read Write As IsOpen If Err = 0 Then Exit Do DoEvents Loop While Unsign(GetTickCount) < W Or Unsign(GetTickCount) < Day49 Case "READBINARY", "RB" If Not FileExists(File) Then Exit Function Do Err.Clear IsOpen = FreeFile Open File For Binary Access Read As IsOpen If Err = 0 Then Exit Do DoEvents Loop While Unsign(GetTickCount) < W Or Unsign(GetTickCount) < Day49 Case "WRITEBINARY", "WB" Do Err.Clear IsOpen = FreeFile Open File For Binary Access Write As IsOpen If Err = 0 Then Exit Do DoEvents Loop While Unsign(GetTickCount) < W Or Unsign(GetTickCount) < Day49 Case Else Mode = "Unknow mode" Error 55 End Select If Err Then ShowMsg "Can't open " & File & " for " & Mode, "IsOpen Error N°" & Str(Err) & _ " " & Err.Description IsOpen = 0 End If Err.Clear End Function Function Delete(File As String, Delai As Integer) As Boolean ' Détruit le fichier si possible sinon renvoie 'False' Dim W As Double Dim Day49 As Double Day49 = Unsign(GetTickCount) W = Day49 + Delai Delete = False On Error Resume Next Do Err.Clear Kill File If Err = 0 Or Err = 53 Then 'Accepter sans râler si fichier inexistant Delete = True Exit Function End If DoEvents Loop While Unsign(GetTickCount) < W Or Unsign(GetTickCount) < Day49 ShowMsg "Can't delete " & File, "Delete Error N°" & Str(Err) & _ " " & Err.Description End Function Function DelTree(Path As String) As Boolean 'Vide et détruit le répertoire spécifié. Dim RList As String Dim Flist As String Dim R As String Dim F As String Dim I As Integer If Not PathExists(Path) Then Exit Function Flist = GetFileListe(Path & "\*.*") 'Obtiend la liste des fichiers I = 1 F = Substring(Flist, I, ",") Do While Len(F) Delete Path & "\" & F, 1 'Efface tous les fichiers I = I + 1 F = Substring(Flist, I, ",") Loop RList = GetDirListe(Path & "\") 'Obtiend la liste des sous répertoires I = 1 R = Substring(RList, I, ",") Do While Len(R) 'pour chaque sous répertroire DelTree Path & "\" & R 'Récursif I = I + 1 R = Substring(RList, I, ",") Loop RmDir Path End Function Function ExecOnTree(Path As String, Action As Long) As Boolean End Function Function Rename(OldName As String, NewName As String, Delai As Integer, TouchDate As Boolean) As Boolean 'Renomme le fichier si possible 'Si 'TouchDate', met NewName à la date courante 'Remplace 'NewName' si existe déjà 'Si lecteurs différents, copie puis détruit ancien If Copy(OldName, NewName, Delai, TouchDate) Then Rename = Delete(OldName, 0) End If End Function Function CheckIfFiles(Liste As String, Path As String, Sep As String) As String 'Retourne 'Liste' sans les fichiers introuvables dans 'Path' Dim I As Integer Dim S As String Dim T As String If Len(Liste) Then I = 1 T = Substring(Liste, I, Sep) Do While Len(T) If FileExists(Path & "\" & T) Then S = S & T & Sep I = I + 1 T = Substring(Liste, I, Sep) Loop CheckIfFiles = S End If End Function Function FileExists(File As String) As Boolean ' Indique si le fichier existe If Len(File) = 0 Then Exit Function On Error Resume Next FileDateTime (File) If Err Then If GereManque Then Manque File Else FileExists = True End If End Function Sub Manque(S As String) If Len(Manquants) < 32000 Then If InStr(Manquants, S) = 0 Then Manquants = Manquants & S & "," 'Sans dupliquer ! End If End Sub Function Touch(File As String, Delai As Integer) As Boolean ' Change la date du fichier par la date courante Dim F As Integer Dim X As String * 1 Touch = False F = IsOpen(File, "Binary", Delai) If F Then If LOF(F) Then Get #F, 1, X Put #F, 1, X Touch = True Else ShowMsg "Can't change date if file is empty " & File, "Touch Error N°" & Str(Err) & _ " " & Err.Description End If Close F End If End Function Function XClose(FileNum As Integer, Delai As Integer) As Boolean Dim W As Double Dim Day49 As Double Day49 = Unsign(GetTickCount) W = Day49 + Delai XClose = False On Error Resume Next Do Err.Clear Close FileNum If Err = 0 Then XClose = True Exit Function End If DoEvents Loop While Unsign(GetTickCount) < W Or Unsign(GetTickCount) < Day49 ShowMsg "Can't close" & Str(FileNum), "Close Error N°" & Str(Err) & _ " " & Err.Description End Function Function CountFileLines(Fichier As String) As Integer 'Retourne le nombre de lignes non vides de 'Fichier' '0 si fichier inaccessible Dim L As String Dim F As Integer F = IsOpen(Fichier, "Input", 1000) If F Then While Not EOF(F) Line Input #F, L If Len(L) Then CountFileLines = CountFileLines + 1 Wend XClose F, 1000 End If End Function Function CountStringLines(S As String) As Integer 'Retourne le nombre de lignes non vides de S ' *** (Voir CountStrings dans ce même module) End Function Function TrieListeChaine(Liste As String, Mode As Integer, Sens As Integer) As String ' Retourne la liste triée dans le sens spécifié (1 = Croissant, 0 = Décroissant) ' selon Mode (1= Texte(Alphabétique), 0 = Binaire) Dim S As String Dim S1 As String Dim S2 As String Dim I As Integer Dim J As Integer Dim T() As String I = 1 S = Trim$(Substring(Liste, I, ",")) While Len(S) 'On rempli le tableau I = I + 1 ReDim Preserve T(I) T(I - 1) = S 'L'indice 0 n'est pas utilisé ! S = Substring(Liste, I, ",") Wend If I > 2 Then 'Il y a qqchose à trier I = I - 1 J = 1 While J < I If StrComp(T(J + 1), T(J), Mode) = -Sens Then 'Permuter S1 = T(J + 1) T(J + 1) = T(J) T(J) = S1 If J > 1 Then J = J - 1 'Retester le précédent Else J = J + 1 End If Wend For J = 1 To I 'Crée la chaine en sortie TrieListeChaine = TrieListeChaine & T(J) & "," Next J Else TrieListeChaine = Liste End If End Function Function TrieTableau(T(), Col As Integer, Mode As Integer) As Integer ' Ordonne les lignes d'un tableau à 2 dimension selon le contenu de la colonne spécifiée ' Mode = 0: Binaire, 1: Alphabétique, 2: Numérique ' Sens = Toujours croissant ' Retourne <> 0 si anomalie. Dim L As Integer Dim C As Integer Dim I As Integer Dim J As Integer Dim Swaped As Boolean L = UBound(T, 1) C = UBound(T, 2) ReDim TT(1, C) If L > 1 Then 'S'il y a au moins 2 lignes If C >= Col Then 'et si la colonne spécifiée existe I = 1 While I < UBound(T, 1) Swaped = False If Mode = 2 Then If T(I + 1, Col) < T(I, Col) Then Swaped = True For J = 0 To C TT(0, J) = T(I + 1, J) 'Permuter T(I + 1, J) = T(I, J) T(I, J) = TT(0, J) Next If I > 0 Then I = I - 1 'Retester le précédent End If Else If StrComp(T(I + 1, Col), T(I, Col), Mode) = -1 Then Swaped = True For J = 0 To C TT(0, J) = T(I + 1, J) 'Permuter T(I + 1, J) = T(I, J) T(I, J) = TT(0, J) Next If I > 0 Then I = I - 1 'Retester le précédent End If End If If Not Swaped Then I = I + 1 End If Wend Else TrieTableau = -1 End If Else TrieTableau = -2 End If End Function Sub StartChrono(Chrono As Integer) ' Lance un chrono On Error Resume Next Chronos(Chrono) = Unsign(GetTickCount) End Sub Sub ShowChrono(Chrono As Integer) 'Affiche un chrono Dim TT As Long On Error Resume Next TT = Unsign(GetTickCount) MsgBox Format$((TT - Chronos(Chrono)) / 1000, "0.000") & " secondes", 0, "Chrono" & Str$(Chrono) ' ShowMsg Str$(TT - Chronos(Chrono)) & " Millisecondes", "Chrono" & Str$(Chrono) End Sub Function UnsignedTovbInteger(ByVal Unsigned As Long) As Integer 'Convertit un long représentant entier non signé (retourné par un appel à un API par exemple) en 'entier non signé à passer à une fonction externe If (Unsigned And &H8000&) = 0 Then UnsignedTovbInteger = Unsigned And &HFFFF& Else UnsignedTovbInteger = &H8000 Or (Unsigned And &H7FFF&) End If End Function Function CountStrings(S As String, SubS As String) As Integer 'Retourne le nombre de 'SubS'contenues dans 'S'. Dim D As Long Dim F As Long D = 1 Do F = InStr(D + 1, S, SubS) If F Then CountStrings = CountStrings + 1 D = F Loop While D End Function Public Function GetFileSpecs(Objet, DefPath As String, DefFichier As String, Titre As String, Mode As String) As String ' Interface pour CommonDialog 'Ouvrir / Enregistrer sous' 'DefPath ne doit pas inclure le "\" terminal Dim S As String Dim E As String With Objet .CancelError = True .Filter = "Tous fichiers (*.*)|*.*" .FilterIndex = 1 E = GetExtension(DefFichier) If Len(E) Then .Filter = .Filter & "|Fichiers " & App.EXEName & " (*." & E & ")|*." & E .FilterIndex = 2 End If .Flags = &H804 .DialogTitle = Titre .InitDir = DefPath .FileName = DefFichier On Error Resume Next If Mode Like "Open" Then .ShowOpen If Mode Like "Save" Then .ShowSave S = .FileName If (Len(S) <> 0) And Err = 0 Then GetFileSpecs = S End If End With End Function Public Function ChoosePrinter(Object) As Boolean With Object .CancelError = True ' .PrinterDefault = True ' .Orientation = cdlPortrait .Flags = &H40& .DialogTitle = "Printer" .ShowPrinter .Orientation = cdlPortrait End With End Function Public Function GetFileDate(Fichier As String) As Date GetFileDate = "00:00" On Error Resume Next GetFileDate = FileDateTime(Fichier) End Function Public Function HexDump(S As String, Bloc As Long) As String ' Retourne un dump Hexadécimal de 256 octets de S. Dim Debut As Integer Dim Ligne As Integer Dim Colonne As Integer Dim C(1 To 16) As String Dim H As String For Ligne = 1 To 16 H = Hex((16 * (Ligne - 1)) + (256 * Bloc)) If Len(H) < 8 Then H = String(8 - Len(H), "0") & H HexDump = HexDump & H & ": " For Colonne = 1 To 16 ' les valeurs hexadéciamales C(Colonne) = Mid$(S, Debut + 1, 1) If Len(C(Colonne)) Then H = Hex(Asc(C(Colonne))) If Len(H) < 2 Then H = "0" & H Else H = ".." End If Debut = Debut + 1 HexDump = HexDump & H & " " Next Colonne HexDump = HexDump & " " For Colonne = 1 To 16 'les caractères ascii imprimables If C(Colonne) < " " Then C(Colonne) = " " HexDump = HexDump & C(Colonne) Next Colonne HexDump = HexDump & vbCrLf Next Ligne HexDump = HexDump & vbCrLf End Function ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 'Public Function Unsign(X As Long) As Double ' Retourne un single représentant un entier non signé. ' Utile pour traiter les valeurs retournées par des DLL qui renvoient un ULong 'Dim XX As Double ' XX = X ' If XX < 0 Then ' Unsign = 2147483647 + XX ' Unsign = Unsign + 2147483648# ' Else ' If XX = 0 Then ' Unsign = XX + 1 ' End If ' Unsign = XX ' End If 'End Function ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Public Function Unsign(X As Long) As Long 'Retourne X sans le signe Unsign = X And &H7FFFFFFF End Function Public Sub CenterForm(F As Form) F.Top = (Screen.Height - F.Height) / 2 F.Left = (Screen.Width - F.Width) / 2 End Sub Public Function Crc(S As String, Debut As Integer) As String 'Retourne le CRC (Xor) de S Dim I As Integer Dim X As Integer For I = Debut To Len(S) X = X Xor Asc(Mid$(S, I, 1)) Next I Crc = Chr$(X) End Function Public Function FormatTexte(S As String, C As Integer, Tableau() As String) As Integer ' Rempli le tableau avec des lignes de longueur 'C' extraites de S et centrées ' *** S ne doit pas contenir de caractères de contrôle *** ' Retourne le nombre de lignes (Taille du tableau) Dim Lignes As Integer Dim Debut As Integer Dim T As String Dim U As String Dim L As Integer Debut = 1 S = Trim$(S) T = Substring(S, Debut, " ") Do While Len(T) T = Trim$(T) Do While Len(T) < C 'Il reste de la place U = Trim$(Substring(S, Debut + 1, " ")) 'Essaie le suivant Debut = Debut + 1 If Len(U) + Len(T) < C Then 'C'est bon T = T & " " & U Else Exit Do End If Loop T = Trim$(T) L = Len(T) If L = C Then Debut = Debut + 1 L = C - L If L > 1 Then 'Centrer L = L \ 2 T = String(L, " ") & T & String(L, " ") End If Lignes = Lignes + 1 ReDim Preserve Tableau(Lignes) Tableau(Lignes - 1) = T T = Substring(S, Debut, " ") Loop FormatTexte = Lignes End Function Public Sub AdjustToken() Const TOKEN_ADJUST_PRIVILEGES = &H20 Const TOKEN_QUERY = &H8 Const SE_PRIVILEGE_ENABLED = &H2 Dim hdlProcessHandle As Long Dim hdlTokenHandle As Long Dim tmpLuid As LUID Dim tkp As TOKEN_PRIVILEGES Dim tkpNewButIgnored As TOKEN_PRIVILEGES Dim lBufferNeeded As Long hdlProcessHandle = GetCurrentProcess() OpenProcessToken hdlProcessHandle, (TOKEN_ADJUST_PRIVILEGES Or _ TOKEN_QUERY), hdlTokenHandle ' Get the LUID for shutdown privilege. LookupPrivilegeValue "", "SeShutdownPrivilege", tmpLuid tkp.PrivilegeCount = 1 ' One privilege to set tkp.TheLuid = tmpLuid tkp.Attributes = SE_PRIVILEGE_ENABLED ' Enable the shutdown privilege in the access token of this ' process. AdjustTokenPrivileges hdlTokenHandle, False, tkp, _ Len(tkpNewButIgnored), tkpNewButIgnored, lBufferNeeded End Sub Public Sub SystemRestart() #If NT Then AdjustToken #End If ExitWindowsEx (EWX_SHUTDOWN Or EWX_FORCE Or EWX_REBOOT), &HFFFF End Sub Public Sub ShowTrace(T As String, F As Form) 'Montre T dans l'objet texte 'Voir' de la feuille F si elle est visible If F.WindowState <> 1 Then If Len(F.Voir.Text) > 16000 Then 'Void overflow F.Voir.Text = "" End If F.Voir.SelText = T & vbCrLf End If Trace 1, T End Sub Public Sub ClearTrace(F As Form) F.Voir.Text = "" End Sub Public Sub PlaySound(Wavefile As String) If Len(Wavefile) > 0 And FileExists(Wavefile) Then sndPlaySound Wavefile, SND_ASYNC End If End Sub Public Function AdjustText(V As Variant, Lenght As Integer) 'Retourne une chaine de longueur 'Lenght' contenant V et paddée avec des espaces Dim S As String Dim L As Integer S = Format$(V) 'Regle le pb du NULL L = Len(S) If L < Lenght Then 'Trop court AdjustText = S & String$(Lenght - L, " ") Else AdjustText = Mid$(S, 1, Lenght) 'Trop long End If End Function Public Function ForceDp(V As String) As String 'Remplace la virgule par le point dans un variant représentant un nombre Dim VPos As Integer VPos = InStr(V, ",") If VPos Then 'Y'en a ForceDp = Substring(V, 1, ",") & "." & Substring(V, 2, ",") Else ForceDp = V End If End Function 'Public Function SpawnObject(Fichier As String) As Long ' ' If FileExists(Fichier) Then ' SpawnObject = ShellExecute(0, "Open", Fichier, "", App.Path, 0) 'SW_SHOWNORMAL) ' DoEvents ' End If 'End Function Public Function LongToSBin(X As Long) As String ' Returns a string of 0 and 1 showing V in binary form Dim I As Integer Dim V As Long V = X 'Preserve parameter Do For I = 0 To 7 If V Mod 2 Then LongToSBin = "1" & LongToSBin Else LongToSBin = "0" & LongToSBin End If V = V \ 2 Next LongToSBin = " " & LongToSBin 'a space every 8 bits Loop While V End Function Public Sub SwapStrings(S1 As String, S2 As String) Dim S As String S = S1 S1 = S2 S2 = S End Sub Public Sub SetNVar(Name As String, Value As Single) 'Assign a value to the named variable. 'Create it if needed Dim I As Integer For I = 0 To UBound(NVars) If Name = NVars(I).Name Then 'Found NVars(I).Value = Value 'Update value Exit Sub End If Next ReDim Preserve NVars(I) 'Does not exists, create NVars(I).Name = Name 'And setup. NVars(I).Value = Value End Sub Public Function GetNVar(Name As String) As Single 'Returns the value of this variable. 'Create it and returns 0 if needed Dim I As Integer For I = 0 To UBound(NVars) If Name = NVars(I).Name Then 'Found GetNVar = NVars(I).Value Exit Function 'Returns value End If Next 'Does not exists .. yet ReDim Preserve NVars(I) NVars(I).Name = Name NVars(I).Value = 0 GetNVar = 0 End Function Public Sub InitNVars() 'Destroys all variables ReDim NVars(0) End Sub AutoIndex/change_log.html0000755000000000000000000001045611354075552012640 0ustar AutoIndex PHP Script: Change Log

AutoIndex PHP Script, by Justin Hagstrom

Change Log

 

Legend:
(+) Added feature
(!) Security bug fixed
(-) Bug fixed
(*) Improved/changed feature
( ) Non-code change

 

Version 2.2.4 (2007-Nov-09)
(!) Fixed DOS bug
( ) Added Vista icon set

Version 2.2.3 (2007-Nov-05)
(!) Fixed XSS bug

Version 2.2.2 (2007-Jul-24)
(!) Fixed XSS bug in search feature

Version 2.2.1 (2007-Jan-06)
(*) Improved handling of passwords with .htaccess
(*) Improved default stylesheet
( ) Added Danish translation
( ) Updated Dutch translation

Version 2.2.0 (2006-Jan-02)
(+) Added a pagination feature
(+) Language is selected based on the user's browser's default
(+) Added support for PHP 5.1.x and higher
( ) Added Greek and Japanese translations

Version 2.1.2 (2005-Aug-11)
(-) Fixed bug when editing descriptions of filenames that have special characters
( ) Added Czech and Slovak translations

Version 2.1.1 (2005-Jul-06)
(!) Fixed bug with search box
( ) Added Swedish translation

Version 2.1.0 (2005-Feb-14)
(+) Added a .htaccess parser
(+) Added an FTP browser
(+) Added moderator and banned account levels
(+) Added a feature to let moderators/admins change their own password

Version 2.0.7 (2005-Jan-14)
(-) Fixed file_description feature

Version 2.0.6 (2005-Jan-04)
(+) Admins are able to copy files from other servers (similar to "wget")
( ) Added Thai and Arabic translations

Version 2.0.5 (2004-Sep-02)
(+) When force_download is on, the MIME-type sent depends on the file extension
(*) Using hidden_files to only show certain files no longer restricts directories

Version 2.0.4 (2004-Aug-17)
(*) When reconfiguring the script, the current settings are selected instead of the defaults
( ) Added Polish translation

Version 2.0.3 (2004-Jul-26)
(*) Nested if-statements can be used in the template files
(*) Folders do not have to be empty to be deleted

Version 2.0.2 (2004-Jul-13)
(*) All output is XHTML 1.1 compliant
(*) The do_every template command now does not include the last file listed

Version 2.0.1 (2004-Jul-05)
(+) Added directory cache feature
(*) Added include command to the template system
(-) Fixed search page bug when download_count was on

Version 2.0.0 (2004-Jun-24)

Complete rewrite from version 1.0:

  • Now uses PHP 5. PHP version 5.0 or higher is required.
  • All the features of version 1, plus:
    (+) Has a template system for all HTML output
    (+) Tar archives of directories can be downloaded
    (+) Each user account can have its own home directory
    (*) Passwords are stored as a sha-1 hash rather than md5 (this is slightly more secure)
AutoIndex/license.html0000755000000000000000000004506411354075556012203 0ustar GNU General Public License

GNU General Public License

Version 2, June 1991

Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA  02111-1307, USA

Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.

Preamble

The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.

When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.

To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.

For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.

We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.

Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations.

Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all.

The precise terms and conditions for copying, distribution and modification follow.

TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION

0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you".

Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.

1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.

You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.

2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:

  • a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.
  • b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.
  • c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)

These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.

Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.

In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.

3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:

  • a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
  • b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,
  • c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)

The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.

If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.

4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.

5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.

6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.

7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.

If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.

It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.

This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.

8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.

9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.

Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.

10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.

NO WARRANTY

11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.

12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

END OF TERMS AND CONDITIONS

How to Apply These Terms to Your New Programs

If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.

To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found.

    <one line to give the program's name and a brief idea of what it does.>
    Copyright (C) <year>  <name of author>

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

Also add information on how to contact you by electronic and paper mail.

If the program is interactive, make it output a short notice like this when it starts in an interactive mode:

    Gnomovision version 69, Copyright (C) year name of author
    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
    This is free software, and you are welcome to redistribute it
    under certain conditions; type `show c' for details.

The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program.

You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names:

  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  `Gnomovision' (which makes passes at compilers) written by James Hacker.

  <signature of Ty Coon>, 1 April 1989
  Ty Coon, President of Vice

This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.

AutoIndex/true0000755000000000000000000004764113211053163010560 0ustar ../PP_ECL86/DA17-2.pdf 85 ../777/PSUreg2.pdf 23 ../PP_EL36Triode/EL36-115.pdf 13 ../OPT_da/slup125.pdf 86 ../AutoIndex/CountFile 20 ../OPT_da/V322.jpg 69 ../Images/aurora2_gd.jpg 7 ../index.html 558 ../OutsideDocs/RCA_1938_BeamPowerTubes_TechPapers.pdf 75 ../SE_300B/300B_IpVg.png 9 ../SE_300B/KISS/1.gif 5 ../SE_300B/KISS/2.gif 4 ../SE_300B/KISS/Dsc01130.jpg 4 ../SE_300B/KISS/Dsc01131.jpg 3 ../SE_300B/KISS/Dsc01132.jpg 2 ../SE_300B/KISS/Dsc01133.jpg 2 ../SE_300B/KISS/Dsc01134.jpg 3 ../SE_300B/KISS/Dsc01135.jpg 2 ../SE_300B/KISS/Right-4Wbode.png 3 ../SE_300B/KISS/SE300B-Eric.pdf 6 ../SE_300B/KISS/Measures/300B-simload.gif 2 ../SE_300B/KISS/Measures/MenoVanDerVen.doc 3 ../Yves/2x6V6-ZeroBias.gif 5 ../Yves/211plaque.jpg 4 ../Yves/300b-0.gif 5 ../Yves/300b-1.gif 5 ../Yves/300b-2.gif 4 ../Yves/GM70.gif 5 ../Yves/GM70-4K7.gif 4 ../_index.html 526 ../PP_ECL86/Square_1KHz.pdf 24 ../_favicon.ico 1432 ../favicon.ico 485 ../Circuits/EVtoMC.pdf 14 ../gregg.png 649 ../SE_845/Amp.gif 77 ../PP_ECL86/THD-3dB.pdf 13 ../PP_ECL86/THD-6dB.pdf 20 ../Images/DA_Logo.gif 6 ../777/ShuntBasic.pdf 22 ../Circuits/1975-1.jpg 7 ../Circuits/2165-RD_&_2100-RD.PDF 12 ../Circuits/Ampex-1.jpg 9 ../Circuits/Booster.gif 9 ../Circuits/CCS2bip.png 8 ../Circuits/CMiller.gif 7 ../Circuits/Cathode_Follower.gif 9 ../Circuits/EL802-Drv.gif 6 ../Circuits/Pwr_Zener.gif 6 ../Circuits/Self_Filtrage.gif 7 ../Circuits/SinglePot.gif 6 ../Circuits/SourceSel.gif 12 ../Circuits/UNISON_Research_Simply2.pdf 11 ../Circuits/plate6N2-1.gif 5 ../PP_ECL86/Square_50KHz.pdf 16 ../OPT_da/Page.html 73 ../PP_ECL86/THD-9dB.pdf 18 ../Traceur/Tct.pdf 21 ../Loudspeakers/CriticalLSDamping.pdf 23 ../Circlo_EL86/1EN00200.pdf 18 ../SE_845/Lateral.jpg 19 ../Circlo_EL86/DA115.jpg 33 ../Circlo_EL86/Dessous.jpg 64 ../Circlo_EL86/V2/Circlo_EL86-b.jpg 11 ../Circlo_EL86/Figure1.pdf 77 ../Circlo_EL86/Figure2.jpg 63 ../Circlo_EL86/courants.gif 65 ../Transfos/Papers/Wolpert_Audio_Xfmr_Design_Manual.pdf 23 ../Transfos/Dissident/Fiches/DA17-2a.pdf 11 ../SE_6AS7/DA118.pdf 11 ../img/common/pdfm_box.jpg 3 ../Yves/Cfb.gif 4 ../Yves/6N1pPlate.gif 3 ../Circlo_EL86/1EN00201.pdf 14 ../Xformers/AddCore.frm 10 ../Yves/1960crowhurst.pdf 6 ../Yves/SEPP(draft)/Article.DOC 4 ../OPT_da/PST-and-OPT.tar.gz 70 ../SE_6AS7/DA117.pdf 13 ../Traceur/88.pdf 18 ../RegulHT/Regul.html 20 ../Pst/Fil.jpg 6 ../Transfos/Dissident/Fiches/DA150.pdf 2 ../PP_ECL86/Square_40Hz.pdf 12 ../SE_845/845_P2.GIF 5 ../PP_6L6/Arriere.jpg 3 ../Yves/Reguls.gif 6 ../SE_6AS7/Schema.pdf 7 ../Xformers/DA127.pdf 16 ../Images/Audiyofan.jpg 11 ../Traceur/TDFiles/R47K.tdf 2 ../Xformers/Xformers.vbw 12 ../PP_ECL86/BWandDF.pdf 279 ../img/glyph/btn_fast_cgi_bg.gif 2 ../AutoIndex/change_log.html 19 ../AutoIndex/license.html 18 ../AutoIndex/true 17 ../Circlo_EL86/Arriere.jpg 12 ../Circlo_EL86/Avant.jpg 8 ../Circlo_EL86/Circlo_EL86.gif 10 ../SpeakerBox/BEZEL2.TIF 13 ../Yves/dephaseur.gif 5 ../Traceur/PDFs/VT1-120Va-2Vf.pdf 5 ../SE_845/SRPP-18W_LNFB.gif 4 ../Suite2.html 1743 ../Suite1.html 1742 ../SE_845/Scope.jpg 5 ../PP_6L6/Talim.gif 4 ../PP_ECL86/Square_20Hz.pdf 28 ../Pst/DocPst.zip 5 ../Pst/Pst.zip 7 ../OPT_da/323/OPT_da.exe 6 ../Yves/Bias.gif 4 ../OPT_da/OPT_da-322.zip 70 ../OPT_da/Papers/4-8-16.pdf 14 ../OPT_da/Papers/MuvsB.gif 7 ../OPT_da/4pole.gif 213 ../OPT_da/DA17W.JPG 74 ../OPT_da/Mesures/Lf_et_Cp.gif 12 ../Images/6BM8.jpg 10 ../RIAA_PC900/Schema.gif 11 ../LOGO.BMP 1514 ../Traceur/PDFs/WE418A-1-P.pdf 4 ../Transfos/PST-and-OPT.tar.gz 11 ../SE_6L6/Page.html 6 ../Traceur/TDFiles/EL84_T4.tdf 3 ../Loudspeakers/BafflePlan-1.gif 17 ../Loudspeakers/BafflePlan-2.gif 19 ../Pst/Papers/IronCoredSolver_V02.html 7 ../Yves/H2SET.jpg 4 ../test/miva/test.mvc 4 ../Images/GeekZone.jpg 10 ../Transfos/EI96A-5000.jpg 7 ../Transfos/EI96A-5000.gif 7 ../Transfos/EI96A-5000-sim.jpg 7 ../Transfos/EI84A-5000.jpg 9 ../Transfos/EI84A-5000-sim.gif 16 ../Transfos/Dissident/TRS.pdf 7 ../Yves/Audiophile/Audiophile36-1.jpg 5 ../Yves/Audiophile/Audiophile36-7.jpg 2 ../Yves/4K-6R-70W-a.gif 5 ../Yves/MCINTOSH/MI275.JPG 3 ../Traceur/PDFs/S20K75.pdf 7 ../777/Versions.xls 8 ../Yves/Audiophile/Audiophile37-1.jpg 2 ../Traceur/TCTupdate.zip 6 ../SE_845/EF184.pdf 11 ../Traceur/Gravure.fpd 9 ../SE_845/Protection.jpg 5 ../PP_ECL86/30Hz-8W-6R.gif 58 ../Traceur/TDFiles/200ms.tdf 2 ../SE_6B4/3KAuto.gif 11 ../Yves/tri_pen.jpg 4 ../SE_6L6/6l6-kr.pdf 15 ../PP_6AS7/Front.gif 17 ../Xformers/TOOLS.BAS 12 ../PP_ECL86/THD0dB.pdf 67 ../Traceur/PDFs/VT1-400Va-2v2fil.pdf 2 ../Xformers/core.tbx 12 ../Yves/Driver845.gif 4 ../OPT_da/323/Draft.net 2 ../SE_6L6/Front.jpg 5 ../Xformers/Std.dat 11 ../SE_300B/KISS/DA143.pdf 8 ../Yves/separateur 5 ../PP_6L6/Load.gif 4 ../img/glyph/btn_python_bg.gif 2 ../SE_EL84/Front.jpg 18 ../SE_EL84/Schema.gif 17 ../OPT_da/OPT_da-211.zip 70 ../PP_ECL86/DA36.pdf 80 ../test/perl/test.pl 3 ../Traceur/Page.html 10 ../Traceur/PDFs/WE418A-1-T.pdf 4 ../Yves/ECL86-Triode.gif 4 ../SE_845/ECL86-845.gif 3 ../PP_ECL86/Guy/Article PP ECL86 Dissident Audio, v0.pdf 9 ../Yves/300B-PP-6K4.gif 3 ../Yves/829B_RFAmp.jpg 4 ../IMD_Tester/2.jpg 11 ../Yves/GU50.gif 4 ../Yves/Overdrive.gif 6 ../PP_300B/AB2.gif 18 ../Images/MONTAGNE50.JPG 9 ../SE_845/SRPP.gif 2 ../SE_845/Thumbs.db 5 ../Transfos/Dissident/Fiches/DA130.pdf 2 ../IMD_Tester/VA-multitone.gif 12 ../Traceur/EN1.html 7 ../Traceur/Grid1b.gif 6 ../Yves/PORTABLE.jpg 5 ../Yves/Audiophile/Audiophile36-3.jpg 4 ../PP_ECL86/INSIDE.JPG 62 ../Traceur/TDFiles/QQExxx/QQE03-12-50.tdf 3 ../Pst/Power.zip 11 ../Yves/Franck/1.psu 2 ../SE_845/DA107-3.mox 5 ../Pre_6J6/Line.gif 4 ../777/PCB/PCB.gif 5 ../777/PCB/PCB1.gif 3 ../777/PCB/PP-777-1.pdf 7 ../777/PCB/PP-777-2.pdf 5 ../777/Amp-pre1.gif 12 ../777/PassBasic.pdf 19 ../777/PSU2a.pdf 18 ../Images/Diy.jpg 8 ../PP_6EM7/Draft.gif 2 ../RIAA_PC900/Front.jpg 7 ../RIAA_PC900/INSIDE.JPG 7 ../RIAA_PC900/PSU.gif 8 ../SpeakerBox/SpeakerBox.jpg 12 ../Yves/PNP.GIF 4 ../PP_6L6/Schema2.gif 2 ../Traceur/FR1.html 8 ../PPKT88-WAD/update.JPG 67 ../Traceur/TDFiles/6A5-3.tdf 3 ../SE_300B/KISS/DA143-a.pdf 5 ../PP_ECL86/DA17.jpg 67 ../img/glyph/btn_perl_bg.gif 2 ../Yves/Audiophile/Audiophile36-13.jpg 3 ../Pst/SE-STACK.PNG 6 ../SE_845/EL802-12K.gif 4 ../SE_845/EL802-845.gif 4 ../SE_6B4/Schema.gif 16 ../PP_6L6/Page.html 3 ../Xformers/GLOBAL.BAS 11 ../Traceur/TDFiles/QQExxx/2xQQE03-12-100.tdf 3 ../SEPP_Pre/Circuit1.gif 2 ../PP_ECL86/BOM.xls 296 ../PP_ECL86/Square_10KHz.pdf 16 ../PP_6L6/Bottom.jpg 4 ../PP_ECL86/PDF.jpg 28 ../SE_6L6/THD4W.gif 5 ../SE_6L6/DA101a.jpg 5 ../PP_ECL86/JPB/1.jpg 8 ../PP_ECL86/JPB/2.jpg 3 ../PP_ECL86/JPB/3.jpg 6 ../PP_ECL86/JPB/4.jpg 5 ../Transfos/Dissident/Fiches/DA154.pdf 4 ../Transfos/Dissident/DimensionsEI.pdf 4 ../OPT_da/323/DoNotErase.mox 3 ../SE_845/3xSQ10K.gif 4 ../Yves/Meeting/people4.jpg 2 ../PP_ECL86/DA17-FF.gif 63 ../PP_ECL86/Millérioux HH 18B.jpg 67 ../PP_ECL86/Front.jpg 68 ../PP_ECL86/DA17.MOX 63 ../PP_ECL86/Page.html 8 ../PP_ECL86/Charly/DSCN0175.JPG 4 ../PP_ECL86/Charly/DSCN0176.JPG 5 ../PP_ECL86/Charly/DSCN0177.JPG 7 ../PP_ECL86/Charly/DSCN0179.JPG 6 ../PP_ECL86/Charly/DSCN0180.JPG 4 ../PP_ECL86/Schema.gif 8 ../IMD_Tester/1.gif 10 ../IMD_Tester/1.jpg 14 ../img/glyph/btn_asp_bg.gif 2 ../PP_6B4/Projet1.gif 3 ../Transfos/Dissident/Logoclair.jpg 5 ../Transfos/Dissident/Aide.html 2 ../Transfos/Dissident/AskOpt.html 3 ../SE_6AS7/XXS2.jpg 8 ../SE_EL84/Rear.jpg 13 ../SE_6V6/Da33-4.gif 3 ../Yves/ClasseB/Balancoire.gif 2 ../Yves/SE_2A3.jpg 5 ../SE_845/Top-x.jpg 8 ../Traceur/Gifs/6V6-anode et G2.gif 3 ../SE_6B4/Page.html 17 ../SE_845/Page.html 4 ../Yves/SrppSym.jpg 4 ../Yves/Audiophile/Audiophile37-12.jpg 2 ../SE_300B/KISS/DA143-a.mox 3 ../PP_6L6/Schema3.gif 3 ../Images/MailMe.gif 9 ../SpeakerBox/DA90-1.jpg 14 ../SE_6L6/IMD_FullRange.gif 4 ../Traceur/TDFiles/TDF1.zip 3 ../Yves/Meeting/Final.jpg 3 ../img/glyph/btn_cgi_bg.gif 2 ../css/tabs.css 4 ../Traceur/Pix/TopLeft.jpg 3 ../PP_6L6/DA112-sim-transient.jpg 3 ../PP_845/Nagra.jpg 3 ../SE_6AS7/DA117.jpg 7 ../SE_845/New/Tral-2x845.gif 2 ../Yves/PSUT.psu 3 ../SE_845/EL802-x.jpg 4 ../PP_6L6/Percage.jpg 4 ../Pst/SE-WINDUP.zip 9 ../Pst/CROSSSECTION.PNG 8 ../Pst/EIRATIO.PNG 7 ../SE_845/845_P1.GIF 6 ../SE_6L6/Inside.JPG 2 ../Yves/6C33.jpg 2 ../SE_6L6/Schema.jpg 4 ../Yves/SEPP(draft)/HVmono.psu 2 ../Yves/FIRSTSS.gif 5 ../Images/ArrowLeft.jpg 10 ../Images/PassionTube.jpg 12 ../Yves/Simul2.psu 3 ../Images/flechedroite.gif 12 ../Yves/6CA7.gif 4 ../Yves/Introt.txt 4 ../Images/FRFlag.gif 9 ../Images/screwy1.jpg 8 ../Yves/Cedus.mox 3 ../Yves/AlimFouch.gif 3 ../Yves/Circuit2.cct 3 ../img/common/parallels_logo.gif 3 ../OPT_da/323/Default.mox 4 ../Yves/EL86Triode.pdf 4 ../SE_845/SRPP-18W_GNFB.gif 2 ../Yves/Audiophile/Audiophile36-9.jpg 2 ../test/perl/test.html 3 ../Transfos/Papers/Fabriquer/BobineuseNumerique.pdf 6 ../Traceur/TDFiles/EL84_T1.tdf 3 ../Yves/Simul1.jpg 5 ../Yves/Pulser.gif 4 ../Pst/BOBBINSIZE.PNG 4 ../Yves/WINGEDCLOGO.gif 2 ../Traceur/TDFiles/12AU7-0vg.tdf 2 ../Traceur/TDFiles/QQExxx/QQE03-12-80.tdf 2 ../Xformers/Xformers.zip 11 ../Yves/Cedus.gif 3 ../Yves/EL509-Triode.gif 4 ../Xformers/M6x.dat 8 ../TCT3/Soft/TCT3b.tar.gz 2 ../SE_6L6/THD1W.gif 4 ../Xformers/Xformers.vbp 8 ../Yves/6SN7-27k-400v.gif 3 ../Xformers/Main.frm 10 ../SE_845/Front-x.jpg 3 ../SE_6AS7/Rp.jpg 4 ../Pst/OptionsRegionales.jpg 9 ../Yves/G1Bias.gif 5 ../Images/ArrowRight.jpg 6 ../Yves/ECC86.gif 5 ../Yves/pstcalc.zip 4 ../Traceur/TDFiles/QQExxx/2xQQE03-12-200.tdf 2 ../PP_EL36Triode/Draft1.gif 3 ../img/icons/tabs/left_on.gif 2 ../Pst/Personnaliser.jpg 6 ../SE_845/DA107-3-snap.jpg 6 ../Yves/Pre0.gif 4 ../Images/flechegauche.gif 6 ../SE_845/Compare.gif 2 ../SE_6B4/6B4-6C4C.JPG 12 ../PP_6AS7/Schema.gif 16 ../SE_6L6/THD8W.gif 6 ../SE_845/EL183-Tri-7K3.gif 2 ../PP_6L6/DA112.gif 3 ../test/python/test.py 4 ../Yves/Sch1.jpg 4 ../test/php/test.html 2 ../SE_6V6/DOUBLEVUE.JPG 2 ../Yves/EI108-1-sq.jpg 3 ../Yves/EFL200_Lplate.gif 2 ../Pst/Bobineuse.zip 8 ../Images/Download.jpg 10 ../777/PCB/PCB2.gif 4 ../Yves/relais.gif 3 ../Traceur/82-812.gif 8 ../Traceur/Page2.html 4 ../Traceur/first.jpg 5 ../Yves/HVmono.psu 3 ../RegulHT/multiv.gif 13 ../Yves/SE_2A3-a.jpg 4 ../RegulHT/basic.gif 8 ../SE_845/18w.gif 2 ../Traceur/TDFiles/12AU7-1-c.tdf 3 ../Yves/PPEL34.jpg 3 ../Yves/Audiophile/Audiophile37-3.jpg 2 ../Pst/4xEL84.zip 5 ../PP_6L6/DA112-sim-bode.jpg 2 ../PP_6L6/WN-Spectra.gif 3 ../PP_6L6/Mesures1.gif 2 ../test/coldfusion/test.html 2 ../Traceur/Ex1.jpg 7 ../Yves/6C45p-1.gif 3 ../SE_6L6/IMD_Zoomed.gif 3 ../PP_6L6/Dedans.jpg 3 ../PP_6L6/Gauche.jpg 2 ../Yves/EL34.gif 2 ../Images/DROOPY.GIF 7 ../Traceur/DisplayUnit/GUI2.jpg 4 ../Yves/EL802LdLine.gif 4 ../PP_6L6/Zplot.gif 7 ../Yves/riaa.gif 4 ../Yves/SRPPPP1.gif 2 ../Pst/Prova1.gif 11 ../RIAA_PC900/Page.html 10 ../Yves/EL36-Triode.jpg 2 ../Traceur/TDFiles/12AX7-b.tdf 2 ../Yves/Z-Booster.gif 3 ../Yves/InputStage.gif 2 ../img/glyph/btn_miva_bg.gif 2 ../Pst/SE-WINDUP.PNG 8 ../Yves/SE_2A3-SQ.jpg 2 ../SE_6L6/DA35P.gif 5 ../PP_6AS7/Page.html 15 ../PP_6L6/Front.jpg 2 ../Yves/6L6SE-1.jpg 3 ../SE_EL36/Ampli-1.gif 2 ../SE_845/DA107-3.jpg 5 ../Traceur/TC1.gif 5 ../SE_EL84/Inside.jpg 14 ../Traceur/TDFiles/7025.tdf 3 ../PP_6L6/Sch-V21.gif 3 ../Mesures/Mesures.xls 8 ../PP_6L6/Phase1.gif 2 ../Yves/813-900V-6K4.gif 3 ../SE_6B4/Fond.jpg 10 ../Yves/oudonc.gif 3 ../Yves/EI108-1-bp.jpg 3 ../Images/Mauves.jpg 8 ../Yves/StackedSupplies.gif 3 ../Traceur/88.gif 6 ../PP_6L6/Droit.jpg 4 ../Yves/276.GIF 4 ../Yves/G2Shutdown.gif 3 ../OPT_da/323/Draft33-Bode.asc 3 ../Yves/img_3635.jpg 3 ../Yves/SEPP.GIF 4 ../Yves/Franck/90.psx 2 ../SE_EL84/DA12-8_Bode.gif 13 ../Transfos/Dissident/Fiches/DA172.pdf 3 ../Yves/USBAudioBox.jpg 3 ../Yves/AlimSEPP.jpg 3 ../Yves/Pont_Hybride.gif 5 ../SE_6L6/Looped_jig test.gif 4 ../Yves/Droite_de_charge.pdf 3 ../OPT_da/Mesures/Lf_and_Cshunt.xls 6 ../SE_845/DCCoupled.gif 4 ../Yves/alimriaa.gif 4 ../Images/UKFlag.gif 7 ../PP_6L6/DA114.gif 2 ../SE_845/David/David1.jpg 2 ../PP_6L6/4xSQ.gif 2 ../Traceur/TDFiles/S20K75.tdf 2 ../Yves/Audiophile/Audiophile37-6.jpg 2 ../Traceur/PMCT4.gif 5 ../Traceur/Pix/TopFront.jpg 2 ../SE_845/Plate.jpg 4 ../RegulHT/Tracking.gif 8 ../Traceur/Soft/Backups.zip 3 ../Traceur/PDFs/ecl82pentode_as_triode.pdf 3 ../Yves/AjPolar.gif 3 ../Traceur/TDFiles/6DQ6A_T1.tdf 2 ../SE_845/WhiteNoise.gif 4 ../Yves/gec30.psu 4 ../Yves/AlimPascal.jpg 3 ../PP_6L6/Schema1.gif 2 ../Traceur/Ducrocq/Ducrocq211.zip 2 ../Yves/VK200.jpg 3 ../SE_6L6/Internal_Z.gif 2 ../Yves/ECL82-SEPP.gif 3 ../Yves/EL802Drivrs.gif 3 ../Yves/Quinet-Page-304.jpg 3 ../Yves/boucle.jpg 3 ../Yves/6SL7-lo-Ip.gif 3 ../Yves/Choke.jpg 4 ../Yves/WhiteCF.gif 4 ../SE_845/Rear.jpg 2 ../Pst/BOBBIN.PNG 5 ../test/miva/test.html 3 ../Yves/6SL7.gif 3 ../SE_845/New/Alim-2x845.gif 3 ../css/style.css 3 ../Yves/CCSedLongTail.jpg 3 ../Yves/gec30psu.gif 4 ../Yves/ECC99-PT.gif 3 ../Mike_Preamp/Cascode/Cascode1.gif 40 ../Yves/Capture.png 3 ../Yves/ECC88Plate.gif 3 ../Yves/HVstereo.psu 3 ../SE_6B4/Front.jpg 11 ../Yves/SSCCS.GIF 3 ../Transfos/Dissident/Fiches/EL809.gif 2 ../Yves/ShuntReg1.jpg 3 ../Yves/Filtre-Bouchra.gif 3 ../img/common/footer_bg.gif 2 ../RegulHT/Shunt/3.gif 3 ../Yves/EC86.jpg 4 ../Traceur/Embarqued USB/Embarqued USB.html 3 ../Transfos/Dissident/Fiches/TRAL3.pdf 2 ../Pst/Papers/Pst-AN-GEC30.zip 3 ../Yves/EL34-Trioded.gif 3 ../test/ssi/test.shtml 3 ../Yves/PMCT3.gif 3 ../SE_6L6/THD2W.gif 2 ../Yves/screwy1.jpg 4 ../Yves/KT88-Trioded.gif 5 ../Yves/OPT_da-211.zip 3 ../Yves/Audiophile/Audiophile36-2.jpg 3 ../Yves/Audiophile/Audiophile37-16.jpg 3 ../Yves/FRONT.JPG 5 ../SE_845/V1.gif 4 ../Yves/UL-or-not-UL.gif 3 ../Yves/Warmth.jpg 2 ../RegulHT/More/PassBasic.gif 3 ../Traceur/TDFiles/000ms.tdf 2 ../Yves/6C45-Alim.gif 3 ../test/ssi/test.html 3 ../Yves/QUADIICIR.JPG 3 ../Yves/IM18D.jpg 3 ../Yves/Shunt_Regs.gif 3 ../Yves/50W-25.gif 4 ../Traceur/Soft/Backup 8bits.rar 2 ../Yves/6A5.gif 3 ../test/coldfusion/test.cfm 3 ../Traceur/DisplayUnit/DwnldPgm.jpg 2 ../Traceur/PowerUnit/AnodeSupply_1-1.jpg 3 ../Traceur/PowerUnit/Grid1Supply_1-1.jpg 4 ../Traceur/Embarqued USB/2010-01.gif 2 ../Yves/6L6-ScreenDriven.gif 3 ../test/fcgi/test.fcgi 3 ../Traceur/TDFiles/R100K.tdf 2 ../Yves/PMCT.gif 2 ../777/PCB/PCB2.psp 3 ../Yves/QQE03-12_triode.pdf 3 ../Yves/MoreBootstrap.gif 3 ../Yves/AudioBoxLoop.jpg 3 ../Yves/Selfs-a-air.jpg 3 ../SE_6AS7/Decoupes.gif 3 ../Yves/6V6_SE_CFB.gif 3 ../RegulHT/Shunt/ShuntReg.pdf 2 ../Yves/Franck/90V.psu 2 ../test/python/test.html 3 ../test/fcgi/test.html 2 ../Yves/Gr3gg_OPT.jpg 3 ../Traceur/Gifs/6CA7-Triode.gif 2 ../Yves/SocketOctal.jpg 3 ../test/apacheasp/test.html 2 ../Yves/ClasseB/300BPP-composite.gif 2 ../RegulHT/Shunt/4.gif 2 ../OPT_da/317/setup.zip 2 ../RegulHT/Shunt/2.gif 3 ../Yves/Audiophile/Audiophile37-11.jpg 2 ../img/common/banner.jpg 2 ../Traceur/TDFiles/0VTest.tdf 3 ../Traceur/Gifs/EL86-Triode.gif 2 ../Traceur/TDFiles/ECC88-1.tdf 2 ../Yves/Simul2.jpg 3 ../Yves/Mullard_3-3.gif 3 ../Traceur/DisplayUnit/GUI3.jpg 2 ../Yves/Audiophile/Audiophile37-4.jpg 2 ../Yves/Simul1.psu 2 ../test/fcgi/fcgi.py 2 ../Yves/WingedC.htm 2 ../Traceur/Pix/TopRight.jpg 2 ../Traceur/DisplayUnit/InstallV109.zip 2 ../Pst/V109/Pst.exe 3 ../Traceur/Gifs/6CA7vsEL34.gif 2 ../Traceur/DisplayUnit/DwnldSrc.jpg 2 ../img/icons/tabs/bg.gif 2 ../RegulHT/Totof/PCB-Simple.gif 3 ../Traceur/Pix/InEmpty.jpg 2 ../Yves/Audiophile/Audiophile36-4.jpg 3 ../Traceur/PowerUnit/HeaterSupply_1-1.jpg 2 ../Traceur/TDFiles/ECC189_12.tdf 2 ../Traceur/Gifs/EL36-Triode-200V-70mA-3K.gif 3 ../Traceur/DisplayUnit/GUI1.jpg 3 ../test/cgi/test.html 2 ../SE_300B/KISS/Measures/DA143-1.gif 3 ../Transfos/Dissident/Fiches/TRS10.pdf 2 ../Traceur/TDFiles/QQExxx/QQE02-5-150.tdf 2 ../OPT_da/323/Draft.plt 3 ../Yves/Franck/Nouveau.psx 2 ../Yves/EL83-Plate.gif 2 ../Yves/SEPP_pre.gif 2 ../Yves/V72CIRCUIT.GIF 1 ../img/common/top_body_bg.jpg 1 ../img/common/pws_box.jpg 1 ../img/common/parallels_powered.gif 1 ../img/common/logo.gif 1 ../img/common/content_bg.gif 1 ../img/common/arrow.gif 1 ../img/glyph/dBox-header-left.gif 1 ../img/glyph/dBox-header-right.gif 1 ../img/glyph/btn_ssi_bg.gif 1 ../img/glyph/dBox-footer-bg.gif 1 ../img/glyph/btn_refresh-list_bg.gif 1 ../img/glyph/btn_php_bg.gif 1 ../img/glyph/btn_ok_bg.gif 1 ../img/glyph/btn_coldfusion_bg.gif 1 ../img/glyph/btn_bg.gif 1 ../img/glyph/btn_bg-disabled.gif 1 ../img/icons/success.gif 1 ../img/icons/fail.gif 1 ../RegulHT/Totof/Schéma-Simple.gif 2 ../RegulHT/Totof/Schéma-Double.gif 2 ../RegulHT/Totof/Régul HT a DN3545 et IRF820.rar 1 ../RegulHT/Totof/PCB-Double.gif 1 ../RegulHT/Shunt/1.gif 1 ../SE_845/New/Simu-2x845.gif 2 ../SE_845/TB/triode1.png 1 ../SE_845/TB/fulltriode.png 1 ../SE_845/TB/pprabi1.png 1 ../SE_845/TB/tuto4.png 1 ../SE_845/TB/tuto3.png 1 ../SE_845/TB/tuto2.png 1 ../SE_845/TB/tuto1.png 1 ../SE_845/TB/live.png 1 ../test/apacheasp/test.asp 2 ../Traceur/DisplayUnit/SrcV109.zip 1 ../Traceur/DisplayUnit/Dwnldtdf.jpg 2 ../Traceur/Gifs/EL36-Triode.gif 1 ../Traceur/Pix/InEmpty1.jpg 2 ../Traceur/Pix/6V6-Ia-Ig2.gif 1 ../Traceur/Ducrocq/Ducrocq.doc 1 ../Traceur/TDFiles/S14K60.tdf 1 ../Traceur/TDFiles/EL84_T3.tdf 1 ../Traceur/TDFiles/EL84_T2.tdf 1 ../Traceur/TDFiles/EL183.tdf 1 ../Traceur/TDFiles/EF1841.tdf 1 ../Traceur/TDFiles/EF184.tdf 1 ../Traceur/TDFiles/EF184-3.tdf 1 ../Traceur/TDFiles/EF184-2.tdf 1 ../Traceur/TDFiles/EF184-1.tdf 1 ../Traceur/TDFiles/ECC88_1ter.tdf 1 ../Traceur/TDFiles/ECC88-2.tdf 1 ../Traceur/TDFiles/ECC88-1bis.tdf 1 ../Traceur/TDFiles/ECC88-10-02.tdf 1 ../Traceur/TDFiles/ECC83.tdf 1 ../Traceur/TDFiles/ECC189_15.tdf 1 ../Traceur/TDFiles/ECC189_10_t.tdf 1 ../Traceur/TDFiles/ECC189_10.tdf 1 ../Traceur/TDFiles/ECC182.tdf 1 ../Traceur/TDFiles/7025-1.tdf 1 ../Traceur/TDFiles/6DQ6A_T2.tdf 1 ../Traceur/TDFiles/6DQ6A_T.tdf 1 ../Traceur/TDFiles/6AS7.tdf 1 ../Traceur/TDFiles/6A5-4.tdf 1 ../Traceur/TDFiles/6A5-2.tdf 1 ../Traceur/TDFiles/6A5-1.tdf 1 ../Traceur/TDFiles/6A5-0.tdf 1 ../Traceur/TDFiles/12AX7-a.tdf 1 ../Traceur/TDFiles/12AU7.tdf 1 ../Traceur/TDFiles/12AU7-c.tdf 1 ../Traceur/TDFiles/12AT7.tdf 1 ../Traceur/TDFiles/12AT7-c.tdf 1 ../Traceur/TDFiles/100ms.tdf 1 ../Traceur/TDFiles/0V.tdf 1 ../Transfos/Dissident/ShortDoc.html 2 ../Transfos/Dissident/Formul-JS-02.html 1 ../Yves/Audiophile/Audiophile37.jpg 2 ../Yves/Audiophile/Audiophile37-9.jpg 1 ../Yves/Audiophile/Audiophile37-8.jpg 1 ../Yves/Audiophile/Audiophile37-7.jpg 1 ../Yves/Audiophile/Audiophile37-5.jpg 1 ../Yves/Audiophile/Audiophile37-2.jpg 1 ../Yves/Audiophile/Audiophile37-17.jpg 2 ../Yves/Audiophile/Audiophile37-15.jpg 1 ../Yves/Audiophile/Audiophile37-14.jpg 1 ../Yves/Audiophile/Audiophile37-13.jpg 1 ../Yves/Audiophile/Audiophile37-10.jpg 1 ../Yves/Audiophile/Audiophile36-8.jpg 2 ../Yves/Audiophile/Audiophile36-6.jpg 1 ../Yves/Audiophile/Audiophile36-5.jpg 1 ../Yves/Audiophile/Audiophile36-12.jpg 1 ../Yves/Audiophile/Audiophile36-11.jpg 2 ../Yves/Audiophile/Audiophile36-10.jpg 1 ../Yves/ClasseB/Image2.gif 1 ../Yves/ClasseB/ClasseB.gif 1 ../Yves/ClasseB/ClasseB-1.gif 1 ../Yves/MCINTOSH/MC275CE_OWN.PDF 1 ../Yves/Meeting/people5.jpg 1 ../Yves/Meeting/people3.jpg 2 ../Yves/Meeting/people2.jpg 1 ../Yves/Meeting/people1.jpg 1 ../Yves/Meeting/amboulons.jpg 1 ../Yves/Pierrot/Alim450-300.gif 2 ../Yves/SEPP(draft)/Sch7.gif 2 ../img/icons/tabs/left.gif 1 ../img/icons/tabs/left_first.gif 1 ../img/icons/tabs/left_over.gif 1 ../img/icons/tabs/right.gif 1 ../img/icons/tabs/right_last.gif 1 ../img/icons/tabs/right_on.gif 2 ../Traceur/Ducrocq/Install-227/SETUP.LST 1 ../Traceur/Ducrocq/Install-227/setup.exe 1 ../Traceur/Ducrocq/Install-227/TCT227.CAB 2 ../Traceur/TDFiles/QQExxx/QQE03-12-100.tdf 1 ../Traceur/TDFiles/QQExxx/QQE02-5-200.tdf 1 ../Traceur/TDFiles/QQExxx/QQE02-5-50.tdf 1 ../Traceur/TDFiles/QQExxx/QQE02-5-100.tdf 1 ../Traceur/TDFiles/QQExxx/QQE02-5-80.tdf 1 ../Transfos/Papers/Mesurer/4pole.gif 1 ../Transfos/Papers/Mesurer/BP.gif 1 ../Transfos/Papers/Fabriquer/Bobineuse 2.0.pdf 1 ../Transfos/Papers/Fabriquer/Dévidoirs.jpg 1 ../Transfos/Papers/Fabriquer/Spirfil.jpg 1 ../Transfos/Dissident/Fiches/DA107.pdf 1 ../Transfos/Dissident/Fiches/DA134_1.jpg 2 ../Transfos/Dissident/Fiches/DA134_2.jpg 1 ../Transfos/Dissident/Fiches/Pascal-1.gif 2 ../Transfos/Dissident/Fiches/Pascal-1.xls 2 ../Transfos/Dissident/Fiches/SF5-300.pdf 1 ../Transfos/Dissident/Fiches/TRAL5.pdf 1 ../Transfos/Dissident/Fiches/TRS12.pdf 1 ../Transfos/Dissident/Fiches/TRS6.pdf 1 ../Transfos/Dissident/Fiches/TRS9.pdf 1 ../Transfos/Dissident/Fiches/DA152.pdf 1 ../Transfos/Dissident/Fiches/DA125.pdf 1 ../Transfos/Dissident/Fiches/DA147.pdf 1 ../SE_845/Lateral.jpg 1