Cardane Posté(e) le 2 janvier 2019 Signaler Posté(e) le 2 janvier 2019 Bonjour à tous, Je suis en train de travailler sur le VD pour le KLF200, j'arrive déjà à me connecter dessus, ca progresse par contre, comme ce foutu API utilise le protocole SLIP, j'ai un problème avec ces escape sequence. en clair, je dois modifier mon frame de commande afin de pouvoir faire 3 choses : 1. si il contient un caractère ESC (0xDB), le remplacer par les deux caractères suivants : ESC + ESC_ESC (0xDB 0xDD) 2. si il contient un caractère END (0xC0), le remplacer par les deux caractères suivants : ESC + ESC_END (0xC0 0xDC) 3. enfin, ajouter en première et dernière position du frame le caractère END (0xC0) ca fait deux jours que je teste avec toutes les fonctions possibles de manipulation de string, mais je n'arrive pas à un résultat correct. Soit il ajoute la valeur numérique du caractère (192. 219, etc), soit la valeurr hex en toutes lettres.... bref le bordel... alors je fais appel à tous les nombreux développeurs ici, je me dit qu'il y en a bien un qui est capable de faire ca @Lazer, @Steven @ADN182 ou @MAM78 ??? ou le grand maître @Krikroff ??? merci à tous
Lazer Posté(e) le 2 janvier 2019 Signaler Posté(e) le 2 janvier 2019 Tu as un foutu problème de slip, tu veux manipuler un string, et c'est le bordel ? Bah dis doc, tu t'es trompé de site je crois Blague à part, tu as un début de lignes de code qui ne fonctionne pas ? EDIT : dans mon VD Eaton il y a beaucoup d'exemples de manipulation de caractères hexadécimaux, pour encoder/décoder les trames SNMP. 1
Cardane Posté(e) le 2 janvier 2019 Auteur Signaler Posté(e) le 2 janvier 2019 non non, ne t'inquiètes pas, je n'ai pas de problème avec mon slip juste que je ne vois pas comment, en lua, je peux faire pour construire ce frame de commande à passer au KLF je vais aller voir ce que tu as fais dans ton VD Eaton si je trouve de l'inspiration et demain je mettrai ici la ligne de code qui ne marche pas, là j'en ai marre, depuis le matin je suis dessus
Cardane Posté(e) le 2 janvier 2019 Auteur Signaler Posté(e) le 2 janvier 2019 (modifié) @Lazer euhh, il est où ce VD Eaton, je ne trouve rien dans la recherche (ok, suis très fatigué ce soir ...) EDIT : c'est bon, j'ai trouvé, pffff, dois vraiment aller me coucher moi ok, je regarde ce que tu as fait Modifié le 2 janvier 2019 par Cardane
Lazer Posté(e) le 3 janvier 2019 Signaler Posté(e) le 3 janvier 2019 Exemple : local machaine = string.char(0xDB) .. string.char(0xDD)
Cardane Posté(e) le 3 janvier 2019 Auteur Signaler Posté(e) le 3 janvier 2019 (modifié) salut @Lazer, oui, ca j'avais utilisé pour insérer les END en début et fin de frame. mais ce que je n'arrive vraiment pas à faire c'est l'équivalent du string.gsub mais avec ces caractères spéciaux. En fait je dois chercher dans le frame si il y a la présence d'un caractère ESC ou END, et le remplacer, mais la fonction sub ne marche pas. EDIT : ok, j'utilisais mal la fonction sub, je crois que ca marche maintenant, je vais faire des tests en live avec le KLF pour voir si il reçoit bien le frame (et surtout si il le comprend) Dernière question... maintenant que j'ai bien construit le frame avec les différents Escape Character, puis le texte, puis encore des escape char, il me faut juste rajouter un cri à la fin. le calcul du cri, ok, je peux faire, mais le résultat sera un entier sur 2 bytes. Comment est-ce que j'ajoute ca en bout de frame ???? Modifié le 3 janvier 2019 par Cardane
Lazer Posté(e) le 3 janvier 2019 Signaler Posté(e) le 3 janvier 2019 Il y a plein d'exemples dans mon VP Eaton, alors ça donne par exemple : -- Test le premier caractère de la chaine if string.sub(data, 1, 1) ~= string.char(0xDB) then -- action à effectuer end Je ne sais pas trop à quoi ressemble ton CRC, mais pour l'ajouter à la fin de ta chaine, je t'invite à t'inspirer du code de ma fonction encode(). Si c'est un nombre, tu peux notamment regarder la section "elseif t == "number" then" ...
Messages recommandés