Un fichier à décoder

Un fichier à décoder - Divers - Programmation

Marsh Posté le 29-12-2015 à 21:20:55    

Bonjour (ou plutôt bonsoir)
 
Je viens ici pour un problème sur un fichier. Je ne sais pas vraiment si ça à vraiment ça place ici et je m'en excuse pleinement si ce n'est pas le cas.
 
Le contexte est un peu hors-sujet mais je le place pour l'expliquer :
J'utilise un jeu de lumière comme le suivant en photo.
http://i.imgur.com/vY2pM1Z.jpg
Son nom le Motion Drape de Chauvet
 
Ce rideau utilise un boitier de contrôle, qui lui utilise des programmes lui permettant de faire des effets (couleurs et formes) qui permet d'avoir un affichage. Ces programmes sont définis dans un fichier dans une carte SD à l'intérieur du boitier.
Je me suis dit : "ça se trouve, ce fichier est un truc tout con, style txt, csv, lua, ou voir vba..." (c'est beau de rêver...). Alors ni une, ni deux, je copie le fichier sur mon pc et j'essaie de l'ouvrir avec un éditeur de texte, et là, c'est la dèche...  
 
Quoi qu'il en soit, j'ai ce fichier, un fichier en ".dat", et j'aimerais savoir si il existe un moyen de le modifier ?
Je ne sais pas avec quoi l'ouvrir, si il est possible de l'ouvrir, et si je peux modifier le code à mon aise pour y ajouter des affichages persos (écriture, pseudos dessins...)
je l'ai mis sur mediafire pour ceux qui le veulent ici (je sais pas si j'ai le droit)
 
Voilà. je vous remercie d'avance.


---------------
Petit cochon, petit cochon, laisse moi entrer, sinon je souffle et je souffle et je viens te botter les fesses!!
Reply

Marsh Posté le 29-12-2015 à 21:20:55   

Reply

Marsh Posté le 29-12-2015 à 22:20:23    

génial, du reverse-engineering pour passer une bonne soirée! :-)

 

Pour ouvrir ce fichier faut un éditeur héxa.

 

C'est un peu difficile sans avoir le produit sous la main et pouvoir faire des tests. Est-ce que tu t'y connais un peu en programmation, écriture héxadécimale/binaire et ce genre de choses? À première vue le format n'est pas trop compliqué, mais faudra certainement faire quelque essais pour les détails et pour ça faut au moins savoir se servir d'un éditeur héxa (voire savoir programmer si on ne veut pas tout faire à la main)...

 

[n-ième version de mon post après refléxion et recherche, désolé pour le bazar...]

 

Chaque animation a un fichier .dat distinct, c'est bien ça?

 

Bon, ce qu'on peut dire après un regard rapide sur le produit et le fichier:
En tête: Tout au début 0x AA 55 comme sur un Master Boot Record, certainement pour identifier le type de fichier. Plus loin E8 03 01, peut-être pour identifier l'animation ou alors c'est un checksum? Ensuite que des zéros qui viennent remplir le bloc de 512 octets. Ensuite vient frame par frame ("image" par "image" ) de l'animation toujours sur 512 octets et sur une adresse divisible par 512. Au début 5A 01 comme nombre magique d'un frame (identification), ensuite le numéro de l'image sur deux octets (à la suite 1,2,3). Ensuite toujours la même constante: CA B0 00. Ensuite l'état des LED sur 352 octets, quel hasard, le machin a 176 LEDs soit 2 octets de données par LED.

 

De loin sans l'appareil sous la main pour tester difficile d'en dire plus... Faut comparer, modifier, en tirer des conclusions etc, bref, tu travail de reverse-engineering quoi.

 

edit: T'aurais pas une bonne vidéo pour cette animation / ce fichier là?

Message cité 1 fois
Message édité par rat de combat le 29-12-2015 à 22:34:20
Reply

Marsh Posté le 29-12-2015 à 22:47:59    

Reste à voir si le constructeur autorise ce genre de manip'  :lol:

Reply

Marsh Posté le 29-12-2015 à 22:52:16    

caps lock a écrit :

Reste à voir si le constructeur autorise ce genre de manip'  :lol:


Oui bon ça c'est à sshika et aux juristes de voir, moi je me limite au bricolage informatique... :o  
 
Je ne trouve aucune trace de carte SD dans la doc, c'est que tu (sshika) as ouvert le boîtier ou comment? Merci d'être plus précis...

Reply

