OVH Cloud OVH Cloud

Récupérer des données d'un lecteur magnétique sur port série.

4 réponses
Avatar
Daniel
Bonjour à tous et d'avance un grand merci à ceux qui peuvent m'aider.

Je suis enseignant dans une école technique et je dois mettre au point un
système de gestion des prêts de l'outillage des différents ateliers de
l'école.

Si pour la gestion (entrée/sortie de l'outillage), je pense m'en sortir, par
contre la direction voudrait utiliser comme clé d'identification des élèves
et /ou professeur le code d'une clé magnétique que chacun possède. (Cette
clé est utilisée pour l'achat de boisson dans les automates de l'école).

Cette clé est lue par un appareil adhoc branché sur la prise série du PC
(système RS232). J'ai reçu du fabricant 4 pages techniques reprenant la
structure des commandes pour lire ou écrire sur la clé.

Mon problème est donc de récupérer le code de la clé dans un champs access.

Ma question est donc :

Dans quelle direction m'orienter pour lire effectivement le code de la clé.
Je ne demande pas une solution terminée mais des pistes pour pouvoir
résoudre ce problème.

Merci à tous et à bonne journée.

Daniel

4 réponses

Avatar
3stone
Salut,

"Daniel"
Je suis enseignant dans une école technique et je dois mettre au point un
système de gestion des prêts de l'outillage des différents ateliers de
l'école.

Si pour la gestion (entrée/sortie de l'outillage), je pense m'en sortir, par
contre la direction voudrait utiliser comme clé d'identification des élèves
et /ou professeur le code d'une clé magnétique que chacun possède. (Cette
clé est utilisée pour l'achat de boisson dans les automates de l'école).

Cette clé est lue par un appareil adhoc branché sur la prise série du PC
(système RS232). J'ai reçu du fabricant 4 pages techniques reprenant la
structure des commandes pour lire ou écrire sur la clé.

Mon problème est donc de récupérer le code de la clé dans un champs access.

Ma question est donc :

Dans quelle direction m'orienter pour lire effectivement le code de la clé.
Je ne demande pas une solution terminée mais des pistes pour pouvoir
résoudre ce problème.



Un page qui devrait t'intéresser...
http://ourworld.compuserve.com/homepages/richard_grier/


--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Avatar
cnut17
"Daniel" wrote in message news:<40c70936$0$9746$...
Bonjour à tous et d'avance un grand merci à ceux qui peuvent m'aider.

Je suis enseignant dans une école technique et je dois mettre au point un
système de gestion des prêts de l'outillage des différents ateliers de
l'école.

Si pour la gestion (entrée/sortie de l'outillage), je pense m'en sortir, par
contre la direction voudrait utiliser comme clé d'identification des élèves
et /ou professeur le code d'une clé magnétique que chacun possède. (Cette
clé est utilisée pour l'achat de boisson dans les automates de l'école).

Cette clé est lue par un appareil adhoc branché sur la prise série du PC
(système RS232). J'ai reçu du fabricant 4 pages techniques reprenant la
structure des commandes pour lire ou écrire sur la clé.

Mon problème est donc de récupérer le code de la clé dans un champs access.

Ma question est donc :

Dans quelle direction m'orienter pour lire effectivement le code de la clé.
Je ne demande pas une solution terminée mais des pistes pour pouvoir
résoudre ce problème.

Merci à tous et à bonne journée.

Daniel


Facile :
2 options s'offrent à toi :
- Soit tu écrit un programme externe qui extrait ce numéro et le
transmet à access en l'écrivant dans un fichier texte.
- Soit tu déclares dans access toutes les fonctions de l'api windows
nécéssaires à l'écriture et la lecture d'un port série.

- Avec la première méthode, tu utilises un outil de développement
genre VisualBasic ou Delphi pour produire un éxécutable que tu
appellera depuis access avec le verbe SHELL. Le contenu de ce
programme nécéssite de connaitre l'API windows et d'avoir les fichiers
d'aide correspondant. La fonction clé pour ouvrir un port série est
"CreateFile". Ensuite il y a deux autres fonctions à appeler, l'une
pour régler les bits par seconde, parité et autres paramètres, l'autre
pour choisir les protocoles et timeouts. Tu peux tester ta capacité à
lire et écrire ce port en reliant un cable nul-modem vers un autre pc
qui fera tourner hyperterminal. Une fois que tu sais faire ça, tu
prends la doc du lecteur de clé et tu te conformes à la syntaxe des
commandes pour extraire ce numéro. Tu peux également tester le lecteur
avec hyperterminal pour te familiariser avec son langage. Une fois le
numéro obtenu tu l'écrit dans un fichier pour que access le récupère.
Du côté de access, il faut attendre que le programme externe soit
terminé avant de lire le fichier. Tu peux faire ça en testant son
handle de fenêtre avec les fonctions getWindow ou simplement en
vérifiant la présence du fichier et sa taille. Dans ce cas, prends
soins d'insérer un "DoEvents" dans la boucle de test pour laisser la
main aux autres applications.

