FR 2821182 A1 20020823 FR 0102158 A 20010216 La présente invention concerne un dispositif complémentaire à un système informatique, permettant le contrôle avec un pied, des fonctions de lecture, d'arrêt, d'avance rapide et de retour arrière d'un enregistrement sonore ou d'images numérisé, soit pour l'écoute du document sonore ou pour la visualisation d'images, et cela sans le recours des mains les laissant ainsi disponibles. Etat actuel de la technique. Traditionnellement, la dactylographie de documents sonore se fait à partir d'enregistrements analogiques sur bandes magnétiques, le poste de travail de l'opérateur consistant en un lecteur mécanique associé à un commutateur aux pieds contrôlant l'arrêt ou la lecture ainsi que le retour arrière de la bande magnétique. Avec l'avènement des nouvelles techniques d'enregistrement de document sonores par numérisation ainsi que leur stockage sur des ordinateurs, d'une part, l'utilisation universel des ordinateurs dans les travaux de bureautique, d'autre part, l'évolution du poste de transcription dactylographique est inéluctable. L'intérêt du remplacement des systèmes d'enregistrement analogique par la numérisation est évidente : centralisation du poste de travail, annulation des contraintes liées au support de stockage, transfert sur les réseaux (intranet, internet,...), mais la mise en place du poste de saisie sur un ordinateur de bureautique ne pouvait pas être réalisée sans la création d'un outil adapté au problème, à savoir : libérer les mains de l'opérateur, pour la saisie dactylographique des textes, en lui permettant de contrôler l'écoute du fichier à transcrire. Actuellement, l'écoute ou la visualisation d'un enregistrement numérique se fait par l'intermédiaire d'un programme informatique que l'opérateur commande à l'aide d'un pointeur ou du clavier, l'opérateur est donc obligé de quitter sa tâche de dactylographie pour commander le lecteur virtuel ; or la fréquence de répétition des commandes lecture- arrêt-retour-lecture est très souvent supérieur à 10 par minute d'enregistrement en fonction de l'élocution de l'orateur, du vocabulaire utilisé, etc... 11 est donc clair que les fonctionnalités et l'ergonomie insuffisantes de ce programme ne lui permet absolument pas d'être utilisé dans un contexte de transcription dactylographique, et que l'invention telle qu'elle est décrite, répond à tous les problèmes énoncés. Le dispositif selon l'invention permet de remédier à ces inconvénients. Il comporte en effet selon une première caractéristique, une platine (1) avec, à sa droite un interrupteur électrique (4), protégé et actionné par une protection mécanique articulée (3), qui active le signal"lecture"lorsque la protection mécanique est maintenue enfoncée avec le pied et qui active le signal"stop"lorsque elle est relâchée. Sur la partie gauche de la platine, un deuxième interrupteur électrique (4) avec sa protection mécanique articulée (3) délivre le signal de"retour arrière"lorsqu'il est maintenu enfoncé avec le pied. Les fonctionnalités des interrupteurs pouvant être inversés. Selon des modes particuliers de réalisation, les protections mécaniques peuvent être remplacé par une membrane souple. Une interface électronique (6) intégrée à l'intérieur de la platine interprète les commutations, les codifies et transfère les signaux de commande"lecture","stop"et "retour"générés, via un câbles de liaison (5), à un port de communication d'un ordinateur. Selon des modes particuliers de réalisation, le câble de liaison des signaux de commande peut être remplacé par un dispositif de transfert par une liaison infra rouge ou par ondes hertziennes. Le dispositif d'alimentation électrique de l'interface électronique est soit externe, soit interne, par une batterie, une pile ou un transformateur électrique (8). Après ouverture d'une interface utilisateur sur l'écran du système informatique, l'opérateur défini le fichier de l'enregistrement numérisé (EN) dont il veut en faire l'écoute pour le transcrire sur un logiciel de traitement de texte. Une fois charger en mémoire l'entête du fichier numérisé contenant les informations relatives à sa taille, sa durée et son taux d'échantillonnage, un programme informatique spécifique interprète les signaux de commande de la platine (cf section Lecture du signal issu de/l'interface"annexe 1 pages nOl7 et 18-19) pour effectuer les fonctions suivantes : la lecture, l'arrêt et le retour arrière du défilement de l'EN (cf les sections : Action de lecturee , de recule, d'arrêt annexe 1 pages non7-18), la mémorisation des points de lecture (cf les sections.' L'ensemble de la platine et de son interface électronique ainsi que les programmes d'instructions informatiques utilisateur constituent un périphérique d'un système in- formatique hôte. Le contrôle du système informatique hôte avec le pieds et de se fait, libérant totalement les mains de l'opérateur, rend l'invention particulièrement adaptée aux travaux de dactylographie et d'audiotypie, permettant ainsi l'écoute des enregistrements sonores créés à partir des nouvelles techniques de numérisations et, simultanément, effectué la saisie des textes. Les dessins représente : en coupe, la platine (figure 1) la face supérieure de la platine (figure 2) la face inférieure interne de la platine (figure 3) le câblage (figure 4) le schéma de principe électronique (figure 5) l'organigramme du programme d'instructions informatique (figure 6) En référence à ces dessins, le dispositif comporte une platine (1) avec un plan incliné comme face supérieure et dont la largeur est suffisante pour que le pied puisse être poser entre les deux protections mécaniques (3) couvrant les interrupteurs électrique (4). Sur la face inférieure interne de la platine, les interrupteurs électrique situé à droite et à gauche, sont fixés sur un supports (7). Entre les supports, repose l'interface électronique (6), éventuellement sur des supports isolants, ainsi que l'alimentation électrique si elle est interne. En protection et pour activer les interrupteurs par la pression du pied, deux demi coquilles (3) rectangulaires sont articulées par un axe dans leur partie supérieure (9) et maintenues en position haute par un ressort (2) situé sous chacune des extrémités des protections. Le câble de liaison entre l'interface et l'ordinateur (5) est fixé sur la partie antérieure de la platine, ainsi que le câble d'alimentation si celle-ci est externe (8). L'annexe 1 représente l'algoritme. L'annexe 2 est le programme d'instruction informatique dans sa version 2. 01 déve- loppé en langage informatique visual Basie. Annexe 1 Début - Ouverture de l'application - Ouverture d'un fichier son ou - Consultation et/ou ouverture des historiques Lecture - réglage de la vitesse de lecture - réglage du saut de recul - mémorisation du point de lecture - recu 1 - reçut par saut - recul continu - arrêt - exécution - fermeture du fichier - mémorisation des variables - Fermeture de l'application - Fin ANNEXE 2 Option Explicit Private Declare Function ShowWindow Lib"user32" (ByVal hWnd As Long, ByVal flgs As Long) As Long Private Declare Function GetWindow Lib"user32" (ByVal hWnd As Long, ByVal wCmd As Long) As Long Private Declare Function GetWindowWord Lib"user32" (ByVal hWnd As Long, ByVal windx As Long) As Long Private Declare Function GetWindowLong Lib"user32"Alias"GetWindowLongA" (ByVal hWnd As Long, ByVal windx As Long) As Long'Private Declare Function GetWindowText Lib"User32"Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal IpSting As String, ByVal nMaxCount As Long) As Long Private Declare Function GetWindowTextLength Lib"user32"Alias"GetWindowTextLengthA" (ByVal hWnd As Long) As Long Private Declare Function SetWindowPos Lib"user32" (ByVal hWnd As Long, ByVal insaft As Long, ByVal X%, ByVal Y%, ByVal cx%, ByVal cy%, ByVal flgs As Long) As Long Const flags = & H2 Or & Hl Or & H40 Or & H10 Const HKEYCURRENTUSER = & H80000001 Private Declare Function RegCreateKey Lib"advapi32. dIl" Alias"RegCreateKeyA"- (ByVal hkey As Long, ~ ByVal IpSubKey As String, ~ phkResult As Long) As Long Private Declare Function RegQueryValueEx Lib"advapi32. dll" Alias"RegQueryValueExA" (ByVal hkey As Long, ~ ByVal IpValueName As String, ~ ByVal IpReserved As Long, ~ lpType As Long, ~ lpData As Any, ~ lpcbData As Long) As Long Const GWJHWNDFIRST = 0 Const GWHWNDNEXT = 2 Const GWLSTYLE = (-16) Dim IsTask As Long Const WSVISIBLE = & HIOOOOOOO Const WS~BORDER = & H800000 Dim WApp As Object Dim TTT As Double Dim TF As Double Dim Taille As Boolean Dim Passer, Premierefois As Boolean Dim Idx As Integer Dim Saure-index As String Dim Key As String Dim Section, Recup As String Dim Fichiert As String Dim Transfert, DefautFile As String Dim LPTDonnee, LPTCommandes, LPTEtat As Long Dim retour As Integer Dim PosArriere As Integer Dim PosLec As Integer Dim Port~Para As Integer Dim PosR As Integer Dim Reste As Integer Dim Ancien As Integer Dim Vitesse As Long Dim Debut~F, Fin~F As Double Private Sub Aide~Click() Checkl. Value = 0 Taille = True Me. Top = 765 Me. Width = 7305 Me. Height = 4290 End Sub Private Sub ChecklClick () Taille = False Me. Top = 765 Me. Width = 4725 Me. Height = 4290 End Sub Private Sub Deffile~Click (Index As Integer) Dim d As Integer Premierefois = False If Deffile (5). Caption o""Then If Deffile (5). Checked = False Then Passer = False Deffile (5). Checked = True For d = 1 To Donnee. Count-1 If Deffile (5). Caption = Donnee. Item (d). Caption Then Donnee. Item (d). Checked = True Exit For End If Next d Recherche-Word (1) Recuperation (Deffile (5). Caption) If Recherche = False Then If DefautFile =""Then Screen. MousePointer = vbHourglass DocumentNouveau MediaPlayerl. filename = File-Media MediaPlayerl. CurrentPosition = DebutF TF = CSng (MediaPlayerl. Duration)/24/60/60 TTT = CSng (MediaPlayerl. CurrentPosition)/24/60/60 Reglette. Command1. Caption = Format (TF, "hh : mm : ss") & "/" & Format (TTT,"hh : mm : ss") Reglette. HScrolll. Max = MediaPlayerl. Duration Reglette. HScrolll. Value = MediaPlayerl. CurrentPosition Timerl. Enabled = True Eise Screen. MousePointer = vbHourglass DocumentEncours MediaPlayerl. filename = File-Media MediaPlayerl. CurrentPosition = DebutF TF = CSng (MediaPlayerl. Duration)/24/60/60 TTT = CSng (MediaPlayerl. CurrentPosition)/24/60/60 Reglette. Commandl. Caption = Format (TF,"hh : mm : ss") & "/" & Format (TTT,"hh : mm : ss") Reglette. HScrolll. Max = MediaPlayerl. Duration Reglette. HScrolll. Value = MediaPlayerl. CurrentPosition Timerl. Enabled = True End If Else Screen. MousePointer = vbHourgiass MediaPlayerl. filename = File-Media MediaPlayerl. CurrentPosition = DebutF TF = CSng (MediaPlayerl. Duration)/24/60/60 TIT = CSng (MediaPlayerl. CurrentPosition)/24/60/60 Reglette. Commandl. Caption = Format (TF,"hh : mm : ss") & "/" & Format (TTT,"hh : mm : ss") Reglette. HScroHl. Max = MediaPlayerl. Duration Reglette. HScroll 1. Value = MediaPlayerl. CurrentPosition Timerl. Enabled = True End If Else Deffile (5). Checked = False Timerl. Enabled = False End If End If Screen. MousePointer = vbDefault End Sub Private Sub Delfile-Click (Index As Integer) Dim msg As String If Delfile. Item (Index). Caption = Left (Deffile (5). Caption, Len (Delfile. Item (Index). Caption) ) Then msg ="Impossible de supprimer le fichier" & vbCrLf & vbCrLf & Delfile. Item (Index). Caption & vbLf MsgBox msg, vbCritical,"Fichier utilisé par défault" Else If Delfile. Item (Index). Checked = True Then Delfile. Item (Index). Checked = False Eise Delfile. Item (Index). Checked = True Passer = False End If End If End Sub Private Sub DonneeClick (Index As Integer) Dim ok As Integer Premierefois = False If Index o 0 Then If Donnee. Item (Index). Checked = True Then Donnee. Item (Index). Checked = False Delfile. Item (Index). Enabled = True Timerl. Enabled = False Else Donnee. Item (Index). Checked = True Transfert = Deffile (5). Caption Deffile (5). Caption = Donnee. Item (Index). Caption Delfile. Item (Index). Enabled = False Donnee. Item (Ancien). Checked = False Recherche-Word (1) Recuperation (Deffile (5). Caption) ok = FileExits (File-Media) Select Case ok Case 53,55, 70 Donnee. Item (Index). Enabled = False MsgBox ("Le fichier séléctionné n'existe plus") Case Else If Recherche = False Then If DefautFile =""Then Screen. MousePointer = vbHourglass DocumentNouveau SaveSetting"ATS","setting","Lastfile", Deffile (5). Caption MediaPlayerl. filename = FileMedia MediaPlayerl. CurrentPosition = DebutF TF = CSng (MediaPlayerl. Duration)/24/60/60 TTT = CSng (MediaPlayerl. CurrentPosition) /24/60/60 Reglette. Commandl. Caption = Format (TF, "hh : mm : ss") & "/" & Format(TTT, "hh : mm : ss") Reglette. HScrolll. Max = MediaPlayerl. Duration Reglette. HScrolll. Value = MediaPlayerl. CurrentPosition Timerl. Enabled = True Else Screen. MousePointer = vbHourglass DocumentEncours SaveSetting"ATS","setting","Lastfile", Deffile (5). Caption MediaPlayerl. filename = FileMedia MediaPlayerl. CurrentPosition = DebutP TF = CSng (MediaPlayerl. Duration)/24/60/60 TTT = CSng (MediaPlayerl. CurrentPosition)/24/60/60 Reglette. Commandl. Caption = Format (TF, "hh : mm : ss") & "/" & Format(TTT,"hh : mm : ss") Reglette. HScrolll. Max = MediaPlayerl. Duration Reglette. HScroHl. Value = MediaPlayerl. CurrentPosition Timerl. Enabled = True End If Else Screen. MousePointer = vbHourglass SaveSetting"ATS","setting","Lastfile", Deffile (5). Caption MediaPlayerl. filename = File-Media MediaPlayerl. CurrentPosition = DebutJF TF = CSng (MediaPlayerl. Duration)/24/60/60 TTT = CSng (MediaPlayerl. CurrentPosition)/24/60/60 Reglette. Commandl. Caption = Format (TF, "hh : mm : ss") & "/" & Format(TTT,"hh : mm : ss") Reglette. HScrolll. Max = MediaPlayerl. Duration Reglette. HScrolll. Value = MediaPlayerl. CurrentPosition Timerl. Enabled = True End If End Select Ancien = Index End If End If Screen. MousePointer = vbDefault End Sub Préparation et chargement de l'application Private Sub Form-Load Dim hMenu As Long Dim MySettings As Variant, intSettings As Integer Dim MySet As Variant, intSet As Integer Dim Res As Long retour = 1 Sauve~Arret = 0 'Me. Show 'Initialisation des varaible du départ hMenu = GetSystemMenu (hWnd, 0) Call DeleteMenu (hMenu, & HFOOO, & HO & ) Call DeleteMenu (hMenu, & HF030, & HO & ) Port~Para = 0 Reglette. Show Reglette. Left = 0 Reglette. Top = 0 Reglette. Width = Screen. Width Res = SetWindowPos (Reglette. hWnd, -1, 0,0, 0,0, flags) Reglette. HScroIIl. Width = (Reglette. Width-80)-Reglette. HScrolll. Left 'Extrait les paramètres. MySettings = GetAHSettings (appname : ="ATS", Section : ="Setting") On Error GoTo abort For intSettings = LBound (MySettings, 1) To UBound (MySettings, 1) Next intSettings SaveSetting"ATS","LPT1","LPT1DONNEE", 888 SaveSetting"ATS","LPT1","LPT1ETAT\ 889 SaveSetting"ATS","LPT1","LPT1~COMMANDES", 890 SaveSetting"ATS","LPT2","LPT2DONNEE", 632 SaveSetting"ATS","LPT2","LPT2~ETAT, 633 SaveSetting"ATS","LPT2","LPT2COMMANDES", 634 Deffile (5). Visible = True For intSettings = LBound (MySettings, 1) To UBound (MySettings, 1) Key = MySettings (intSettings, 0) Select Case Key Case"Top" Me. Top = MySettings (intSettings, 1) Case"Left" Me. Left = MySettings (intSettings, 1) Case"Height" Me. Height = MySettings (intSettings, 1) Case"Width" Me. Width = MySettings (intSettings, 1) Case"Lastfile" Deffile (5). Caption = MySettings (intSettings, 1) Case"LPT1" MySet = GetAllSettings ("ATS","LPT1") For intSet = LBound (MySet, 1) To UBound (MySet, 1) Recup = MySet (intSet, 0) Select Case Recup Case"LPT1DONNEE" LPT~Donnee = MySet (intSet, 1) Case"LPT1COMMANDES" LPT~Commandes = MySet (intSet, 1) Case"LPT1~ETAT" LPTEtat = MySet (intSet, 1) End Select Next intSet LPT1. Checked = True Port~Para=1 Case"LPT2" MySet = GetAllSettings ("ATS", "LPT2") For intSet = LBound (MySet, 1) To UBound (MySet, 1) Recup = MySet (intSet, 0) Select Case Recup Case"LPT2DONNEE" LPTDonnee = MySet (intSet, 1) Case"LPT2COMMANDES" LPT~Commandes = MySet (intSet, 1) Case"LPT2ETAT" LPTEtat=MySet (intSet, 1) End Select Next intSet LPT2. Checked = True Port Para = 2 Case Else MySet = GetAllSettings ("ATS", Key & "\Media") For intSet = LBound (MySet, 1) To UBound (MySet, 1) Recup = MySet (intSet, 0) Select Case Recup Case"Debut" Debut~F=MySet (intSet, 1) Case"Fin" FinF = MySet (intSet, 1) If Int (DebuCF) 0 Then Reste = (Int (DebutF)/Int (Fin~F)) * 100 Donnee (retour-1). Caption = Donnee (retour-1). Caption & "" & Reste & "%" Else Donnee (retour-1). Caption = Donnee (retour-1). Caption & "0 %" End If Case"Vitesse" Vitesse = MySet (intSet, 1) Case"PosR" Pos~Lec = MySet (intSet, 1) Case Else Load Donnee (retour) Load Delfile (retour) Donnee (retour). Caption = MySet (intSet, 1) Delfile (retour). Caption = MySet (intSet, 1) retour = retour + 1 End Select Next intSet End Select MySettings = GetAllSettings ("ATS", "Setting") Next intSettings If PortPara = 0 Then MsgBox"Veuillez sélectionner un Port paralèlle" & vbCrLf & "dans l'onglet & vbCrLf & "Port", vbinformation,"Sélection du Port de dialogue" Idx = retour vbCrLf & "Port", vbInformation,"Sélection du Port de dialogue" Idx = retour Section = Key Passer = True Premierefois = True If retour = 1 Then Unload Donnee (l) 'Iconisation de l'application With nid . cbSize = Len (nid) . hWnd = Me. hWnd . uld = vbNull . uFIags = NIFICON Or NIFTIP Or NIFMESSAGE . uCatlBackMessage = WMMOUSEMOVE . Hcon = Me. Icon . szTip ="Application Active" & vbNullChar End With ShelLNotifyIcon NIMADD, nid MediaPlayerl. AutoStart = False HScrolll. Value = 0 Labell. Caption ="Vitesse normale" Select Case Pos~Lec Case 1 Option6. Value = True Reglette. Combol. Text = Reglette. Combol. List (O) Case 2 Option7. Value = True Reglette. Combol. Text = Reglette. Combol. List (l) Case 3 Option8. Value = True Reglette. Combol. Text = Reglette. Combol. List (2) Case 4 Option9. Value = True Reglette. Combol. Text = Reglette. Combol. List (3) Case 5 Option1. Value = True Reglette. Combol. Text = Reglette. Combol. List (4) Case 10 Option2. Value = True Reglette. Combol. Text = Reglette. Combol. List (5) Case 15 Option3. Value = True Reglette. Combol. Text = Reglette. Combol. List (6) Case 20 Option4. Value = True Reglette. Combol. Text = Reglette. Combol. List (7) Case 25 Option5. Value = True Reglette. Combol. Text = Reglette. Combol. List (8) End Select Exit Sub 'si premiere execution abort : Idx = 1 Me. Show 'Iconisation de l'application With nid . cbSize = Len (nid) . hWnd = Me. hWnd . uld = vbNull . uFlags = NIFICON Or NIFnP Or NIFMESSAGE . uCallBackMessage = WMMOUSEMOVE . Mcon = Me. Icon . szTip ="Application Active" & vbNullChar End With ShelLNotifyIcon NIMADD, nid If PortPara = 0 Then MsgBox"Veuillez sélectionner un Port paralèlle" & vbCrLf & "dans l'onglet" & ~ vbCrLf & "Port", vbInformation,"Sélection du Port de dialogue" 'Par défault lptl LPTCommandes = 890 LPTDonnee = 888 SaveSetting"ATS","LPT1","LPT1~DONNEE", 888 SaveSetting"ATS","LPT1","LPT1JETAT", 889 SaveSetting"ATS","LPT1","LPT1COMMANDES", 890 SaveSetting"ATS","LPT2","LPT2DONNEE", 632 SaveSetting"ATS","LPT2","LPT2JETAT", 633 SaveSetting"ATS","LPT2","LPT2COMMANDES", 634 Premierefois = True Option I. Value True Pos-Lec = Val (Labe ! 14. Caption) Vitesse = 0 MediaPlayerl. AutoStart = False Labell. Caption ="Vitesse normale" Exit Sub End Sub Private Sub FormMouseMove (Button As Integer, Shift As Integer, X As Single, Y As Single) Dim Result As Long Dim msg As Long If Me. ScaleMode = vbPixels Then msg = X Else msg = X/Screen. TwipsPerPixelX End If Select Case msg Case WMJUTTONDOWN If Suspendre. Checked = False Then Me. PopupMenu Pause (lO) Suspendre. Checked = True Else Me. PopupMenu Reprise (11) Suspendre. Checked = False End If End Select End Sub Private Sub FormResize () 'If Me. WindowState 1 Then 'If Me. WindowState = 0 And Taille = False Then Me. Top = 765 ' Me. Width = 4725 Me. Height = 4290 'Else Me. Top = 765 ' Me. Width = 7325 Me. Height 4290 'End If 'End If End Sub 'Traitement pour quitter l'application Private Sub Form~Unload(Cancel As Integer) Dim MySettings As Variant, intSettings As Integer Dim check, Cpt, Valeur As Integer Dim reponse As Integer Dim Res As Long Dim P~Sup As Integer If Me. WindowState = 1 Then Me. WindowState = 0 Cpt = 0 Valeur = llf (Passer = True, 2,1) For check = 1 To Delfile. Count-Valeur If Delfile. Item (check). Checked = True Then Cpt = Cpt + 1 Next check If Cpt oO Then reponse = MsgBox (Cpt & "Fichier (s)" & vbCrLf & vbCrLf & "Souhaitez-vous continuer ?", vbYesNo + vbInformation, ~ "Vous allez supprimer") If reponse = vbYes Then For check = 0 To Delfile. Count-I If Delfile. Item (check). Checked = True Then PJSup = InStr (Delfile. Item (check). Caption,"-") DeleteSetting"ATS","File" & Left (Delfile. Item (check). Caption, P~Sup - 1) DeleteSetting"ATS","Setting","File" & Left (Delfile. Item (check). Caption, PSup-1) End If Next check End If End If MySettings = GetAllSettings (appname : ="ATS", Section : ="Setting") SaveSetting"ATS", "Setting", "Left", Me. Left SaveSetting"ATS","Setting","Top", Me. Top SaveSetting"ATS", "Setting", "Width", Me. Width SaveSetting"ATS","Setting","Height", Me. Height SaveSetting"ATS","File" & Saure-index & 'Wedia","Debut", DebutF SaveSetting"ATS","File" & Saure-index & "\Media","PosR", Pos Lec SaveSetting"ATS","File" & Sauve~Index & "\Media","Vitesse", HScrolll. Value 'Sortie de l'application Timerl. Enabled = False If Not WApp Is Nothing Then Set WApp = Nothing End If End If RechercheWord (1) reponse = MsgBox ("Sauvegardez votre document Word" & ~ reponse = MsgBox ("Sauvegardez votre document Word" & vbCrLf & "et fermer l'application Word", vbOKOnly + vbInformation, Fermeture de l'Application ATS") While Recherche = True Recherche~Word(1) Wend If Premierefois = False Then Cherche~Registre~Word 'Suppression de l'icone dans la barre de tache Shell~NotifyIcon NIMDELETE, nid Res = SetWindowPos (Reglette. hWnd, -2,0, 0,0, 0, flags) Reglette. Hide Unload Reglette End Sub Private Sub HScrolllChange () 'Reglage de la vitesse d'écoute Vitesse = Format (HScrolll. Value) Select Case Vitesse Case-1 MediaPlayerl. Rate = 0.95 Labell. Caption ="Vitesse lente" Case-2 MediaPlayerl. Rate = 0.9 Labell. Caption ="Vitesse lente" Case-3 MediaPlayerl. Rate = 0.85 Labell. Caption ="Vitesse lente" Case-4 MediaPlayerl. Rate = 0.8 Labels. Caption ="Vitesse lente" Case-5 MediaPlayerl. Rate = 0.75 Labell. Caption ="Vitesse lente" Case 0 MediaPlayerl. Rate = 1 Label1. Caption ="Vitesse normale" Case 1 MediaPlayerl. Rate = 1.2 Label1. Caption ="Vitesse rapide" Case 2 MediaPlayerl. Rate = 1.4 Labell. Caption ="Vitesse rapide" Case 3 MediaPlayerl. Rate = 1.6 Labell. Caption ="Vitesse rapide" Case 4 MediaPlayerl. Rate = 1.8 Label1. Caption ="Vitesse rapide" End Select End Sub Private Sub LPTlClick () LPT1. Checked = True LPT2. Checked = False Port~Para = 1 LPTCommandes = 890 LPTDonnee = 888 SaveSetting "ATS", "Setting", "LPT1", "1" On Error GoTo fin DeleteSetting"ATS","Setting","LPT2" fin : End Sub Private Sub LPT2~Click() LPTl. Checked = False LPT2. Checked = True Port~Para = 2 LPT~Commandes = 634 LPTDonnee = 632 SaveSetting"ATS","Setting","LPT2","2" On Error GoTo fin DeIeteSetting"ATS","Setting","LPT1" fin : End Sub Private Sub MediaPlayer1~PlayStateChange (ByVal OldState As Long, ByVal NewState As Long) 'Lecture avec recule de pos~lec If OldState ="0"Then If MediaPlayerl. CurrentPosition > PosLec Then DebutF = MediaPlayerl. CurrentPosition-PosLec MediaPlayerl. CurrentPosition = DebutF End If Else End If End Sub Private Sub Optionl-Clicko Pos~Lec = Val (LabeI14. Caption) Reglette. Combol. Text = Reglette. Combol. List (4) End Sub Private Sub Option2~Click() Pos~Lec = Val (Label 1 6. Caption) Reglette. Combol. Text = Reglette. Combol. List (5) End Sub Private Sub Option3~Click() Pos~Lec = Val (Labell7. Caption) Reglette. Combol. Text = Reglette. Combol. List (6) End Sub Private Sub Option4CIick () Pos~Lec = Val (LabeI18. Caption) Reglette. Combo1. Text = Reglette. Combol. List (7) End Sub Private Sub Option5~Click() PosLec = Val (LabeI15. Caption) Reglette. Combol. Text = Reglette. Combol. List (8) End Sub Private Sub Option6CIick () Pos~Lec = Val (Option6. ToolTipText) Reglette. Combol. Text = Reglette. Combol. List (O) End Sub Private Sub Option7~Click() Pos~Lec = Val (Option7. ToolTipText) Reglette. Combol. Text = Reglette. Combol. List (l) End Sub Private Sub Option8~Click() Pos-leu = Val (Option8. ToolTipText) Reglette. Combol. Text = Reglette. Combol. List (2) End Sub Private Sub Option9Click () PosLec = Val (Option9. ToolTipText) Reglette. Combol. Text = Reglette. Combol. List (3) End Sub 'Chargemant d'un média Private Sub Ouvrir~Click() Dim v, bl, tiret As Integer Dim Existe As Boolean Dim mess Dim test, pris As String Dim Longueur As Integer If LPT1. Checked = False And LPT2. Checked = False Then MsgBox"Vous n'avez oublié de sélectionné le port apralèlle" Exit Sub End If OpenDialog ATS,"Multimédia mp31*. 1*.mp3#Multimédia wave#*. wav", "Fichiers multimédia","c :" If RET = True Then Premierefois = False Longueur = Compte (rfile) If Passer = True Then Idx = Idx + 1 'Vérifie si existe dans archive Existe = False For v = 1 To Donnee. Count-1 tiret = InStr (Donnee (v). Caption,"-") bl = InStr (Donnee (v). Caption,".") test = RTrim (Mid (Donnee (v). Caption, tiret + 1, bl + 3)) & Chr (O) pris = Right (rfile, Len (rfile)-Longueur) If test = pris Then Recuperation (Donnee (v). Caption) Existe = True mess = MsgBox ("Ce fichier est déjà présent" & vbCrLf & ~ "dans" & vbCrLf & ~ "I'onglet Archive" & vbCrLf & ~ "Veuillez le sélectionner", vbInformation, ~ Existe le trum mess = MsgBox ("Ce fichier est déjà présent" & vbCrLf & dans" & vbCrLf & "i'onglet Archive" & vbCrLf & "VeuiHez ! e sélectionner", vbinformation,"Vérification de fichier") Exit For Exit For End If Next v If Existe = False Then If Idx o 0 Then Load Donnee (Idx) Donnee. Item (Idx). Caption = Idx & "-" & Right (rfile, Len (rfile)-Longueur) SaveSetting"ATS","Setting","File" & Idx, Idx SaveSetting"ATS","File" & Idx & "\Media", Left (rfile, Longueur), Donnee. Item (Idx). Caption SaveSetting"ATS","setting","Lastfile", Donnee. Item (Idx). Caption Deffile (5). Caption = Donnee. Item (Idx). Caption Load Delfile (Idx) Delfile (Idx). Caption = Donnee. Item (Idx). Caption Recuperation (Deffile (5). Caption) Screen. MousePointer = vbHourglass MediaPlayerl. filename = File-Media Debut~F = 0 FinF = MediaPlayerl. Duration TF = CSng (MediaPlayerl. Duration)/24/60/60 TIT = CSng (MediaPlayerl. CurrentPosition) /24/60/60 Reglette. HScrolll. Max = MediaPlayerl. Duration Reglette. HScroll1. Value = MediaPlayerl. CurrentPosition Reglette. Commandl. Caption = Format (TF, "hh : mm : ss") & "/" & Format (TTT,"hh : mm : ss") SaveSetting"ATS","File" & Idx & "\Media","Debut", DebutF SaveSetting"ATS","File" & Idx & "\Media","Fin", FinF SaveSetting"ATS","File" & Idx & "\Media","PosR", Pos~Lec SaveSetting"ATS","File" & Idx & "\Media","Vitesse","0" Section ="File" & Idx Idx = Idx + 1 Deffile (5). Visible = True Recherche-Word (1) If Recherche = False Then Document~Nouveau Timerl. Enabled = True End If End If Screen. MousePointer = vbDefault End Sub Private Sub Quitter~Click() Unload Me End Sub Private Sub ReprendreC ! ick () Timerl. Enabled = True End Sub Private Sub SuspendreCIick () Timerl. Enabled = False End Sub Private Sub Textl~KeyUp (KeyCode As Integer, Shift As Integer) 'Textl. Text = Val (Textl. Text) End Sub Private Sub Timerl-Timero 'Traitement de l'interface par lecture d'un mot entre 0 et 10 pour la fonction Arret ~ entre 100 et 110 pour la fonction Recule et 255 pour la fonction lecture DoEvents Call CapturePedale Reglette. HScrolll. Value = MediaPlayerl. CurrentPosition Select Case Val (Textl. Text) 'Action de lecture Case 255 'Lecture normale Reglette. Command2. Visible = False Sp (6). Visible = False RA (6). Visible = False Lcte (6). Visible = True MediaPlayerl. Play If Int (Debut~F) > 0 Then ~ ATS. Caption ="ATS" & Int (Int (MediaPlayerl. CurrentPosition)/Int (MediaPlayerl. Duration) * 100) & "%" If MediaPlayerl. CurrentPosition = Fin~F Then MediaPlayerl. Stop ATS. Caption ="ATS Terminé" Lcte (6). Visible = False Tr (6). Visible = True 'Me. Show Timerl. Enabled = False End If Case 85 To 115'Valeur du mot lu 'Action de reculer RA (6). Visible = True Lcte (6). Visible = False Sp (6). Visible = False DebutF = MediaPlayerl. CurrentPosition If Int(Debut~F) MediaPlayerl. CurrentPosition = 0 Deubt~F = MediaPlayerl. CurrentPosition Else MediaPlayerl. CurrentPosition = MediaPlayerl. CurrentPosition-1 Debut~F = MediaPlayerl. CurrentPosition End If SaveSetting"ATS", Section,"Debut", Debut-F SaveSetting"ATS", Section,"PosR", PosLec SaveSetting"ATS", Section,"Vitesse", HScrolll. Value Reglette. Command2. Visible = False Case 0 To 15'Valeur du mot lu 'Action d'arrêt RA (6). Visible = False Lcte (6). Visible = False Sp (6). Visible = True ATS. Caption ="Stop" MediaPlayerl. Stop SaveSetting"ATS", Section,"Debut", DebutF SaveSetting"ATS", Section,"PosR", PosLec SaveSetting"ATS", Section,"Vitesse", HScroUl. Value If SauveArret > Debut~F Then Reglette. Command2. Visible = True Else Sauve~Arret=Debut~F End If Case Else'Valeur non comprise dans les intervales precedant ATS. Caption ="Erreur" End Select 'Remise en route du Timer après traitement de la pedale Timerl. Enabled = True End Sub Lecture du signal issu de l'interface Public Sub Capture-Pedaleo Static Acquisition As Integer 'Arrêt du Timer Timerl. Enabled = False WritePort LPTCommandes, 32'BitCtrl WritePort LPT~Commandes, 36'Init WritePort LPT~Commandes, 37'Strobe Acquisition = 0 'Lecture du mot sur l'interface While Acquisition Acquisition = Acquisition + 1 Textl. Text = ReadPort (LPTDonnee) 'Valeur obtenu en decimal de 0 à 255 Wend WritePort LPT~Commandes, 36'Init End Sub Public Sub Document-Encourso Set WApp = CreateObject ("Word. Application") WApp. Visible = True WApp. Documents. Open filename : =DefautFile End Sub Public Sub Document-Nouveauo Set WApp = CreateObject ("Word. Application") WApp. Visible = True WApp. Documents. Add End Sub Public Function Compte (BackSlash As String) As Integer Dim c As Integer For c = 1 To Len (BackSlash)-1 If StrComp ("\", Mid (BackSlash, c, 1), 0) = 0 Then Compte = c End If Next c End Function Public Sub Recherche-Word (Howlong As Date) Dim TempTime As Date Dim hwCurr As Long Dim intLen As Long Dim strTitle As String Dim trouve As String Recherche = False IsTask = WSVISIBLE Or WSBORDER TempTime = DateAdd ("s", Howlong, Now) While TempTime > Now hwCurr = GetWindow (Me. hWnd, GWHWNDFIRST) Do While hwCurr DoEvents If hwCurr o Me. hWnd And TaskWindow (hwCurr) Then intLen = GetWindowTextLength(hwCurr) + 1 strTitle = Space$ (intLen) intLen = GetWindowText (hwCurr, strTitle, intLen) If intLen > 0 Then trouve = strTitle If StrComp ("Microsoft Word-", Left (strTitle, 16)) = 0 Then Fichier J : = Trim (Right (strTitle, Len (strTitle)-17)) Fichiert = Left (Fichiert, Len (Fichiert)-1) Recherche = True Exit Do End If End If End If hwCurr = GetWindow (hwCurr, GWHWNDNEXT) Loop Wend End Sub Function TaskWindow (hwCurr As Long) As Long Dim IngStyle As Long IngStyle = GetWindowLong (hwCurr, GWLSTYLE) If (IngStyle And IsTask) = IsTask Then TaskWindow = True End Function Public Function Recuperation (Blanc As String) 'Récupération des données d'un fichier selectionné Dim MySet As Variant, intSet As Integer Dim Chemin As String Dim Premier As Variant Premier = InStr (Blanc,"-") Saure-index = Left (Blanc, Premier-1) MySet = GetAllSettings ("ATS","File" & Saure-index & "\Media") For intSet = LBound (MySet, 1) To UBound (MySet, 1) Recup = MySet (intSet, 0) Select Case Recup Case"Debut" DebucF = MySet (intSet, 1) Case"Fin" FinF=MySet (intSet, 1) Case"Vitesse" Vitesse = MySet (intSet, 1) HScrolll. Value = Vitesse Case"PosR" Pos~Lec = MySet (intSet, 1) Select Case PosLec Case 1 Option6. Value = True Case 2 Option ?. Value = True Case 3 Option8. Value = True Case 4 Option9. Value = True Case 5 Option 1. Value = True Case 10 Option2. Value = True Case 15 Option3. Value = True Case 20 Option4. Value = True Case 25 Option5. Value = True End Select Case Else Chemin = MySet (intSet, 0) File~Media=MySet (intSet, 1) File~Media = Chemin & Right (File~Media, Len (File~Media) - Premier) End Select Next intSet MySet = GetAllSettings ("ATS","File" & Sauve~Index & "\Texte") On Error GoTo fin 'Fichier word For intSet = LBound (MySet, 1) To UBound (MySet, 1) DefautFile = MySet (intSet, 0) & MySet (intSet, 1) Next intSet Exit Function fin : End Function Recherche de l'application pour la saisie du texte Public Sub Cherche~RegistreWord () Dim Chaine~Binaire As String Dim Resultat As Long Dim TailleBuffer As Long Dim Ident As Long Dim ByteArray() As Byte Dim i As Integer Dim Stoc As String Dim s, f As Integer Dim Longueur As Integer Resultat = RegCreateKey (HKEYCURRENTUSER,"\software\microsoft\office\8. 0\word\data", Ident) If Resultat 0 Then Exit Sub End If Resultat = RegQueryValueEx (Ident, "Settings", 0 & , 1, 0 & , TailleBuffer) If TailleBuffer Exit Sub End If ChaineBinaire = String (TailleBuffer + 1,"") Resultat = RegQueryValueEx (Ident,"Settings", 0 & , 1, ByVal Chaine-Binaire, TailleBuffer) TailleBuffer = Len (Chaine~Binaire) ReDim ByteArray (TailleBuffer) For i = 1 To TailleBuffer ByteArray (i) = Asc (Mid$ (ChaineBinaire, i, 1)) If StrComp (Chr$ (ByteArray (i))," :", 0) = 0 Then s = 2 * ByteArray (i-4) For f= i-2 To (i + s-1) Step 2 ByteArray (f) = Asc (Mid$ (Chaine~Binaire, f, 1)) Stoc = Stoc & Chr$ (ByteArray (f)) Next f Longueur = Compte (Left (Stoc, Len (Stoc)-1)) SaveSetting"ATS","File" & Saure-index & "\Texte", Left (Stoc, Longueur), Right (Stoc, Len (Stoc)- Longueur) Exit For End If DoEvents Next i End Sub Vérification de la présence du document Public Function FileExits (Fic As String) As Integer Dim X As Integer X = FreeFile On Error Resume Next Open Fie For Input Lock Read As X If Err = 0 Then FileExits =-1 Else FileExits = Err End If Close X End Function Revendications : 1) Dispositif pour commander avec un pied la lecture d'un fichier numérisé, sur un ordinateur, caractérisé en ce qu'il comporte une platine (1) avec, à sa droite et à sa gauche, deux protections mécaniques (3) protégeant et activant, chacune et indépendamment, un interrupteur électrique (4) lorsque l'opérateur exerce une pression avec son pied, sur l'une ou l'autre des protections mécaniques (3). 2) Dispositif selon la revendication 1 caractérisé en ce que les protections mécaniques (3) sont deux demi-coquille articulées (3) ou une membrane souple. 3) Dispositif selon la revendication 1 ou la revendication 2 caractérisé en ce que les protections mécaniques (3) sont maintenues en position haute par un ressort (2). 4) Dispositif selon une quelconque des revendications précédente caractérisé en ce que les interrupteurs (4) sont en position ouverte au repos et en position fermé lorsque l'on exerce une pression sur la protection mécanique. 5) Dispositif selon une quelconque des revendications précédente caractérisé en ce qu'à l'intérieur de la platine, il est intégré une interface électronique (6) de commande générant les signaux"lecture","arrêt", "retour arrière"par pression du pied de l'utilisateur sur la membrane souple protégeant les interrupteurs électriques (4), ou sur les protections mécaniques (3). 6) Dispositif selon la revendications 5 caractérisé en ce qu'un programme d'instructions informatiques décode les signaux issus de l'interface (6) 7) Dispositif selon la revendication 6 caractérisé en ce qu'un programme d'instructions informatiques permet le ralentissement ou l'accélération du flux de données numérisées. 8) Dispositif selon la revendication 6 ou 7 caractérisé en ce qu'un programme d'instructions informatiques permet, lorsque la commande"ar- rêt"est activée, la mémorisation du dernier point de lecture et l'indexation de la dernière valeur temporelle. 9) Dispositif selon la revendication 6, 7 ou 8 caractérisé en ce qu'un programme d'instructions informatiques permet, lorsque la commande "retour arrière"est activée : le retour arrière, à partir du dernier point de lecture indexé, jusqu'au premier point de lecture du fichier de donné, par une pression conti- nue sur sur la protection mécanique (3), le retour arrière par saut temporel fixé par l'utilisateur, par une pression discontinue sur la protection mécanique (3).