Marsh Posté le 30-12-2015 à 00:04:01    

rat de combat a écrit :

Je ne trouve aucune trace de carte SD dans la doc, c'est que tu (sshika) as ouvert le boîtier ou comment? Merci d'être plus précis...


Ouais accidentellement en faisant l'entretien, je l'ai démonté et vu cette sd...
 

caps lock a écrit :

Reste à voir si le constructeur autorise ce genre de manip'  :lol:


Je les ai contacté pour savoir si on avait le droit de le faire, et il ne l'interdise pas. ça annule la garantie, mais il ne l'est plus depuis bien longtemps. des clients à eux on déjà fait ça, et il vont même essayer de les trouver pour me mettre en relation vu qu'ils y sont déjà arriver. mais ce serait aussi bien d'y arriver soit même.
 

rat de combat a écrit :

Pour ouvrir ce fichier faut un éditeur héxa.


Ok merci. que conseilles tu comme éditeur ?
 

rat de combat a écrit :

C'est un peu difficile sans avoir le produit sous la main et pouvoir faire des tests.


Ca je peux le faire sans soucis
 

rat de combat a écrit :

Est-ce que tu t'y connais un peu en programmation, écriture héxadécimale/binaire et ce genre de choses?


De l'héxadecimale/binaire,vba, lua et même un peu d'ascii. si c'est autre chose, non, mais ça s'apprend non ?
 

rat de combat a écrit :

À première vue le format n'est pas trop compliqué, mais faudra certainement faire quelque essais pour les détails et pour ça faut au moins savoir se servir d'un éditeur héxa (voire savoir programmer si on ne veut pas tout faire à la main)...


Qui ne tente rien n'a rien, et là on peu pas casser le matériel.
 

rat de combat a écrit :

Chaque animation a un fichier .dat distinct, c'est bien ça?


Pas du tout, on a un seul fichier .dat pour le tout, et une quinzaine de programmes sont référencés dedans.
 

rat de combat a écrit :

Bon, ce qu'on peut dire après un regard rapide sur le produit et le fichier:  
En tête: Tout au début 0x AA 55 comme sur un Master Boot Record, certainement pour identifier le type de fichier. Plus loin E8 03 01, peut-être pour identifier l'animation ou alors c'est un checksum? Ensuite que des zéros qui viennent remplir le bloc de 512 octets. Ensuite vient frame par frame ("image" par "image" ) de l'animation toujours sur 512 octets et sur une adresse divisible par 512. Au début 5A 01 comme nombre magique d'un frame (identification), ensuite le numéro de l'image sur deux octets (à la suite 1,2,3). Ensuite toujours la même constante: CA B0 00.


Si tu le dis... je crois quej'ai un peu compris (mais un peu hein!)
 

rat de combat a écrit :

Ensuite l'état des LED sur 352 octets, quel hasard, le machin a 176 LEDs soit 2 octets de données par LED.


comme de par hasard, exactement le même nombre de led
 

rat de combat a écrit :

De loin sans l'appareil sous la main pour tester difficile d'en dire plus... Faut comparer, modifier, en tirer des conclusions etc, bref, tu travail de reverse-engineering quoi.


Ben il y a bien une première fois à tout (did ça c'est bien certain)
 

rat de combat a écrit :

edit: T'aurais pas une bonne vidéo pour cette animation / ce fichier là?


pour le plaisir des yeux et de la compréhension
 
 
edit de sshika :
J'ai modifier la seconde frame

Code :
  1. 5a 01 01 00 00 ca b0 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 ff ff 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 ff ff 80 00 ff ff 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 ff ff 80 00 80 00 80 00 ff ff 80 00 80 00 80 00 80 00 80 00 ff ff 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00


par la frame suivante

Code :
  1. 5a 01 01 00 00 ca b0 00 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 00 80 ff 80 ff 80 ff 08 ff 80 ff 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00


 
je testerais cet après midi, vu que je peut choisir quel effet je peux afficher a partir du boitier.

Message cité 1 fois
Message édité par Sshika le 30-12-2015 à 08:06:53

---------------
Petit cochon, petit cochon, laisse moi entrer, sinon je souffle et je souffle et je viens te botter les fesses!!
Reply

Marsh Posté le 30-12-2015 à 14:38:21    

Essaie plutôt de modifier des séries de frames en mettant toute une série de zones à une valeur donnée et une autre avec une autre, etc.
Ca te permettra de comprendre comment est fait le matriçage ligne/colonne hexa vs led, et de voir quel code hexa 16 bits correspond à quelle couleur.
Parce que là si tu as changé une seule frame tu verras juste un "flash" avec tes valeurs, ça sera trop bref pour en déduire qqch.

 

Tu peux jouer l'anim frame par frame sur ton truc ?
Eventuellement en faisant un fichier avec très peu de frame plutôt qu'une super longue animation ?
Ca sera mieux que garder l'intégralité et n'en changer qu'une comme tu as fait.
Par contre si le E8 03 01 de l'entête est une sorte de checksum ou d'indicateur de longueur l'appareil pourrait ne pas apprécier qu'on lui change sa longueur. Dans ce cas fais des séquences répétées de frames.

 

Tu as de la chance d'être tombé sur un format simple apparemment, l'entête ne contient quasiment rien, l'alignement est fait sur 512 bits (du coup 1/3 d'espace perdu !) et les débuts de frame ont un magic number. Ca rend la compréhension de la structure générale très simple, apres il faut juste voir le détail.