- Avec la deuxième méthode, tu utilises la directive DECLARE dans
access pour accéder aux fonctions CreateFile, SetComm...quelquechose
et autres. Attention aux clauses byref et byval lors de la
déclaration. Il y a quelques trucs à connaître : par exemple, un
paramètre documenté en pchar dans l'aide api doit être déclaré en
byval string dans access. si la dll doit êcrire dedans, il faut
l'initialiser/remplir en faisant par exemple
StrParam=chr$(0)+space$(1000). au retour de la fonction on extrait la
partie utile en faisant un mid$(strparam,1,WrittenLen) car dans ce
cas, la fonction te renvoie toujours la longueur.

C'est un problème intéressant. Si ça t'intéresse je peux te retrouver
un source Delphi qui réalise une action similaire : récupérer le poids
d'un indicateur de bascule qui envoie sur le port série. Bon
amusement...

Avatar
Daniel
Merci pour ces explications, je me mets au travail.

Daniel

"Cnut" a écrit dans le message de
news:
"Daniel" wrote in message
news:<40c70936$0$9746$...

Bonjour à tous et d'avance un grand merci à ceux qui peuvent m'aider.

Je suis enseignant dans une école technique et je dois mettre au point
un


système de gestion des prêts de l'outillage des différents ateliers de
l'école.

Si pour la gestion (entrée/sortie de l'outillage), je pense m'en sortir,
par


contre la direction voudrait utiliser comme clé d'identification des
élèves


et /ou professeur le code d'une clé magnétique que chacun possède.
(Cette


clé est utilisée pour l'achat de boisson dans les automates de l'école).

Cette clé est lue par un appareil adhoc branché sur la prise série du PC
(système RS232). J'ai reçu du fabricant 4 pages techniques reprenant la
structure des commandes pour lire ou écrire sur la clé.

Mon problème est donc de récupérer le code de la clé dans un champs
access.



Ma question est donc :

Dans quelle direction m'orienter pour lire effectivement le code de la
clé.


Je ne demande pas une solution terminée mais des pistes pour pouvoir
résoudre ce problème.

Merci à tous et à bonne journée.

Daniel


Facile :
2 options s'offrent à toi :
- Soit tu écrit un programme externe qui extrait ce numéro et le
transmet à access en l'écrivant dans un fichier texte.
- Soit tu déclares dans access toutes les fonctions de l'api windows
nécéssaires à l'écriture et la lecture d'un port série.

- Avec la première méthode, tu utilises un outil de développement
genre VisualBasic ou Delphi pour produire un éxécutable que tu
appellera depuis access avec le verbe SHELL. Le contenu de ce
programme nécéssite de connaitre l'API windows et d'avoir les fichiers
d'aide correspondant. La fonction clé pour ouvrir un port série est
"CreateFile". Ensuite il y a deux autres fonctions à appeler, l'une
pour régler les bits par seconde, parité et autres paramètres, l'autre
pour choisir les protocoles et timeouts. Tu peux tester ta capacité à
lire et écrire ce port en reliant un cable nul-modem vers un autre pc
qui fera tourner hyperterminal. Une fois que tu sais faire ça, tu
prends la doc du lecteur de clé et tu te conformes à la syntaxe des
commandes pour extraire ce numéro. Tu peux également tester le lecteur
avec hyperterminal pour te familiariser avec son langage. Une fois le
numéro obtenu tu l'écrit dans un fichier pour que access le récupère.
Du côté de access, il faut attendre que le programme externe soit
terminé avant de lire le fichier. Tu peux faire ça en testant son
handle de fenêtre avec les fonctions getWindow ou simplement en
vérifiant la présence du fichier et sa taille. Dans ce cas, prends
soins d'insérer un "DoEvents" dans la boucle de test pour laisser la
main aux autres applications.

- Avec la deuxième méthode, tu utilises la directive DECLARE dans
access pour accéder aux fonctions CreateFile, SetComm...quelquechose
et autres. Attention aux clauses byref et byval lors de la
déclaration. Il y a quelques trucs à connaître : par exemple, un
paramètre documenté en pchar dans l'aide api doit être déclaré en
byval string dans access. si la dll doit êcrire dedans, il faut
l'initialiser/remplir en faisant par exemple
StrParam=chr$(0)+space$(1000). au retour de la fonction on extrait la
partie utile en faisant un mid$(strparam,1,WrittenLen) car dans ce
cas, la fonction te renvoie toujours la longueur.

C'est un problème intéressant. Si ça t'intéresse je peux te retrouver
un source Delphi qui réalise une action similaire : récupérer le poids
d'un indicateur de bascule qui envoie sur le port série. Bon
amusement...



Avatar
hakim1
Le jeudi 10 Juin 2004 à 01:08 par cnut17 :
"Daniel" <> wrote in message
news:<40c70936$0$9746$>...
Bonjour à tous et d'avance un grand merci à ceux qui peuvent
m'aider.

Je suis enseignant dans une école technique et je dois mettre au point
un
système de gestion des prêts de l'outillage des différents
ateliers de
l'école.

Si pour la gestion (entrée/sortie de l'outillage), je pense m'en
sortir, par
contre la direction voudrait utiliser comme clé d'identification des
élèves
et /ou professeur le code d'une clé magnétique que chacun
possède. (Cette
clé est utilisée pour l'achat de boisson dans les automates de
l'école).

Cette clé est lue par un appareil adhoc branché sur la prise
série du PC
(système RS232). J'ai reçu du fabricant 4 pages techniques
reprenant la
structure des commandes pour lire ou écrire sur la clé.

Mon problème est donc de récupérer le code de la
clé dans un champs access.

Ma question est donc :

Dans quelle direction m'orienter pour lire effectivement le code de la
clé.
Je ne demande pas une solution terminée mais des pistes pour pouvoir
résoudre ce problème.

Merci à tous et à bonne journée.

Daniel



Facile :
2 options s'offrent à toi :
- Soit tu écrit un programme externe qui extrait ce numéro et le
transmet à access en l'écrivant dans un fichier texte.
- Soit tu déclares dans access toutes les fonctions de l'api windows
nécéssaires à l'écriture et la lecture d'un port
série.

- Avec la première méthode, tu utilises un outil de
développement
genre VisualBasic ou Delphi pour produire un éxécutable que tu
appellera depuis access avec le verbe SHELL. Le contenu de ce
programme nécéssite de connaitre l'API windows et d'avoir les
fichiers
d'aide correspondant. La fonction clé pour ouvrir un port série
est
"CreateFile". Ensuite il y a deux autres fonctions à appeler,
l'une
pour régler les bits par seconde, parité et autres
paramètres, l'autre
pour choisir les protocoles et timeouts. Tu peux tester ta capacité
à
lire et écrire ce port en reliant un cable nul-modem vers un autre pc
qui fera tourner hyperterminal. Une fois que tu sais faire ça, tu
prends la doc du lecteur de clé et tu te conformes à la syntaxe
des
commandes pour extraire ce numéro. Tu peux également tester le
lecteur
avec hyperterminal pour te familiariser avec son langage. Une fois le
numéro obtenu tu l'écrit dans un fichier pour que access le
récupère.
Du côté de access, il faut attendre que le programme externe soit
terminé avant de lire le fichier. Tu peux faire ça en testant son
handle de fenêtre avec les fonctions getWindow ou simplement en
vérifiant la présence du fichier et sa taille. Dans ce cas,
prends
soins d'insérer un "DoEvents" dans la boucle de test pour
laisser la
main aux autres applications.

- Avec la deuxième méthode, tu utilises la directive DECLARE dans
access pour accéder aux fonctions CreateFile, SetComm...quelquechose
et autres. Attention aux clauses byref et byval lors de la
déclaration. Il y a quelques trucs à connaître : par
exemple, un
paramètre documenté en pchar dans l'aide api doit être
déclaré en
byval string dans access. si la dll doit êcrire dedans, il faut
l'initialiser/remplir en faisant par exemple
StrParam=chr$(0)+space$(1000). au retour de la fonction on extrait la
partie utile en faisant un mid$(strparam,1,WrittenLen) car dans ce
cas, la fonction te renvoie toujours la longueur.

C'est un problème intéressant. Si ça t'intéresse je
peux te retrouver
un source Delphi qui réalise une action similaire :
récupérer le poids
d'un indicateur de bascule qui envoie sur le port série. Bon
amusement...


bonjour daniel,
j'ai lu ton commentaire à propos récupérations du poids
d'un indicateur de bascule qui envoie sur le port série et ça m'intéresse trop.
si vous avez le code source, s'il vous plaît, envoyer le avec des instructions nécessaire pour réaliser tel projet !!! merci d'avance :)