lundi 28 juillet 2014

Image Magick - Faire un tableau d'image

Image Magick
Faire un tableau d'image

Image Magick est une suite d'outils de traitement d'images formidable.
Cette suite est accessible ici : http://www.imagemagick.org

Afin de créer des tableaux de photos, j'ai fait un petit script python que voici:

import os

def strFor(strObj):
    return strObj.replace('[','').replace(']','').replace('\'','').replace(',','')

l = os.listdir()
r = []
counter=0
for x in l:
    if '.JPG' in x:
        r.append(x)
        if len(r) == 10:
            counter = counter + 1
            print('convert -label "%%f" '  + strFor(str(r)) + ' -frame 10x5+3+0 miff:- | montage - -tile 5x2 -frame 5 -geometry "512x512+5+5>" thumb{}.png'.format(counter))
            r = []

if len(r)>0:
    counter = counter + 1
    print('convert -label "%%f" '  + strFor(str(r)) + ' -frame 10x5+3+0 miff:- | montage - -tile 5x2 -frame 5 -geometry "512x512+5+5>" thumb{}.png'.format(counter))
Ce script permet de créer un second script (ici un batch windows) qui va permettre d'exécuter les commandes convert et montage de la suite Image Magick pour créer des tableaux de 5x2 images.

Les commandes convert et montage doivent être dans le PATH.

Pour faire une conversion de png vers jpg: mogrify -format jpg *.png
ATTENTION: mogrify remplace le fichier original.

mercredi 9 juillet 2014

Émuler un port de communication RS232 sur Linux et le lier à TCP/IP



Article intéressant pour comprendre les ports série sous linux : http://pficheux.free.fr/articles/lmf/serial/



1 - Solution à essayer avec Socat :
socat -d -d PTY,ignoreeof,echo=0,raw,link=f1 PTY,ignoreeof,echo=0,raw,link=f2 &

options :
-d -d : affiche les messages fatal, erreur, warning et notice
PTY : ouvre un pseudo terminal (pty)
ignoreeof : ne ferme pas le 'tunnel' si eof est rencontré
echo=0 : ???
raw : à priori, passe les infos input/output sans traitement (pas de mode canonique => pas d'attente de line feed [LF] pour envoyer/recevoir les caractères)
link=f1 : nomme le lien f1

La solution 1 fonctionne en faisant :
- la commande
- puis deux terminaux
- dans l'un : cat f2
- dans l'autre cat «<fichier> > f1


Utilisation de minicom

Une fois installé, minicom est simple d'utilisation. Il faut le lancer avec -s afin d'obtenir un écran de configuration qui permette de configurer le port série à utiliser et beaucoup d'autres options.

En démarrant minicom dans deux terminaux indépendant et sur les /dev/pts/12 et 14 (selon liens proposés sous f1 et f2), nous pouvons communiquer en liaison série entre les deux minicom.

Essai de lier une interface TCP/IP à un port série

socat -d -d PTY,ignoreeof,echo=0,raw,link=f1 TCP-LISTEN:22021,ignoreeof

Cela fonctionne ensuite en utilisant minicom d'un côté :
minicom -p /dev/pts/12

et netcat de l'autre :
netcat 127.0.0.1 22021

Essai de lier une interface TCP/IP à un device système (/dev/urandom)

socat -d -d /dev/urandom TCP-LISTEN:22021,ignoreeof

et netcat de l'autre :
netcat 127.0.0.1 22021

Essai pour lier une RS (ex /dev/ttyS0) existante à un port TCP/IP:

socat -d -d /dev/ttyS0 TCP-LISTEN:22021,ignoreeof

attention: il faut au préalable configurer la liaison série par exemple avec stty

Des exemples intéressants :
A cette adresse des exemples intéressants d'usage de socat :