Open ghost opened 12 years ago
Jamal, en faisant du reverse engineering sur le programme officiel (grâce à un logiciel permettant de capter tous les flux entrant et sortant sur les ports séries), a trouvé leur façon de découvrir le module.
Pour cela les étapes sont:
@XjamX Ce serait bien que tu postes les logs et résultats du programmes espion pour avoir une trace en ligne. Et pour étayer ma réponse. De plus que tu l'a confirme. Et enfin, ajouter une description sur ce logiciel.
Cette pratique révèle par contre plusieurs questions pour nous. En effet il est légitime de se poser les problèmes suivants:
Pour enumerer les port sous linux est ce possible de rechercher tous les fichiers du nom ttyS? (?un chiffre) dans le dossier /dev? On les stockerai (apres les avoir ouvert) par exemple dans un vecteur puis on leur enverrai la commande F et la il suffira d'étudier la réponse du module.
Voila un exemple de la communication entre le logiciel RFID utility et un port com virtuel (je n'ai pas le module sous la main mais cela ne change pas grand chose). Les caracteres envoyés sont ceux suivi de [len=2].
COM est ouvert
Configurer les dépassements de délai : ReadInterval=-1, ReadTotalTimeoutMultiplier=0, ReadTotalTimeoutConstant=0, WriteTotalTimeoutMultiplier=0, WriteTotalTimeoutConstant=0
Débit en bauds 19200
RTS activé
DTR activé
Bits de données=8, Bits d'arrêt=1, Parité=None
Configurer charactères : Eof=0x00, Error=0x00, Break=0x00, Event=0x00, Xon=0x11, Xoff=0x13
Handflow : ControlHandShake=(DTR_CONTROL), FlowReplace=(TRANSMIT_TOGGLE, RTS_CONTROL), XonLimit=2048, XoffLimit=512
Débit en bauds 19200
RTS activé
DTR activé
Bits de données=8, Bits d'arrêt=1, Parité=None
Configurer charactères : Eof=0x00, Error=0x00, Break=0x00, Event=0x00, Xon=0x11, Xoff=0x13
Handflow : ControlHandShake=(DTR_CONTROL), FlowReplace=(TRANSMIT_TOGGLE, RTS_CONTROL), XonLimit=2048, XoffLimit=512
Débit en bauds 19200
RTS activé
DTR activé
Bits de données=8, Bits d'arrêt=1, Parité=None
Configurer charactères : Eof=0x00, Error=0x00, Break=0x00, Event=0x00, Xon=0x11, Xoff=0x13
Handflow : ControlHandShake=(DTR_CONTROL), FlowReplace=(TRANSMIT_TOGGLE, RTS_CONTROL), XonLimit=2048, XoffLimit=512
Taille de queue entrée/sortie 1024/256
Purger le port série : TXABORT, TXCLEAR
Purger le port série : RXABORT, RXCLEAR
Break désactivé
Break désactivé
DTR activé
RTS activé
Configurer les dépassements de délai : ReadInterval=16, ReadTotalTimeoutMultiplier=16, ReadTotalTimeoutConstant=16, WriteTotalTimeoutMultiplier=16, WriteTotalTimeoutConstant=16
Configurer les dépassements de délai : ReadInterval=16, ReadTotalTimeoutMultiplier=16, ReadTotalTimeoutConstant=16, WriteTotalTimeoutMultiplier=16, WriteTotalTimeoutConstant=16
9991 bytes trial version limit
F [len=2]
F [len=2]
F [len=2]
Purger le port série : TXABORT, TXCLEAR
Purger le port série : RXABORT, RXCLEAR
COM est fermé
Par exemple sous Linux, le driver crée le fichier /dev/ttyUSB0, je ne sais pas comment il s'appellerait s'il y en avait un second. Sur Mac par exemple on a /dev/tty.usbserial, etc.
Mais si nous n'avons que cette solution je penche qu'on s'orientera là dessus. Il faut néanmoins en parler avec Mr. Berry car je trouve que c'est un peu "sale" de tout tester en boucle. Que se passe-t-il par exemple si on essaye d'ouvrir un fichier qui n'est pas sensé être un périphérique série et qu'on écrit 'STX F CR' dedans...
Enfin on verra bien.
Le programme nécessite pour l'instant qu'on lui indique le fichier, par exemple /dev/ttyUSB0 sous Linux, qui fait référence au périphérique USB/Série. Malheureusement il se trouve que celui-ci peut changer (si d'autres périphériques sont branchés par exemple), donc il serait bien que le programme soit capable de détecter le notre.
Sous MacOS X 10.7.3 il est par exemple possible de connaître plusieurs infos sur le matériel (Utilitaires > Informations système > USB) et on voit:
C'est informations sont donc accessibles quelque part (driver, périphérique lui-même, OS, etc), il faut donc creuser un peu.