|
[WD mobile 17] Image par Socket |
Iniciado por NicoSab, abr., 23 2014 3:48 PM - 4 respostas |
| |
| | | |
|
| |
Publicado em abril, 23 2014 - 3:48 PM |
Bonjour à tous,
Avant d'écrire se pots, j'ai bien entendu cherché de mon coté et écumé les forums à la recherche de solutions. Pour envoyer une image par socket certains disent d'utiliser , fChargeTexte, fChargeBuffer, de la crypter...et autres. Malheureusement aucune de ses solutions ne fonctionne. Je me suis penché sur cette idée : http://forum.pcsoft.fr/fr-FR/pcsoft.fr.windev/101547-wd12-socket-donnees/read.awp Mon programme lance l'API de windows pour la prise de photo sur un terminal mobile. Après que le photo soit prise je souhaite la transferer sur le serveur via les sockets. Ce qui me donne :
chImage est une chaîne idfile est un entier BuffFile est un Buffer
chErreur est une chaîne
CameraDiagnostique.sNomPhoto = SansEspace(gstrInfoVhl:ImmatCarteGrise)+"_"+DateSys()+"_"+HeureSys() chImage = PhotoPlaque(CameraDiagnostique,chErreur)
SI chErreur<>"" ALORS Erreur(chErreur) RETOUR SINON idfile = fOuvre(chImage) SI idfile <> -1 ALORS Info(idfile)
TANTQUE PAS fPositionne(idfile, 0, fpCourant) <> fpFin Info("3 -"+fPositionne(idfile, 0, fpCourant)) BuffFile = fLit(idfile, 100) EnvoiMessage(cstPHOTO,gstrInfoVhl:NumDossier+TAB+BuffFile[[ A Taille(BuffFile)]],0) FIN fFerme(idfile) SINON Info("erreur ouverture Photo") FIN
EnvoiMessage(cstPHOTO,"FIN",0)
cimgVisualisation = chImage geIndice = 1
FEN_PhotoDiagnostique..Plan = 2 FIN
CAS EXCEPTION: ExceptionActive() Erreur(ExceptionInfo(errMessage))
Malheureusement je ne passe jamais dans le TANTQUE PAS. Il ne doit pas aimer ouvrir l'image même si il l'ouvre bien. Mes envois de socket sont géré par la procédure "EnvoiMessage" et son bien lues. (DEBUT et FIN) Auriez-vous une idée ? |
| |
| |
| | | |
|
| | |
| |
Membro registado 946 mensagems Popularité : +102 (110 votes) |
|
Publicado em abril, 23 2014 - 4:08 PM |
Bonjour avant de transferer l'image par socket je l'encode en base64 (inconvéniant +30% en taille) |
| |
| |
| | | |
|
| | |
| |
Publicado em abril, 23 2014 - 4:52 PM |
Bonjour,
Merci pour ta réponse, je vais essayer ta solution et je te tiens au courant. Sinon tu utilises la même méthode que moi ?
Cordialement, NicoSab |
| |
| |
| | | |
|
| | |
| |
Publicado em abril, 24 2014 - 10:12 AM |
Bonjour,
j'ai utilisé la fonction Crypte avec encodeBASE64 mais mon image n'est toujours pas reçu correctement.
Coté client mobile :
chImage est une chaîne bufImageCrypteest un Buffer CrypteImage est une chaîne idfile est un entier BuffFile est un Buffer
chErreur est une chaîne
CameraDiagnostique.sNomPhoto = SansEspace(gstrInfoVhl:ImmatCarteGrise)+"_"+DateSys()+"_"+HeureSys() chImage = PhotoPlaque(CameraDiagnostique,chErreur)
SI chErreur<>"" ALORS Erreur(chErreur) RETOUR SINON
cimgVisualisation = chImage geIndice = 1
EnvoiMessage(cstPHOTO,"DEBUT"+TAB+gstrInfoVhl:NumDossier+TAB+chImage,0)
Multitâche(100)
BuffFile = fChargeTexte(chImage) BuffFile = Crypte(BuffFile,"",encodeBASE64) EnvoiMessage(cstPHOTO,BuffFile,0)
Multitâche(100)
EnvoiMessage(cstPHOTO,"FIN",0)
FEN_PhotoDiagnostique..Plan = 2 FIN
CAS EXCEPTION: ExceptionActive() Erreur(ExceptionInfo(errMessage))
Puis coté serveur :
CAS gchPHOTO
InfoJournalEvenements("Ajout PHOTO Dossier : "+ExtraitChaîne(SansEspace(sMessage),7)+" - "+ExtraitChaîne(SansEspace(sMessage),8)+" - "+ExtraitChaîne(SansEspace(sMessage),9))
SI ExtraitChaîne(SansEspace(sMessage),7) = "DEBUT" ALORS InfoJournalEvenements("DEBUT") sCheminPhotoPoste = ComplèteRep("D:\WINSUR\PHOTO\"+ExtraitChaîne(SansEspace(sMessage),8)) sCheminPhotoTSP = ExtraitChaîne(SansEspace(sMessage),9) bufBufferPhoto = "vide" NomPhotoTSP = ExtraitChaîne(sCheminPhotoTSP,rangDernier,"\") InfoJournalEvenements(sCheminPhotoPoste) sCheminPhotoTSP = sCheminPhotoPoste+["\"]+NomPhotoTSP InfoJournalEvenements(NomPhotoTSP) InfoJournalEvenements(sCheminPhotoTSP)
SI PAS fRépertoireExiste(sCheminPhotoPoste) ALORS fRepCrée(sCheminPhotoPoste) FIN SINON
SI ExtraitChaîne(SansEspace(sMessage),7) <> "FIN" ALORS
bufBufferPhoto = ExtraitChaîne(SansEspace(sMessage),7) bufBufferPhoto = Décrypte(bufBufferPhoto,"",encodeBASE64) SIfSauveBuffer(sCheminPhotoPoste,bufBufferPhoto) ALORS InfoJournalEvenements("Echec sauveBuffer") SINON InfoJournalEvenements("Buff "+bufBufferPhoto) FIN
SINON
InfoJournalEvenements("FIN : "+ComplèteRep(sCheminPhotoPoste+NomPhotoTSP)+" - ") FIN FIN
Au debut ma chaine est du style : YMBhKh7Kirg+lUP+SnQZSrrvWLezJ4.... et après fSauveBuffer : ÿ.
Je vous avoue que là je suis perdu... En tout cas merci pour votre attention et vos réponses. |
| |
| |
| | | |
|
| | |
| |
Publicado em julho, 30 2014 - 10:38 PM |
Bonjour NicoSab,
Comme toi, j'ai tourné pendant près de 4 mois pour l'envoie d'images depuis un terminal mobile. J'ai pas essayé avec les socket, mais j'ai fait de tout .... envoi en http Post , cryptage , compression , codage etc. Les solutions n'étaient jamais fiables ... car l'échec ou la reussite variait selon la memoire du telephone de test.
Ma solution actuelle est : L'envoi par FTP . L'avantage est aussi la possibilité de créer des repertoires de destination. La communication est directe et l'envoi est sans echec tant que tu as internet. Meme les Images HD sont envoyées sans pb. mais la durée de transfert en prend un coup. Cette solution, je l'ai pensée sur un coup de tête dans un état de desespoir.
En esperant être utile pour toi. Cdlt. |
| |
| |
| | | |
|
| | | | |
| | |
|