Bonjour,
LE PROBLEME.
Je souhaiterai créer un programme capable d’acquérir des commandes vocales sous "WindowsForms en C#" et d'envoyer le "string" obtenu de 20 caractères maximum pour les communiquer je ne sais encore comment, à un programme Labview qui ne sait lire apparemment que dans les registres et les fichiers textes de Windows (je suis débutant).
LA DIFFICULTE.
Bien que tout fonctionne à merveille, coté reconnaissance vocale (avec using System.Speech.Recognition; ) ,
A l'heure actuelle, je suis incapable de lire, avec Labview, le fichier texte créé par mon process WindowsForms (qui tourne en permanence),
car mon process Labview me dit toujours que le fichier est pris par mon process WindowsForms.
MA SOLUTION en C# (qui ne parche pas).
j'ai pourtant déclaré "sharable" mon fichier Windows Form, comme suit :
private const string pathWrite = @"c:\temp\VoixWrite.txt";
FileStream fsWrite = new FileStream(pathWrite, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite);
etc.
//========================
// Je précise que, quand le process WindowsForms (Je donnerai le code plus tard quand j'aurai résolu ce problème) a compris un mot, il le met dans "e.Result.Text"
//========================
// Le process WindowsForm exploite ce mot 'vocal' transformé en string dans "e.Result.Text" de la façon suivante :
// d'abord on attend que Labview ait exploité le mot précédent écrit dans le fichier "c:\temp\VoixWrite.txt"
while (File.Exists(pathWrite))
{
//On attend, tant que le fichier n'est pas détruit par Labview;
}
// Quand le fichier a été exploité par Labview, Labview le détruit, on sort donc de la boucle
using (StreamWriter sw = File.CreateText(pathWrite))
{
sw.WriteLine(e.Result.Text);
sw.Close();
}
=========================================
C'est l'apparition du fichier créé et écrit par WindowsForms et lu puis détruit par Labview qui assure la sécurité de la transaction.
MAIS VOILA.
Mon process Labview est incapable d'ouvrir et encore moins de détruire le fichier "c:\temp\VoixWrite.txt" créé et mis à jour par le process WindowsForms;
Au secours Luc, la force n'est pas avec moi :O
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Possibilités Numéro 2 et 3, je n'ai pas essayé le passage par variable d'environnement ou par les Registres Windows (et autres que je ne connais pas...) . Mais je suppose que je rencontrerai le même problème de sécurité.
MA CONTRIBUTION.
Une commande Vocale très utile dans le cas ou le clavier et la souris - non hookables, sont utilisés/capturés/piegés par un jeu utilisant directInput (par exemple) ou programmé en LINUX (je crois).
Afin de pouvoir utiliser d'autres applications réalisées par n'importe quels programmeurs sachant manipuler des fichiers et capables de lire et d'interpretter les commandes vocales transcrites dans le fichier d'échange (ici C:\temp\VoixWrite.txt).
Je mettrai un source basique sous WindowsForms en C# (donc facile à adapter) , en ligne sur ce site, dès que j'aurai un process WindowsForm qui tourne.
Merci d'avance.
Partager