Page 1 sur 1
[..] Lecture de code barre
Posté : mer. 17 mars 2010 10:20
par ed3337100
Bonjour,
Je viens de créer une interface qui permet à mes utilisateurs d'enregistrer des produits dans un fichier csv en utilisant des codes barres.
Mon interface possède une input (avec plusieurs lignes possible)
J'ai un bouton "enregistrer" qui lorsque je clique dessus, vérifie les numéros et les enregistre dans un fichier CSV avec comme séparateur de champs un ";".
Mon problème est qu'avec plusieurs lecteurs de code barre, si je lis un code barre avec un chiffre en doublon (ex : 63977), le deuxième chiffre identique accolé disparait dans mon interface. Lorsque j'enregistre l'info, bien sur, mon fichier CSV n'a pas la bonne valeur.
Avez-vous une idée ?
Dernier point, existe t'il une BDD Autoit que je pourrai utiliser au lieu de sauvegarder dans un fichier CSV....
MErci.
Edouard
PS : je joins le code, si cela peut vous aider :
► Afficher le texte
Code : Tout sélectionner
;Include
#Include <Array.au3>
#include <Constants.au3>
#Include <Date.au3>
#include <File.au3>
#include-once
;Variables
$date = @mday&"-"&@mon&"-"&@year
global $erreur = 0
;Test la présence du dossier de sauvegarde des fichiers d'export
if not FileExists("c:\MS1") then DirCreate("c:\MS1")
if not FileExists("c:\MS1\archive") then DirCreate("c:\MS1\archive")
;Menu
$FormPhase1 = GUICreate("", 590,525,-1, -1,BitOR($WS_POPUP,$WS_BORDER))
GUISetBkColor(0xffffff,$FormPhase1)
GUICtrlCreateLabel("Caissons MS1 :",20,200,200)
GUICtrlSetFont(-1,15,400)
GUICtrlCreateLabel("Num Caisson :",59 , 232,100)
GUICtrlCreateLabel("Nomad Number :",47, 245,100)
$tableauCaisson = GUICtrlCreateInput("",130,230,120,35,bitor($ES_MULTILINE,$ES_WANTRETURN))
$SaveCaisson = GUICtrlCreateButton(" Enregistrer ",150,335)
$exit = GUICtrlCreateButton("Exit",10,495,100)
;Archivage des panneaux scannés
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Select
Case $nMsg = $GUI_EVENT_CLOSE
Exit
case $nMsg = $SaveCaisson
_saveCaisson()
case $nMsg = $exit
Exit
EndSelect
WEnd
;Début des fonctions
;-------------------------------------------------------------------------
func _eraseTableausaisie($tableau)
GUICtrlSetData($tableau,"")
EndFunc
;-------------------------------------------------------------------------
;Enregistrement des caissons
Func _saveCaisson()
;$erreur = 0
$heures = @hour&":"&@min&":"&@SEC
global $arrayCaisson
$file = "CaissonsMS1.csv"
$path = "C:\MS1\"
;Mise en forme des données
$tabl = StringSplit(guictrlread($tableauCaisson),@LF)
for $q = 1 to $tabl[0] step 1
$tabl[$q] = StringReplace($tabl[$q],@CR,"")
Next
;Lecture du fichier texte
if not Fileexists($path&$file) then
FileWriteLine($path&$file,$date&"-"&$heures&";"&$tabl[1]&";"&$tabl[2]&";")
SplashTextOn("Enregistrement","Fin de l'enregistrement",200,30)
sleep(1000)
SplashOff()
_eraseTableausaisie($tableauCaisson)
Else
_FileReadToArray($path&$file,$arrayCaisson)
;if $erreur = 0 Then
FileWriteLine($path&$file,$date&"-"&$heures&";"&$tabl[1]&";"&$tabl[2]&";")
SplashTextOn("Enregistrement","Fin de l'enregistrement",200,30)
sleep(1000)
SplashOff()
_eraseTableausaisie($tableauCaisson)
;EndIf
EndIf
EndFunc
Re: Lecture de code barre
Posté : mer. 17 mars 2010 13:50
par Yogui
Si je comprend bien avec un certain type de lecteur ça fonctionne ?
J'ai tester avec le mien (ancien modèle que j'utilise pour des tests) je n'ai pas eu le problème.
Question base de donnée j'utilise des base mysql par habitude mais il me semble qu'un tuto est disponible dans la section Tutoriels
Re: Lecture de code barre
Posté : mer. 17 mars 2010 14:02
par ed3337100
Oui, cela fonctionne avec un vieux lecteur code barre filaire. Par contre avec un sans file, cela ne va pas. Surtout, que cela va bien fonctionner 6 fois sur 10....
Pour tester d'ou venait le problème, j'ai ouvert notepad, et lu mes codes barres. Toutes les lectures se sont bien passées....aucun loupé. Par contre quand je test dans ma GUI......cela fonctionne moins bien.
Pour la BDD, il n'en existe pas une propriétaire dédié à Autoit ?
Re: Lecture de code barre
Posté : mer. 17 mars 2010 14:12
par Yogui
Pour le lecteur code barre je ne vois pas
Peut être tester juste dans un fenêtre dans ce genre :
► Afficher le texte
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 633, 447, 192, 124)
$Input1 = GUICtrlCreateInput("Input1", 192, 136, 201, 21)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Avec un input tout simple
pour les base de données il ne me semble pas le plus simple et certainement le mdb d'acces
pour le tuto c'est par
ici
Re: Lecture de code barre
Posté : mer. 17 mars 2010 16:49
par ed3337100
Je vais tester et je te tiens au courant.
Re: Lecture de code barre
Posté : mer. 17 mars 2010 20:43
par Tlem
@ed3337100
Merci de prendre le temps de lire les
règles de présentation d'un message.
Balise de titre manquante sur le premier message.
Re: [..] Lecture de code barre
Posté : jeu. 18 mars 2010 08:31
par ed3337100
@Tlem
Correction apportée, désolé.
Re: [..] Lecture de code barre
Posté : jeu. 18 mars 2010 09:40
par mimione
Bonjour
Pour la partie "lecture" du code barre proprement dite, ça se passe comment..?
(commande du lecteur, récupération du résultat, etc..).
Je ne dispose pas (encore) d'un lecteur, mais ça me tente bien..
Merci pour vos infos,
Re: [..] Lecture de code barre
Posté : jeu. 18 mars 2010 09:48
par ed3337100
En faite, au niveau hardware, ma douchette est vue comme un deuxième clavier. Elle est branchée en PS2 entre le clavier et l'UC.
Pour ce qui est du badgeage, au lancement de mon appli, le curseur se positionne automatiquement sur mon input (la ligne de code n'est pas implémentée dans mon code ci-dessus). L'opérateur prend ensuite son article, badge le premier code barre. La douchette inscrit le résultat automatiquement dans mon input et fait un saut de ligne. Comme j'ai deux codes barre par article, l'utilisateur badge le deuxième code. Une fois le deuxième code badgé (et pas d'erreur de lecture car c'est mon pb initial), l'opérateur clic sur un bouton enregistrer.
Cela ecrit dans un fichier texte la date et les deux codes barres séparés par des points virgules et ainsi de suite.