Message cité 1 fois
Message édité par TotalRecall le 30-12-2015 à 14:40:04

---------------
Topic .Net - C# @ Prog
Reply

Marsh Posté le 30-12-2015 à 14:47:29    

TotalRecall a écrit :

l'alignement est fait sur 512 bits (du coup 1/3 d'espace perdu !)


Non car dans le tier restant est utilisé pour l'intensité des leds.
 
normalement quand on le pilote en dmx (protocole de controle des jeux de lumière), on utlise des canaux, et chaque canal possède 256 pas.
un canal pour le rouge, un pour le vert, un pour le bleu, un pour l'intensité....
on peut gérer la couleur de tout le panel via une matrice rvb 256x256x256.
un controle manuel (mais sur toutes les leds à la fois) permet de choisir 16 millions de couleurs par led.
mais il ne faut pas oublier que l'intensité est réglée sur 256 pas. donc je vais faire plusieurs tests cet après midi.
 
en programme, je pense que le nombre de couleur est limité, mais bon je verrais ça derrière.
 
je voulais essayer d'écrire "bonne année" en défilement.
donc j'ai commencé, et on verra si ça marche.
je vais essayer de voir si on peut modifier le nombre de frame par programme (j'y crois héhé)


---------------
Petit cochon, petit cochon, laisse moi entrer, sinon je souffle et je souffle et je viens te botter les fesses!!
Reply

Marsh Posté le 30-12-2015 à 16:21:40    


J'ai décodé les frames
 
Ca donne un truc comme ça
 
http://img15.hostingpics.net/pics/809762led3288.png
 
http://img15.hostingpics.net/pics/147726led2179.png
 
http://img15.hostingpics.net/pics/311531led2846.png
 
Par contre pour éviter tout problème de copyright, je les posterai pas toutes.
 

Reply

Marsh Posté le 30-12-2015 à 18:46:34    

Totoche17 a écrit :

J'ai décodé les frames


Comment as tu fais ? est-ce facile à faire ? peux tu m'expliquer comment tu as fais, ? avec quel logiciel ?

 

car je souhaiterais ecrire avec, et donc j'aimerais savoir quelle modif à faire, combien de frame par programme ai-je droit...
C'est super ce truc. Si je réalise un programme, ça pourrait me permettre de tester le programme ?
je te remercie.

 
Totoche17 a écrit :

Par contre pour éviter tout problème de copyright, je les posterai pas toutes.


Ok, de toute façon, ces programmes ne m'intéressent pas. Je ne pense pas qu'il y ai de copyright dessus, vu que chauvet nous auotrise à le modifier

 
Citation :

Conversation de M. GRESSIER Stéphane travaillant chez Chauvet
En effet comme vous le dites il y a une carte SD mais nous n'offrons pas la possibilité d'éditer.  Nous n'avons pas accès au logiciel pour faire les changements que vous voulez faire.  Nous avons eu dans le passé 1 ou 2 clients qui s'y connaissaient pas mal dans la matière et qui ont fait quelque changement.

 


Le Motion Drape et Motion Facade sont des produits catégorie DJ donc avec un prix de marché déterminé et application en conséquence, de ce fait nous n'offrons pas l'option de faire du "custom" ou de modifier pour l'usager.

 

Je vais essayer de voir si je peux me mettre en contacte avec ces clients passés et je vous en informerai.


Ce message veut dire qu'il ne le propose pas la possibilité de le modifier, vu qu'il est à prix fixe, et que ce n'est pas une option, mais il ne l'interdise pas pour autant, vu qu'ils ne m'ont pas dit vous n'avez pas le droit.

Message cité 1 fois
Message édité par Sshika le 30-12-2015 à 18:55:09

---------------
Petit cochon, petit cochon, laisse moi entrer, sinon je souffle et je souffle et je viens te botter les fesses!!
Reply

Marsh Posté le 30-12-2015 à 19:32:33    

Sshika a écrit :


Comment as tu fais ?  
 


 
juste en lisant les posts plus haut (j'exagère à peine)
 

Sshika a écrit :


 est-ce facile à faire ?


 
oui pour qui sait programmer un minimum  
 

Sshika a écrit :


peux tu m'expliquer comment tu as fais, ?  
 


 
en écrivant quelques lignes de code en C++
 

Sshika a écrit :


avec quel logiciel ?
 


 
Visual studio et une lib pour ecrire des images
 
 

Reply

Marsh Posté le 30-12-2015 à 19:32:33   

Reply

Marsh Posté le 30-12-2015 à 20:05:09    

Ok. de ce que moi j'ai compris, et arrete moi si je me trompe

  • Après les 512 premiers octets (qui serviraient d'infos pour la lecture du programme), les 2 premiers octets servent pour déterminer le début d'une frame.
  • les 3 suivants servent pour le numéro de la frame
  • ensuite on la même constante "ca b0 00". je ne sais pas à quoi elle sert. "b0" donne 176 comme le nombre de leds (volontaire ou hasard?), "ca" donne 202, et je ne sais pas à quoi ça correspond
  • les 176 octets suivants servent à programmer chaque led, mais dans quel ordre, je ne sais pas. de plus je me doute que 00 correspond à noir et ff a blanc, mais entre 2 je ne sais pas.
  • j'ai émis l'hypothèse que les 152 derniers octets servaient peut être à l'intensité des leds (moins probable a cause du 152 et non 176)
  • en même temps que j'écris, je cogite, pour revenir sur mon hypothèse de la led, il est possible que les 176 octets servent à la fois pour l'intensité, et pour la couleur (exemple le premier caractère hexadecimal pour l'intensité et le second pour la couleur, ou inversement)


Pourrais tu m'aider a réaliser ce que tu as fait ?
je n'y connais rien en c++ et en pour visual studio
La librairie que tu as utilisée est disponible ? si oui, où puis-je la trouver ? si c'en est une que tu a créé, est il possible de l'avoir ? j'imagine que ça doit etre très difficile pour un débutant ?
comme dis plus haut j'aimerais bien pouvoir l'utiliser afin de créer mes programmes de défilement de texte.


Message édité par Sshika le 30-12-2015 à 20:08:11

---------------
Petit cochon, petit cochon, laisse moi entrer, sinon je souffle et je souffle et je viens te botter les fesses!!
Reply

Marsh Posté le 30-12-2015 à 20:54:30    

Totoche17 a écrit :


J'ai décodé les frames
Ca donne un truc comme ça


Beau travail! :jap:

 

@sshika
Si tu ouvres le fichier dans un éditeur héxa tu vera la structure tout de suite, d'après ton dernier message tu as compris. Bien vu que 0xB0 correspond au nombre de LED, hasard ou pas il faudrait modifier le nombre et voir ce que dis/fais ton machin à LED.

 

Pour les LED on voit clairement qu'il y a deux octets succéssifs par LED et non d'abord la couleur puis l'intensité. Si je devrais deviner je dirais que c'est le format RGB565: 5 bits rouge, 6 bits vert, 5 bits bleu. à confirmer.

 

Si tu ne connais pas le C++ tu n'iras pas loin, c'est un language (à mon avis) très complexe. Décortiquer voire plus tard modifier le fichier doit être faisable avec à peu près n'importe quel language, tu parlais de VBA ou de LUA, à ta place j'utiliserais un des deux puisque tu sembles connaître.

 

Ce que personnellement je ne comprends pas: Tu dis qu'il y a un seul fichier .dat qui contient une quinzaine de programmes, chaqun composé sans doute de plusieurs frames/images. Dans le fichier on retrouve bien ces frames/images, mais je ne vois rien qui indique quels frames correspondent à quel programme. :??: Genre des infos "programme 1 qui fait ceci et cela est composé des frames 32 à 49" ou dans chaque frame "ce frame est utilisé pour le programme 7".

Message cité 1 fois
Message édité par rat de combat le 30-12-2015 à 20:58:18
Reply

Marsh Posté le 30-12-2015 à 21:03:31    

Je ne sais pas, sur la sd en tout cas il n'y a que ça, mais sans la sd, le rideau n'affiche rien.
le fichier "led252.DAT" est la seule chose de présente sur la SD
 
Je suppose que les programmes utilise des plages de tant de frame comme tu le dis.
 
c'est pour ça que j'aurai bien voulu avoir le même programme qu'a fait Totoche17, ça m'aurait permis de bidouiller le fichier et de voir quel paramètre à quel effet sur quelle led sans avoir besoin de monter le rideau (parce que 3x2 dans l'appart j'ai pas la place :pt1cable: )
demain il sera monté à partir de 14h, donc je vais pouvoir le modifier, mais je n'aurai pas d'accès au net.
 
le truc du codage, c'est que ce soit en vba ou lua ou c++, qu'a t'il fait ? et je me débrouille à faire 3-4 truc en vba et des pseudos programme pour opencomputers pour minecraft(...), je pense pas que ce qu'il a fait est facilement reproduisible, et même avec le modèle, je suis pas sur d'y arriver.


---------------
Petit cochon, petit cochon, laisse moi entrer, sinon je souffle et je souffle et je viens te botter les fesses!!
Reply

Marsh Posté le 30-12-2015 à 21:43:53    

rat de combat a écrit :


 
Pour les LED on voit clairement qu'il y a deux octets succéssifs par LED et non d'abord la couleur puis l'intensité. Si je devrais deviner je dirais que c'est le format RGB565: 5 bits rouge, 6 bits vert, 5 bits bleu. à confirmer.


 
En fait j'ai aucune certitude sur le codage utilisé.
 
En examinant le fichier de plus près, on voit que la plus petite valeur des 2 octets est 80 00 (octet de poids fort à gauche)  
80 00 => correspond au noir ?
FF FF => correspond au blanc ?
 
Chaque couleur primaire est codée sur 5 bits.


Message édité par Totoche17 le 30-12-2015 à 21:44:11
Reply

Marsh Posté le 30-12-2015 à 22:23:12    


 
J'ai crée un fichier .dat pour tester.
 
https://1fichier.com/?4k10crq6k4
 
Si mon décodage est correct, on devrait avoir ça en animation (ce sont des drapeaux, aucun intérêt pour faire la fête  :D ) :
 
https://www.youtube.com/watch?v=0aPCkXgK0PQ
 

Reply

Marsh Posté le 30-12-2015 à 22:27:12    

J'essayerai ça demain sur le rideau. je te remercie pour ce programme d'essai.


---------------
Petit cochon, petit cochon, laisse moi entrer, sinon je souffle et je souffle et je viens te botter les fesses!!
Reply

Marsh Posté le 30-12-2015 à 23:00:11    

Totoche17, tu veux bien faire passer le premier frame (Offset 0x200 dans le fichier led252.dat) à travers ton programme et poster l'image? Ou indiquer les offsets des frames pour lesquels tu as postés les images? J'essaye de bricoler un truc moi-aussi mais les résultats ne sont pas concluants pour l'instant...

Reply

Marsh Posté le 30-12-2015 à 23:11:18    


Voilà
 
http://img15.hostingpics.net/pics/548405led0001.png
 
Le numéro de la frame c'est les 4 derniers chiffres des noms des images que j'ai posté

Reply

Marsh Posté le 31-12-2015 à 00:31:32    

Merci! Bon, j'arrive à reproduire les figures comme toi, sauf pour les couleurs... Je vais attendre le test en vrai avant d'investir encore plus de temps. Bonne nuit...


Message édité par rat de combat le 31-12-2015 à 00:31:46
Reply

Marsh Posté le 31-12-2015 à 06:00:02    

Totoche, en prenant comme référence un tableau excel pour la position des leds, soit de "A1" à "P11", peux tu me dire s'il te plait comment elle sont classées dans le fichier ? sur les 2 octets lequel correspond à la couleur et lequel à l'intensité ? si je te passe un fichier, pourrais-tu le tester ? et vu que tu à décoder le fichier, combien de frame comporte un programme ?
le fichier que tu as fournis ? je peux le renomé en led252.DAT pour directement le tester ? ou il faut que j'intègre ce code dans le fichier existant ?
Merci.


---------------
Petit cochon, petit cochon, laisse moi entrer, sinon je souffle et je souffle et je viens te botter les fesses!!
Reply

Marsh Posté le 31-12-2015 à 09:34:57    


Sshika a écrit :

peux tu me dire s'il te plait comment elle sont classées dans le fichier ?


 
Ligne par ligne c'est quasi certain, de gauche à droite et de haut en bas peut être j'en sais rien, faut comparer avec le mur de led.
 

Sshika a écrit :

sur les 2 octets lequel correspond à la couleur et lequel à l'intensité ?


 
C'est du RVB, y'a pas d'intensité, encore une fois j'ai aucune certitude, faut voir le truc réel.
 

Sshika a écrit :

combien de frame comporte un programme ?


 
tu divises la taille totale du fichier par 512
 

Sshika a écrit :

le fichier que tu as fournis ? je peux le renomé en led252.DAT pour directement le tester ?


 
oui
 

Reply

Marsh Posté le 31-12-2015 à 17:55:22    

Totoche17 a écrit :


Ligne par ligne c'est quasi certain, de gauche à droite et de haut en bas peut être j'en sais rien, faut comparer avec le mur de led.

 

Plutôt colonne par colonne non? C'est en tout cas ainsi que tu as interprété les données (et j'ai fait de même).

 

Autrement dit: Les deux premiers octets c'est la LED en haut à gauche, ensuite celle en dessous, etc, puis la deuxième colonne et ainsi de suite, jusqu'à en bas à droite. Les animations semblent correctes ainsi mais finalement tout ça ce sont des suppositions à confirmer.

 

Pour les couleurs effectivement faut tester sur le matos réel.

 
Totoche17 a écrit :


tu divises la taille totale du fichier par 512


et tu retires 1 à cause de l'en-tête (les 512 premiers octets du fichier).

 

D'ailleurs le dernier frame à un nombre magique différent: 00 55 à la place de 5A 01.

Message cité 1 fois
Message édité par rat de combat le 31-12-2015 à 19:02:01
Reply

Marsh Posté le 31-12-2015 à 18:21:26    

rat de combat a écrit :


 
Plutôt colonne par colonne non? C'est en tout cas ainsi que tu as interprété les données (et j'ai fait de même).
 


 
exact

Reply

Marsh Posté le 31-12-2015 à 19:28:17    

Pour les couleurs, c'est codé sur 5 bits/couleur plus un bit qui sert peut être pas (il me semble être toujours a 1, mais j'ai pas vérifié [EDIT: j'ai vérifié]).
Pour les 132 premières frames (en comptant pas la première), on a les deux patterns 1-11111-11111-11111 et 1-00000-00000-00000 uniquement, donc blanc et noir)
Si on regarde la Frame 133 on a des patterns intéressant (permettant de voir que c'est bien 5 bits par couleur):
1-11111-11111-00000,  
1-11000-11000-00000,  
1-11000-00000-00000,  
1-10000-00000-00000,
1-01000-01000-00000,
1-11111-00000-00000,
1-00000-11111-00000,
1-00000-10000-00000,
1-10000-10000-00000,
1-00000-01000-00000,
1-00000-11000-00000,
1-01000-00000-00000
(et frame 146 on a le pattern 1-00000-00000-10000, et frame 148 le pattern 1-00000-00000-11111 pour compléter)
C'est peut être un hasard, mais la valeur 10111 n'est jamais employée pour coder une couleur dans le fichier exemple (les 31 autres valeurs si).
A+,


Message édité par gilou le 31-12-2015 à 20:19:58

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 31-12-2015 à 20:07:22    

+1 pour gilou, c'est ce que j'allais dire...

Reply

Marsh Posté le 03-01-2016 à 15:52:09    

OK. bon les tests sont positifs. totoche17, le fichier que tu m'a donné est ok. il fonctionne nickel (bon j'ai pas inspecté led par led) mais ça marche.
bon ben je vais tester des fichiers en rentrant manuellement chaque ligne de code (je sais pas faire autrement ^^')
 
donc collone par colonne et non ligne par ligne.... hum j'ai du boulot.


---------------
Petit cochon, petit cochon, laisse moi entrer, sinon je souffle et je souffle et je viens te botter les fesses!!
Reply

Marsh Posté le 03-01-2016 à 16:51:40    

Sshika a écrit :

hum j'ai du boulot.


 
C'est un truc comme ça que tu veux faire ?
 
https://www.youtube.com/watch?v=NBv-GUSzhdg
 
bon courage pour faire ça à la main ...  :whistle:  
 
 
 

Reply

Marsh Posté le 03-01-2016 à 16:53:00    

Ben disons que je vois pas comment le faire autrement.
je sais pas faire comme vous...


Message édité par Sshika le 03-01-2016 à 17:02:09

---------------
Petit cochon, petit cochon, laisse moi entrer, sinon je souffle et je souffle et je viens te botter les fesses!!
Reply

Marsh Posté le 03-01-2016 à 17:35:05    


Par curiosité, tu as utilisé quel(s) outil(s) pour faire cette vidéo? D'ou vienent les lettres (le "font" comme on dit en anglais)?
Personnellement j'ai décodé le fichier avec du C et GD comme librairie pour la partie image.
 
@sshika
A moins d'avoir une patience extraordinaire tu t'en sortira pas à la main. Si tu ne sais pas programmer un outil complet essaye au moins de semi-automatiser le procéssus avec du Excel ou je ne sais quoi. Tu veux faire quoi exactement?

Reply

Marsh Posté le 03-01-2016 à 17:53:38    

rat de combat a écrit :


Par curiosité, tu as utilisé quel(s) outil(s) pour faire cette vidéo? D'ou vienent les lettres (le "font" comme on dit en anglais)?
Personnellement j'ai décodé le fichier avec du C et GD comme librairie pour la partie image.
 
@sshika
A moins d'avoir une patience extraordinaire tu t'en sortira pas à la main. Si tu ne sais pas programmer un outil complet essaye au moins de semi-automatiser le procéssus avec du Excel ou je ne sais quoi. Tu veux faire quoi exactement?


je veux pouvoir ecrire des textes.
et j'aimerais le faire moi-meme car en fonction des évènement ça peut changer (prénom, année...). vous avez réussi, je peux espérer de peut etre y arriver.
j'utilise déjà excel avec ce fichier
j'utilise Frhed pour editer le fichier à la main, mais le copier coller excel ne fonctione pas, car il veut absolument copier les données en ascii et non directement en tant que valeur.  
de plus je ne connait pas le code couleur (ou plutot je ne comprends pas comment il fonctionne), et résultat je coince


---------------
Petit cochon, petit cochon, laisse moi entrer, sinon je souffle et je souffle et je viens te botter les fesses!!
Reply

Marsh Posté le 03-01-2016 à 18:06:25    

Sshika a écrit :


j'utilise déjà excel avec ce fichier


Impressionant (surtout le temps de chargement sur mon vieux PC...), c'est toi qui a fait ça?
 

Citation :

de plus je ne connait pas le code couleur (ou plutot je ne comprends pas comment il fonctionne), et résultat je coince


Ca c'est facile: C'est de la Synthese additive (un mot bien compliqué pour un principe tout simple). L'intensité de chaque couleur primaire (rvb) est codée sur 5 bits, soit 32 états de 0 à 31. Dans ton fichier .dat ces bits (3*5 + 1 bit toujours à '1') forment des données 16 bit.
exemple de décomposition (merci gilou):
nos deux octets en héxa: 0xE300
en binaire on a 1110001100000000
soit en décomposant 1-11000-11000-00000
soit le rouge avec l'intensité 12/32 (2**5=32), le vert aussi 12/32 et pas de bleu.

Reply

Marsh Posté le 03-01-2016 à 18:36:08    

rat de combat a écrit :

Impressionant (surtout le temps de chargement sur mon vieux PC...), c'est toi qui a fait ça?


Ben oui y a rien d’exceptionnel à ça. je trouve même que c'est pas optimisé.
le fichier est à l'envers, mais ça va pas etre long à changer.
 

rat de combat a écrit :

Citation :

de plus je ne connait pas le code couleur (ou plutot je ne comprends pas comment il fonctionne), et résultat je coince


Ca c'est facile: C'est de la Synthese additive (un mot bien compliqué pour un principe tout simple). L'intensité de chaque couleur primaire (rvb) est codée sur 5 bits, soit 32 états de 0 à 31. Dans ton fichier .dat ces bits (3*5 + 1 bit toujours à '1') forment des données 16 bit.
exemple de décomposition (merci gilou):
nos deux octets en héxa: 0xE300
en binaire on a 1110001100000000
soit en décomposant 1-11000-11000-00000
soit le rouge avec l'intensité 12/32 (2**5=32), le vert aussi 12/32 et pas de bleu.


euh ouais ok.
donc en gros on a 32 pas de rouge, 32 de vert et 32 de bleu.
après faut que je voie si je peut le mettre sur excel. à voir.
après si l'un d'entre vous à le courage de m'expliquer pas à pas en passant par visual studio.


---------------
Petit cochon, petit cochon, laisse moi entrer, sinon je souffle et je souffle et je viens te botter les fesses!!
Reply

Marsh Posté le 03-01-2016 à 19:38:57    

rat de combat a écrit :


Par curiosité, tu as utilisé quel(s) outil(s) pour faire cette vidéo? D'ou vienent les lettres (le "font" comme on dit en anglais)?
Personnellement j'ai décodé le fichier avec du C et GD comme librairie pour la partie image.


 
OpenCV pour la partie image  
ffmpeg pour générer la vidéo à partir des images
Les fontes viennent de http://derelllicht.com/led.matrix.html

Reply

Marsh Posté le 03-01-2016 à 20:06:59    


Sshika a écrit :


après si l'un d'entre vous à le courage de m'expliquer pas à pas en passant par visual studio.


 
Euh ..., là, comme ça en 5 min ?  :whistle:  
 
Un conseil apprend d'abord le C/C++

Reply

Marsh Posté le 03-01-2016 à 20:09:38    

euh non je pensais pas en 5minutes.
je me doute bien que c'est énorme à faire. je vais voir ce que je peux trouver et apprendre.
mais perso j'ai pas trop envie de me mettre au visual studio.
faudrait voir pour convertir un morceau de texte de excel en hexa pour le frhed


---------------
Petit cochon, petit cochon, laisse moi entrer, sinon je souffle et je souffle et je viens te botter les fesses!!
Reply

Marsh Posté le 03-01-2016 à 20:16:29    

Sshika a écrit :


je me doute bien que c'est énorme à faire.


 
Non c'est pas énorme, ça peux même tenir en 2, 3 phrases à condition que tu comprennes de quoi on parle.
Si t'as pas les bases en C/C++, c'est même pas la peine, tu comprendras rien aux explications.
 

Reply

Marsh Posté le 03-01-2016 à 20:21:55    

et bien tu sais quoi ? qui ne tente rien n'as rien.
si tu as bien la gentillesse de le faire, je veux bien tenter quitte à me mettre le cerveau à l'envers :pt1cable: .
j'ai mis à jour le fichier
j'y ai rajouter le choix de la couleur


---------------
Petit cochon, petit cochon, laisse moi entrer, sinon je souffle et je souffle et je viens te botter les fesses!!
Reply

Marsh Posté le 03-01-2016 à 20:55:30    

Je réitère le conseil donné plus haut, apprend le C pour commencer.
 
Quand tu maitriseras, tu verras, ça te paraitra tellement naturel d'écrire les quelques lignes de code nécessaires que t'auras même plus besoin de mes explications.
 
 
 

Reply

Marsh Posté le 03-01-2016 à 21:14:32    

je verrais si j'ai la patience de perdre du temps là dessus, car je suis très chargé vis à vis.


---------------
Petit cochon, petit cochon, laisse moi entrer, sinon je souffle et je souffle et je viens te botter les fesses!!
Reply

Marsh Posté le 03-01-2016 à 23:41:39    

Citation :

après si l'un d'entre vous à le courage de m'expliquer pas à pas en passant par visual studio.


Pour du VisualBasic ou du C(++)? Le premier je ne connais pas, le problème peut certainement être résolu avec mais je doute que ce sois faisable en cinq minutes. Pour le C comme disais Totoche17 faut avoir des bases solides sinon tu n'iras pas loin. Malheureusement le C ce n'est pas un language qu'on apprends en quelque heures, il y a pas mal de petits détails et de failles à connaître.
En plus "quelques lignes de code" ça me paraît optimiste, enfin ça dépends de ce qu'on entends par "quelque"... J'ai passé la soirée à bricoler une version très basique (noir et blanc, pas de GUI, pas de gestion d'erreurs) d'un programme qui crée un .dat avec du texte défilant. Sans la définition du font ça tient en 88 lignes de code, mais c'est vraiment basique. Si on veux un "vrai truc" avec GUI et couleurs il y a du boulot!!

 

(Pour le font je me suis servi ici puis j'ai bricolé un bout de Perl qui traduit un fichier .bdf en code C. Les caractères accentués ne fonctionnent pas mais c'était pour tester à défaut de trouver plus simple à utiliser.)


Message édité par rat de combat le 03-01-2016 à 23:52:46
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed