Connexion port série avec C#

kabola Messages postés 3 Date d'inscription samedi 3 mars 2007 Statut Membre Dernière intervention 2 avril 2008 - 29 mars 2008 à 15:26
yann59000 Messages postés 3 Date d'inscription lundi 4 avril 2011 Statut Membre Dernière intervention 5 avril 2011 - 5 avril 2011 à 14:24
Je conçois une application en C# qui doit communiquer avec un lecteur RFID via port série (en fait c'est un port USB avec un driver qui me donne accès à VCP "virtual com port"). En suivant le protocole de communication du lecteur, j'ai fait plusieurs tentatives pour envoyer des requêtes mais en vain. 
J'ai cherché pas mal sur le net et le monde affirme que la communication port série devient un jeu d'enfant avec la classe SerialPort de la frameWork .NET 2.0 mais franchement je n'y arrive pas.
J'ai trouvé cette application (lien) qui devrait fonctionner. En la testant, elle ne marche pas avec mon lecteur. Par contre, quand je l'ai essayé avec une connexion port série avec un autre PC, j'ai réussi à envoyer mais pas à recevoir. 
Quelqu'un peut-il m'éclairer car je bloque vraiment là!!
merci a tous. 

4 réponses

ecosmose Messages postés 46 Date d'inscription vendredi 5 novembre 2004 Statut Membre Dernière intervention 30 septembre 2010
30 mars 2008 à 17:11
Attention de bien isoler ta problématique au niveau des couches de protocoels de même niveau...la Classe SerialPort te permet d'acceder à un port série (ou son émulation). Le niveau de cette classe te permet d'exploiter la couche Transport via du flux de données (Stream) qui seront ensuite compréhensible par ton lecteur....

Ensuite, tu nous précise que le lecteur possède son protocole de communication, je pense que ton problèm vient de cette couche..peut etre que les données transmises par ton appli ne sont pas bien encapsulé pourrais tu nous transmettre un peu de doc pour qu'on identifie mieux la source de tes problèmes ?
BINOME de ECOSMOSE
Association ecologique d'actions de culture et d'Informations
0
kabola Messages postés 3 Date d'inscription samedi 3 mars 2007 Statut Membre Dernière intervention 2 avril 2008
2 avril 2008 à 16:06
t'avais parfaitement raison: je formulais mal ma requête; une conversion string to byte devait être faite!
Ce code source était fort utile (lien)
maintenant, pour chaque requête que j'envoie, je reçois la bonne réponse.
voici quelque requêtes extraites du protocole dont je parlais (je ne sais pas si le terme protocole est bien choisi):
Card UID

Command to return card status and UID (Unique Identifier or Serial number). The acknowledge byte flags indicate general Mifare card status.
Command: 0 1 0 1 0 1 0 1 (Ascii “U”, 0x55)
Acknowledge: 1 F F F F F F X (F = Status flags)
Data only follows if card was selected OK with no errors detected.
Reply1: D D D D D D D D (D = LS Byte of UID/Serial number from card)
Reply2: D D D D D D D D
Reply3: D D D D D D D D
Reply4: D D D D D D D D
Reply5: D D D D D D D D
Reply6: D D D D D D D D Dummy bytes (0x00) for Mifare 1k/4k card types
Reply7: D D D D D D D D Read Card Block

Command to read 16 bytes of data from specified Mifare block. The first argument is the block number to read data from, the second argument specifies which key code (0 - 31 from the internal storage area) to use for sector authentication/unlocking and if the Security Key is to be used as a KeyA or KeyB type code. If the read was successful, indicated by acknowledge status flags then sixteen bytes of block data follow.
Command: 0 1 0 1 0 0 1 0 (Ascii “R”, 0x52)
Argument1: N N N N N N N N (N = MF Card Block Address 0 – 255)Argument2: T x x K K K K K (T Key Type, 0 KeyA, 1= KeyB)
(K = Key code number, 0 – 31)
Acknowledge: 1 F F F F F F X (F = Status flags)
Data only follows if Read was successful
Reply1: D D D D D D D D (D = LS Byte of data Read from card)
Reply2: D D D D D D D D
Reply3: D D D D D D D D
Reply4: D D D D D D D D
                                                              16 Bytes of data
Reply13: D D D D D D D D
Reply14: D D D D D D D D
Reply15: D D D D D D D D
Reply16: D D D D D D D D (D = MS Byte of data Read from card)
0
kabola Messages postés 3 Date d'inscription samedi 3 mars 2007 Statut Membre Dernière intervention 2 avril 2008
2 avril 2008 à 16:10
maintenant, j'ai deux nouvelles problématiques:
-envoyer des requetes multiples afin des remplir plusieurs champs à partir des données reçues, Est-ce possible? Comment?
-je veux que mon application détecte la présence du lecteur dès qu'il se connecte et envoyer une requete spécifique (en arrière plan sans évenement utilisateur)
0
yann59000 Messages postés 3 Date d'inscription lundi 4 avril 2011 Statut Membre Dernière intervention 5 avril 2011
5 avril 2011 à 14:24
bonjour,
je dois pour un projet récupérer les données de différentes carte rfid à partir de lecteurs sur port usb.
Je suis un peu perdu .
je suis la piste de winscard.dll suis je sur la bonne voie ?
si quelqu'un a des pistes merci d'avance
0
Rejoignez-nous