IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

WinDev Discussion :

utilisation du champ Camera en Windev24


Sujet :

WinDev

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    décembre 2009
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : décembre 2009
    Messages : 79
    Points : 0
    Points
    0
    Par défaut utilisation du champ Camera en Windev24
    salut à tous
    j'ai un sérieux problème avec l'utilisation du champs camera dans mon projet pour capturer directement les photos des agents en utilisant une WebCam.
    en suivant très bien vos conseils d'utiliser toujours le moteur de recherche de Windev, je l'ai fait et tenter tous les codes sur l'utilisation de ce champs mais je ne récois que les erreurs que je n'arrive pas à comprendre.
    voici les cas:
    1. j'ai utilisé ce code;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ResSauvegarde est un booléen
    ResSauvegarde = VidéoCapture(Vidéo1, "C:\Temp\Imag.BMP", viCaptureImage)
    SI ResSauvegarde = Vrai ALORS
    	Info("Image correctement sauvegardée")
    SINON
    	Erreur(ErreurInfo())
    FIN
    voici l'erreur
    Erreur à la ligne 2 du traitement Clic sur BTN_SansNom2.
    Vous avez appelé la fonction VidéoCapture.
    Erreur lors de la désignation du fichier de capture :
    'C:\Temp\Imag.BMP' est un nom de fichier invalide
    ou
    le périphérique est en train de réaliser une sauvegarde (vidéo ou image)

    Détail de l'erreur système :

    Erreur non spécifiée
    (2147500037)

    2.j'ai tenté aussi;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    SI PAS CaméraCapture(Vidéo1,"C:\Temp\MaVideo.bmp", viCaptureImage) ALORS
    	Erreur(ErreurInfo())
    	RETOUR
    FIN
     
    // Récupération du dernier répertoire utilisé
    SI gsRepDernierCapture~="" ALORS
    	gsRepDernierCapture = fRepEnCours()
    FIN
     
    // Renomme le fichier AVI
    sNomFichier est une chaîne = fSélecteur(gsRepDernierCapture, "Enregistrer sous .....", "Image (*.bmp)"+TAB+"*.bmp"+RC+"Tous fichiers (*.*)"+TAB+"*.*", "bmp", fselCrée+fselExiste)
    SI sNomFichier~="" ALORS
    	// Suppression du fichier temporaire
    	fSupprime(ComplèteRep(fRepExe())+"C:\Temp\MaVideo.bmp")
    SINON
    	// Renommage et déplacement du fichier généré
    	SI sNomFichier~=ComplèteRep(fRepExe())+"C:\Temp\MaVideo.bmp" ALORS
    		// Le fichier est déjà le bon
    	SINON
    		// Si un fichier du même nom que le fichier destination existe, on le supprime
    		SI fFichierExiste(sNomFichier) ALORS fSupprime(sNomFichier)
    		// On renomme le fichier temporaire dans le nom sélectionné
    		fRenomme(ComplèteRep(fRepExe())+"C:\Temp\MaVideo.bmp",sNomFichier)	
    	FIN
     
    	// Mémorisation du répertoire
    	gsRepDernierCapture = fExtraitChemin(sNomFichier,fDisque+fRépertoire)
    	IMG_SansNom1=sNomFichier
    	SAI_cptr=SAI_cptr+1
    	SELON SAI_cptr
    		CAS=1
    			IMG_Image2=sNomFichier
    		CAS=2
    			IMG_Image3=sNomFichier
    		CAS=3
    			IMG_Image4=sNomFichier
    		CAS=4
    			IMG_Image5=sNomFichier
    		AUTRE CAS
    			Erreur("Il ne faut capturer que 4 image")
    	FIN
     
    FIN
    voici l'erreur:
    Cette fonction n'est disponible que sur un champ avec l'option Vidéo for Windows activée.

    3. Cas, j'ai fais un pas en arrière en utilisation l'exemple fourni par Windev20, en utilisation les même champs, les mêmes codes,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SI PAS VidéoCapture(Vidéo1,ComplèteRep(fRepExe())+"Temp.bmp",viCaptureImage) ALORS
    		Erreur(ErreurInfo())
    		RETOUR
    	FIN
    si l'installable n'est pas crée, le fichier temp. se crée dans le le dossier exe. mais une fois l'application installé, un autre message apparait disant : Erreur de l'API Vidéo lors de l'appel à la fonction CapFileSaveDIB (info supplémentaire: Impossible d'ouvrir C:\Program File\GNPA_NV\Tem.bmp.
    Si le problème c'est au niveau du chemin de sauvegarde de l'image, il n'y a pas moyen de ne pas stocker l'image dans un dossier Temp. mais de l'afficher directement sur un champs Image comme phot?

  2. #2
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2013
    Messages
    3 804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : décembre 2013
    Messages : 3 804
    Points : 8 798
    Points
    8 798
    Par défaut
    Tu as parfois ce message :
    Erreur lors de la désignation du fichier de capture :
    'C:\Temp\Imag.BMP' est un nom de fichier invalide
    Le message est clair, il faut creuser cette piste.
    Le message te dit que ton programme essaie d'écrire dans le répertoire c:\temp\, et il n'y arrive pas.

    - Est-ce que tu as un répertoire c:\temp\ sur ton PC ?
    - Si tu essaies de copier un fichier dans ce répertoire via l'explorateur Windows, est-ce que tu peux le faire ?

    Tu as trouvé ce code sur Internet. Il y a quelques années, c'était courant d'avoir un répertoire c:\temp\ sur son PC. Avec les versions plus récentes de Windows, il y a des restrictions nouvelles (sécurité ... ) et c'est certainement la raison de ton problème.

    Avec l'explorateur Windows, teste dans quel répertoire tu as le droit d'écrire, et demande à ton programme d'écrire dans ce répertoire-là.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    décembre 2009
    Messages
    79
    Détails du profil
    Informations forums :
    Inscription : décembre 2009
    Messages : 79
    Points : 0
    Points
    0
    Par défaut repon
    comme je viens de vous expliquer, le dossier Temp. est vraiment compliqué pour moi, car si je suis en mode développement, c'est à dire sans créer l'exécutable, la capture passe avec un dossier Temp. qui est crée au préalable dans le fichier Exe du projet. amis si cette même application est installée, il n'accede plus.
    dans dans d'autre répertoire de la machine, je peux facilement axcedé mais il réfuse le chemin.

  4. #4
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    décembre 2013
    Messages
    3 804
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : décembre 2013
    Messages : 3 804
    Points : 8 798
    Points
    8 798
    Par défaut
    La fonction fFichierTemp() est faite pour ça. Elle trouve un répertoire ""Temp"" où on a le droit d'écrire.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  5. #5
    Expert confirmé
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    juin 2017
    Messages
    2 434
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : juin 2017
    Messages : 2 434
    Points : 4 459
    Points
    4 459
    Par défaut
    Bonjour,
    Dans ton message d'erreur tu as :
    le périphérique est en train de réaliser une sauvegarde (vidéo ou image)
    L'explication est claire non ?
    Tu essayes d'accéder à un fichier qui est entrain d'être utilisé, donc auquel tu ne peux pas accéder
    Une solution est d'incrémenter le nom du fichier à chaque enregistrement via ChaineIncrémente sur une variable globale à la fenêtre par exemple.
    Le code ressemble alors à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ....
    gsaCapture=ChaineIncrémente(gsaCapture)
    saCheminCapture=fConstruitChemin(RepCapture,gsaCapture,"BMP")
    nRes=VidéoCapture(Vidéo1,gsaCapture....
    Note
    Afin d'assurer une continuité du suivi du nom des sauvegardes (risque d'écrasement), il est conseillé d'utiliser une variable persistante cf SauveParamètre
    Il y a peut être plus simple, mais ça tourne

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/09/2006, 15h13
  2. Utiliser un champ de saisie
    Par Poutchjay dans le forum wxPython
    Réponses: 6
    Dernier message: 18/07/2006, 13h30
  3. [MySQL] utilisation de champs date et heure
    Par ultracoxy dans le forum JDBC
    Réponses: 10
    Dernier message: 29/06/2006, 13h49
  4. Réponses: 4
    Dernier message: 08/05/2006, 20h12
  5. utiliser les champs d'un TQuery
    Par smail21 dans le forum Bases de données
    Réponses: 3
    Dernier message: 03/10/2005, 17h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo