Access et lecture port série

DarkIndra Messages postés 21 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 9 juillet 2007 - 18 juin 2007 à 15:53
zikosnba Messages postés 2 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 12 avril 2008 - 8 avril 2008 à 23:21
Bonjour à vous lecteur de mon problème, 

  alors voila, je suis étudiant en bts electronique, j'ai déja fait un dut informatique, et la je suis en stage, je dois faire une interface lecteur de badge/base de données access.
J'ai déja réaliser tout ca, avec un adaptateur de tension , un pic, etc etc, la lecture du code du badge s'effectue bien, en C, à l'aide d'un petit programme test. Mais mon soucis est que je ne connais rien a access, et cela fait plusieurs jours que je cherche, et je desespere.

En gros, j'ai plusieurs formulaires (ex: mode automatique et manuel) et lorsque que je passe sur le mode automatique, il faudrait qu'access aille lire sur le port série(sans bloquer le pc, exemple qu'on puisse quand meme cliquer sur un bouton pour sortir du formulaire) si il y a un n° de badge d'envoyé et que ce numéro s'affiche dans une zone de texte sur la page, pour que je puisse ensuite traiter cette donnée. J'utilise le composant MsComm mais je n'arrive pas a faire fonctionner le ComEvent, quelqu'un aurait il un code qui fonctionne? ou une piste? quelque chose qui pourrait m'aider.
ps: j'ai déja regarder un peu partout sur plein de site, plein de faq, mais meme avec des exemples, ca refuse de fonctionner :(
ps2: (non pas la console^^) pour le theme je ne savais pas trop qui mettre.

Merci d'avance et merci d'avoir lu et éventuellement merci pour les réponses.

15 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
18 juin 2007 à 16:39
regarde peut-etre déjà du coté de la propriété RThreshold du composant MSComm. Elle détermine combient de caractères recevoir avant de déclencher l'évènement sur reception. Si elle est égale à 0, l'évènement sur reception est désactivé.

Ensuite tu peux regarder les exemples de code sur le ports série présent ici sur le site. Même si la plupart sont pour VB6 et pas Access, ça devrait quand même te donner des idées

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
DarkIndra Messages postés 21 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 9 juillet 2007
19 juin 2007 à 08:10
Bonjour, merci à toi pour ta rapidité, il était bien à 0 :) mais le mettre à 1 n'a rien changé, j'avais déja regardé pas mal de code, je met celui que j'ai pris et modifiié ici, et en attendant une réponse, je vais continuer à chercher.
Merci.
Private Sub Form_Load()
Form1.Caption = "Mode auto"
With MSComm1
.CommPort = 1
.Handshaking = 0
.RThreshold = 1
.RTSEnable = True
.Settings = "9600,n,8,1"
.SThreshold = 1
.PortOpen = True
End With
Text1.Text = ""
End Sub


Private Sub Form_Unload(Cancel As Integer)
MSComm1.PortOpen = False 'on ferme le port quand l'appli quitte
End Sub


Private Sub MSComm1_OnComm()
Dim InBuff As String


Select Case MSComm1.CommEvent
' On effectue la gestion des erreurs (cf. le modèle ci-dessus)
' Ici, on gère en fait pas grand-chose, mais c'est pour illustrer la démarche ;)


'liste des erreurs possibles
Case comEventBreak 'On a reçu un signal d’interruption (Break)
Case comEventCDTO ' Timeout de la porteuse
Case comEventCTSTO ' Timeout du signal CTS (Clear To Send)
Case comEventDSRTO ' Timeout du signal de réception
Case comEventFrame ' Erreur de trame
Case comEventOverrun ' Des données ont été perdues
Case comEventRxOver ' Tampon de réception saturé
Case comEventRxParity ' Erreur de parité
Case comEventTxFull ' Tampon d’envoi saturé
Case comEventDCB ' Erreur de réception DCB (jamais vu)


'liste des événements possibles qui sont, eux, normaux
Case comEvCD 'Changement dans la broche CD (porteuse)
Case comEvCTS 'Changement dans broche CTS
Case comEvDSR 'Changement dans broche DSR (réception)
Case comEvRing 'Changement dans broche RING (sonnerie)


'Chouette! on a reçu des données :)
Case comEvReceive
      Dim tampon() As Byte
      tampon = MSComm1.Input
      Call Traitement(tampon) 'traitement données


Case comEvSend ' il y a des caractères à envoyer


Case comEvEOF 'on a reçu le caractère EOF
End Select
End Sub


Sub Traitement(tampon As String)


'cette procédure sert à traiter l’information reçue dans le tampon
     Badge.SelStart = Len(Badge.Text)
     Badge.SelText = tampon 'ici, on affiche le résultat dans un champ de texte
End Sub
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
19 juin 2007 à 20:57
Quel est ton soucis exactement, chez moi ça a l'air de marché correctement

Sauf pour la décalration de tampon, ce n'est pas un tableau de byte. Il faut le déclarer comme une chaine classique :
Dim tampon As String

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
DarkIndra Messages postés 21 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 9 juillet 2007
20 juin 2007 à 08:12
Bah tu le fais avec le logiciel Access?
car moi je comprend pas, peut etre je fais mal la manipulation, moi je fais comme ca :
je dépose un objet mscom sur ma feuille, et ma zone de texte, ensuite je met ce code dans un module, et voila je lance mon programme assembleur(qui transforme le code du badge) et je passe mon badge, et il ne m'affiche rien dans ma zone. Pourtant comme le module est actif des qu'il a reçu une info non?
je ne connais pas Access et encore moin le module MScomm , et j'ai tellement cherché partout, meme des codes qui sont cencés fonctionner bah vont pas avec mon fomulaire access, tu peux m'expliquer comment toi tu procedes?
ps: le prog assembleur (pour pic) fait bien son job, je récupére mon code comme il faut avec un ti prog C
ps2: je désespere, alors je tente une interface en C, mais si je pouvais faire fonctionner le truc avec Access ca les arrangerait ( la boite où je suis pour mon stage)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
20 juin 2007 à 21:16
Attention, ce code ne doit pas etre dans un module, il doit etre dans la partie code du formulaire contenant le controle MSComm et la textbox.

Vérifie bien que les nom des controles que tu utilise dans le code correspondent bien aux noms utilisés sur la feuille.

Je viens de tester sur mon poste, j'ai un gros soucis avec la propriété Text des textbox, Access me geule une erreur incompréhensible, mais en tout cas le déclenchement de la fonction Traitement se fait bien.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
DarkIndra Messages postés 21 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 9 juillet 2007
21 juin 2007 à 08:08
Bonjour, j'ai eu quelques soucis hier, donc la je suis crevé, je vois pas trop ce que tu entend par"la partie code du formulaire" , le code est pas dans visual basic (alt+f11) ? ou alors quand je clic droit sur mon composant MSComm je peux "creer un evenement" et ca me créé dans visual une "fonction" du composant vierge et je n'ai plus qu'a la remplir. :/ pourrais tu etre plus clair s'il te plait avec les termes d'access ( je ne m'y connais pas ) par exemple où se trouve la partie code du formulaire?
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
21 juin 2007 à 08:53
je ne connais absolument pas acces au niveau du développement, mais quand je dis partie "code", c'est dans l'éditeur de code effectivement, mais visiblement tu connais déjà. Je pense que l'on parle bien de la même chose.

Il faut juste que ce code soit dans le formulaire (partie code) et non pas dans un module indépendant.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
DarkIndra Messages postés 21 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 9 juillet 2007
21 juin 2007 à 08:55
D'accord, je vais essayer ca tout de suite et je te dis quoi apres.
Merci de prendre le temps de t'occuper de moi :)
0
DarkIndra Messages postés 21 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 9 juillet 2007
21 juin 2007 à 09:00
arf des la premiere ligne (quand je le met dans un formulaire et non dans un module) il fait la "gueule"

Form1.Caption = "Formulaire1"

ca il ne l'accepte pas alors que ca ne posé pas de probleme avant, erreur 424, j'ai regardé, ca veut dire qu'il attent un objet. Cela correspond à quoi? Qu'est ce qu'un objet sous access?

(désolé si je pose des questions qui paraissent bêtes, mais je ne viens pas ici sans avoir rien fait, j'ai passé 3 jours avant de poster, a parcourir plein plein de forum de tuto etc, j'ai jamais rien trouvé qui satisfaisait ce que je devais faire)
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
21 juin 2007 à 20:37
c'est ce que je te disais, tu dois vérifier que les noms de controles que tu utilise dans le code correspondent aux noms des controles posés sur la feuille

A la place de Form1 dans ton code, il faut que tu mettre le nom que tu trouvera dans la propriété Name de la feuille. Ou alors tu mets dans cette propriété, le nom que tu utilise dans le code.

Et la même chose pour les autres controles

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
DarkIndra Messages postés 21 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 9 juillet 2007
22 juin 2007 à 08:07
D'accord, je vais essayer tout de suite :)
0
DarkIndra Messages postés 21 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 9 juillet 2007
22 juin 2007 à 08:17
euh j'ai une question bete, comment on accede à la propriété name du formulaire, je pense qu'il s'appelle Formulaire1, car dans access dans la liste des formulaires, c'est écrit Formulaire1, quand je l'ouvre le titre de ma fenetre c'est [Formulaire1 : Formuaire] et sous vb c'est Form_Formulaire1, tout me porte a croire qu'il s'appelle comme ca, alors de temps en temps, la je viens d'essayer 4 fois,et 2 fois il a passé cette errreur, mais a planté sur 8012 lors de la fermeture du portcom, j'ai regarder ici, et une personne l'a résolu mais c'est parce qu'elle avait des drivers "génants" il ne me semble pas qu'il y ai ca sur ce pc (ce n'est pas le mien)

donc j'ai essayé
Form1.Caption = Formulaire1
Form1.Caption = "Formulaire1"

il ne prend ni l'un ni l'autre :(
0
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
22 juin 2007 à 20:09
tu ouvre ton formulaire en modification, tu clique droit dessus, tu choisi Propriétés.

Ensuite tu sélectione soiit l'onglet Autres, soit l'onglet Toutes, et tu regarde la propriété Nom

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
DarkIndra Messages postés 21 Date d'inscription vendredi 15 juin 2007 Statut Membre Dernière intervention 9 juillet 2007
26 juin 2007 à 09:00
Le nom c'est détail, et meme si je met détail ou "détail" il me refuse et met une erreur toujours la meme, il veut un objet :(
0
zikosnba Messages postés 2 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 12 avril 2008
8 avril 2008 à 23:21
Bonjour! je viens de lire la conversation, ce que je peux dire que c'est interessant surtout lorsque tu aurras un sujet pareil!!
en fait, j'ai un projet et j'ai pas beaucoup du temps et j'éspère que tu puisse m'aider, voila en bref mon sujet: j'utilise un lecteur de code barre qui utilise le port série comme péreferique d'entrée, après aprés il donne un programme d'extension ".txt" ce qui inutil pr moi!! je pense à créer une application en vb ou en C ou même en assembleur mais je sais pas comment je peux faire tout ca car j'ai besoin d'enregistrer les données scannées dans la base de donnée correspondante!
Je serais vrmt reconnaissant si vs pourriez m'aider! merci d'avance
0