Archive

Articles taggués ‘programmation’

Arduino: un succès embarqué

19/02/2012 2 commentaires

Qu’est ce qu’est Arduino?

Une plateforme de développement hard et soft, souple, bon marché, aux sources multiples, facile à mettre en oeuvre, bien documentée, bref l’environnement idéal pour débuter dans le domaine de l’embarqué (embedded in english). Vous désirez utiliser de l’électronique et de la microprogrammation? Piloter un moteur, activer un buzzer? afficher des informations, lire une température, une pression? C’est de prime abord passablement difficile.

Il faut se farcire des datasheet éprouvantes, souvent en anglais. Faire un schéma des composants qui tienne la route. Sortir le fer à souder, picots, circuit imprimé, ou pour le moins câbler (sans se tromper!) des chips et autres composants pas facile à appréhender, poser des connecteurs. Choisir une alimentation.

Ce n’est pas fini: il faut aussi trouver un environnement de développement: en assembleur (pas de chance! On se retappe des liste d’opcodes et on cherche les registres du processeur et leurs multiples finesses) en BASIC ou en C. Puis il faut se documenter comment produire le code exécutable et le charger dans la mémoire de la cible que vous aurez sélectionnée. Avec un peu de chance, on trouve des exemples de code qui résolvent notre problème: mais là encore, il faut adapter, voire fortement modifier le code pour que ce soit compatible avec notre montage.

Arduino standardise tout ça et le rend accessible rapidement: hard, soft, exemples Voyons comment.

La plateforme hardware

Commençons par voir ce qui se fait au point de vue du matériel. La carte processeur est faite autour du microcontrôleur Atmel AVR. La carte de base classique est la Arduino Uno.

Arduino Uno

On en trouve de nombreuses déclinaisons, dont celle mise au point par le Professeur Nicoud, la Diduino (http://didel.com) basée sur le modèle ATmega328, un modèle RISC de 8 bits à 20 MHz (voir: http://www.atmel.com/devices/ATMEGA328.aspx pour les détails). Car c’est possible de fabriquer soi-même une carte compatible Arduino: http://arduino.cc/en/Main/Policy. La carte Diduino possède un bloc d’expérimentation, elle est livrée avec un set de composants pour tester des montages.Diduino

Suivant le but du montage, on peut choisir une autre déclinaison du board CPU: le modèle Mega, Lyli Pad, le Nano, ou le Mini, voir d’autres dérivations de fabricants imaginatifs.

Des extensions, dénommées  »shield », peuvent être rapportées sur la version de base pour y ajouter, Bluetooth, Ethernet, Flash card, commande de moteurs. Bref un joli pannel d’interfaces possibles. Les modules d’origine des différentes versions de l’Arduino sont fabriqués par la société italienne Smart Projects. Mais oui, les concepteurs d’Arduino sont italiens!

L’environnement soft

Installation

L’environnement de développement se charge depuis le site officiel: http://arduino.cc/en/Main/Software. C’est assez lourd: 70 Mb, et une fois décomprimé, c’est 232 Mb. Par contre vous pouvez déplacer le répertoire arduino-1.0 ou bon vous semble, voire sur une clef USB: il se lancera sans problème. Comme il est écrit en Java, il tourne sur les trois OS phares: Windows (32 et 64 bits), Linux, Mac. Il est basé sur Processing et contient le compilateur avr-gcc, ainsi qu’une panoplie de softs Open Source.

Une fois arduino.exe lancé, le développement proprement dit se fait dans des modules appelés « sketch ». Voici à quoi cela ressemble.

Sketch

Sketch

La barre des menus est suivie d’icônes, permettant de faire son développement: valider le code, le charger, créer un nouveau Sketch, charger et enregistrer. Le source, en C/C++ est introduit dans la fenêtre texte. La partie code montre une syntaxe à peine colorée: les mots-clefs reconnus sont en brun. Le Sketch est sauvé dans un répertoire du nom du projet, et le fichier de même nom prend l’extension « .ino »; c’est en fait le fichier source à l’identique, sans fioriture, éditable et copiable p. exemple avec Notepad++.

Une fenêtre inférieure montre le résultat des différentes commandes: ici celui d’une compilation réussie. Des erreurs seraient écrites en rouge.

Les paramètres de transfert sont réglés par le choix de la cible, et le port série à utiliser. Ici: Atmega328 et COM11.

De manière générale, le programme est constitué d’une fonction d’initialisation setup(), et d’une boucle infinie loop(). Elles constituent une surcouche du C qui habituellement appelle le programme principal par la fonction main().

Vous trouverez une introduction pratique plus détaillée sur le site de notre HB9 préféré, Michel Vonlanthen, ici: http://www.von-info.ch/hb9afo/arduino/main.htm

Parmi un foultitude d’exemples de programmation, la base consensuelle et universelle est toujours le clignotement d’une LED, alimentée par une patte de sortie du CPU via une résistance de quelques kilo-Ohms. Le programme consiste à : positionner la sortie à l’état haut, attendre, positionner à l’état bas, attendre, et boucler ad aeternam. Ensuite, on peut compliquer à souhait en testant un bouton, en attendant une valeur, en écrivant sur le port sériel, en pilotant un moteur, etc, etc!

Or l’exemple ci-dessus montre l’utilisation d’une technique fort avancée: l’utilisation de l’interruption. On en discute plus bas.

Chargement et éxécution

Le programme est fait, la cible connue (type de circuit Arduino ATmega328) , il faut maintenant charger le programme. Diduino (et d’autres…) proposent la connexion USB. Celle-ci, non seulement alimente la carte – tant qu’on ne lui ajoute pas de moteurs ou de relais qui demande de la puissance – ouvre une connexion série. Autant sous Windows que Mac, il faut installer le pilote adéquat. La version la plus simple est de laisser Windows « chercher le pilote adéquat »; sinon, il faut le faire à la main. Les pilotes sont dans le répertoire: \arduino-1.0\drivers\. Ou directement du fabricant,  FTDI, a disposition ici: http://www.ftdichip.com/Drivers/VCP.htm.

Un fois la fiche USB connectée, le pilote Windows se montre: Start -> Périphérique et imprimantes -> Non spécifié(e)s

UART

Malgré l’installation réussie du pilote, du paramètre Tools -> Serial Port (et le choix du bon n° de seriel), il se peut que ça ne fonctionne pas. A titre indicatif, sur 2 PC différents j’ai expérimenté:

- Pas de recherche automatique de Windows 7: il m’a fallut indiquer où se situe le pilote sur le bon répertoire, et l’installer. Tout a fonctionné parfaitement

- Recherche automatique: Windows recherche le pilote, l’installe.

Par contre à l’utilisation, des soucis de menu: il met 18 secondes pour se développer! La programmation patine aussi, avec le message sibyllin suivant: avrdude: stk500_getsync(): not in sync: resp=0×00. Un driver corrigé s’adresse à ce problème, ici: http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1237179908. Il appert que la DLL qui scrute les ports série les énumère à tout coup et attend leur time-out… Suite au remplacement de la DLL : rxtxSerial.dll, tout fonctionne bien sur mes deux PCs.

Il faut donc persévérer et rechercher sur le WEB une solution.

La souplesse et l’exemple

La force de l’ensemble Arduino est d’offrir d’une part un matériel défini, puisque même les sources d’autres constructeurs « collent » aux spécifications des originaux; en offrant bien entendu plus de ports, ou un processeur plus puissant. Et d’autre part, un ensemble logiciel préparé et épuré pour programmer la cible. Le choix du C/C++ est à mon avis fort judicieux: ce langage permet de compiler du code très efficace et proche de la machine.

NDA: je suis un peu plus dubitatif avec le C++. Vu la taille mémoire à disposition, on ne voit pas trop comment des instanciations d’objets ou des templates un peu compliquées auraient leur place. Mais comme à l’heure d’écrire ces lignes je n’ai que pratiqué des petits exercices, cela pourrait changer à l’avenir.

Il vaut la peine de se pencher un peu plus sur ce programme d’interruption, pour montrer la souplesse et la puissance d’abstraction des librairies Arduino. Comment est gérée une interruption? Pour répondre à une requête d’interruption, le processeur devra (source Wikipédia) :

  • préserver le contexte d’exécution du programme en cours afin de pouvoir, à terme, en reprendre l’exécution ;
  • lire en mémoire l’emplacement du programme destiné à gérer l’événement particulier (appelé gestionnaire d’interruption ou routine de gestion d’interruption), pré-établi lors de la prise en charge, par l’ordinateur, de l’ensemble spécialisé ici, par la routine start();
  • exécuter la routine, court programme grâce auquel le processeur interagira avec l’ensemble spécialisé qui le sollicite afin de satisfaire ses attentes ;
  • restaurer le contexte d’exécution du programme interrompu ; et enfin
  • continuer à exécuter ce dernier.

On le voit, ce mécanisme est aussi complexe que délicat à mettre en oeuvre. Eh bien, avec Arduino, on initialise l’interruption en une fonction de 3 paramètres: attachInterrupt(0, irq_func, FALLING); . Ceci a pour effet de lier lorsque l’interruption hardware n°0 est déclenchée, d’appeler la routine d’interruption ici réalisée par la fonction « irq_func() », sur un flanc descendant. Les autres possibilités étant: flanc montant, état haut, état bas. Le fameux flanc descendant est activé lorque la LED rouge s’eteint, car on aura pris soin de relier cette sortie n°13 sur la patte n°2 qui est effectivement l’entrée d’interruption 0.

La fonction d’interruption se contente d’inverser l’état de la LED jaune, ce qui fait qu’elle clignote à une fréquence de moitié de la LED rouge. Avec l’environnement de développement viennent de nombreux exemples didactiques de programmation : \arduino-1.0\examples\, et bien sûr sur le site officiel: http://arduino.cc/en/Tutorial/HomePage.

Les fonctions dédiées et librairies

Il est clair que le C pur ne suffit pas – a vrai dire, le C pur n’existe pas! Ce langage s’applique a quasi tous les CPU, du 8 bit au 64 bits (voir plus?) et un montage 8 bits n’a pas les mêmes possibilités qu’un système multicoeurs. Pour chaque implémentation, il y a des fonctions dédiées qui permettent d’utiliser toutes les finesses du système. Arduino a aussi les siennes, sur le WEB ici: « langage reference« , en local dans /arduino-1.0/reference/index.html.

On y trouve notamment les possibilités de positionner directement et efficacement une patte à 0 ou à 1, de la lire, par respectivement digitalWrite() et digitalRead(). Plus exotique, la fonction qui permet de moduler une largeur d’impulsion (PWM, Pulse Width Modulation) s’appelle analogWrite(), en décalage par rapport à analogRead(), qui fait elle fait une vraie conversion analogique -> numérique (A/D: Analog -> Digital). C’est bien sûr dépendant des possibilités du CPU.
Des librairies sont également à disposition http://arduino.cc/en/Reference/Libraries. Il s’agit des les importer pour pouvoir en utiliser les fonctions. Celles-ci d’adressent à du matériel (EEPROM, LCD, cartes SD) ou des protocoles souvent utilisés (Serie, Ethernet, SPI).

Du hard et du soft, un cours très complet

Le document ci-dessous est une large représentation de réalisations Arduino. Mais constitue aussi un cours complet de mise en oeuvre, qui explore toutes les facettes en partant de l’électronique, de la réalisation pratique avec des maquettes dessins, schémas. En français, s’il vous plaît.
http://fr.flossmanuals.net/_booki/arduino/arduino.pdf

Des fournisseurs

Pour débuter et tester, la carte Diduino, elle est idéale.

Les indications ci-dessous m’ont été communiquées par M. Frédéric Benninger, donc pas (encore) testées personnellement.

Le Seeeduino Starter Kit Standard[Shop.boxtec.ch] vise le même but, mais elle pourra par la suite être réutilisée dans un produit fini. Pour ceux qui visent une application dédiée, cela dépend de la taille du projet et du type d’alimentation envisagée. Par exemple en modélisme le Seeeduino Film est un must, seulement quelques grammes, elle est livrée avec une petite batterie et le régulateur de charge pour panneaux solaires est inclus.

Pour faire une application qui a besoin de gérer une horloge calendaire, par exemple à des fins d’ d’acquisition de données, le Seeeduino Stalker est parfait, il intègre une RTC et un emplacement pour carte micro SD.

Voici encore des châssis [www.sparkfun.com] pour les bricoleurs, sans oublier des boîtes [shop.boxtec.ch] pour mettre en valeur le fruit du travail fourni.

Des références

LE site de référence: Arduino.cc

Wikipédia: http://fr.wikipedia.org/wiki/Arduino

Liste de discussion (Suisse) : http://fr.groups.yahoo.com/group/arduino_suisse/


C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email

Python avec l’environnement PyCharm

03/01/2012 un commentaire

Installation et 1ère prise en main

L’environnement PyCharm, de Jetbrains (http://www.jetbrains.com/pycharm/) est prévu pour la programation, test, debug et déployement en Python. Le fichier téléchargé pour l’installation pèse env.80 MB. Elle se fait sans problème, pas besoin de redémarrer Windows. Avant de le lancer, il faut avoir un (ou plusieurs) interprèteur(s) Python installé(s). Dans mon cas, j’ai la version 2.7.2.

Au lancement, PyCharm vous demande lequel vous utilisez, afin de l’analyser et l’indexer. Ce qui prend pas mal de temps.

scann de Python

Si comme moi vous rangez vos projets Python dans un répertoire, il suffit d’indiquer à PyCharm avec lequel vous voulez travailler; il en fait un projet. Chaque fichier *.py du répertoire peut être démarré, Par contre, il faut le configurer en conséquence. Ci-dessous, le message: « Configure Python Interpreter », qui survient, la config étant accessible en tout temps via l’icône « clef à écrou » juste avant le « Help ».

Open dir
Ouvrir un projet

Disposition

Les fenêtres sont assez parlantes par elles même: Projet, Structure, Favorites, mais précisons qu’on peut les développer par Alt + n° de la fenêtre dans le layout, qui lui même est configurable et modifiable. Les fenêtres peuvent être Pined, Docked, Split ou encore Floating. Un double clic sur un nom de fichier du projet l’ouvre dans l’éditeur. Évidemment en syntaxe colorée. La structure correspondante apparaît et peut être développée. L’élément est représenté par un symbole coloré. On a v: variable, C: classe ou m: fonction (méthode, selon la terminologie PyCharm); si le symbole est cliqué, le curseur est positionné à l’endroit adéquat dans le fichier source. Celui-ci est encodé en utf-8 par défaut, PyCharm gère aussi le format de lignes Mac ou Unix.

Toutefois, j’ai été surpris par un fichier de config contenant des lettres accentuées au format ANSI Windows-1252 (et non utf-8 comme indiqué ci-dessous), il affichait de vilains losanges avec ‘?’.

codage win-1252

codage win-1252

Configuration

Reprenons les paramètres de lancement du module. Dans l’écran ci-dessus, le module chargé « det_an02″ est un programme simple, qui tient dans un seul fichier. Il faut qu’il soit déclaré « main » pour démarrer. Voyons donc la configuration, pas encore établie, donc avec un ‘x’ rouge.

Edit config
Editer la config

run_debug_conf

Par défaut, le nom de la config est celle du nom de fichier de script. Le plus souvent, si le module doit être testé, l’important est de fournir des paramètres en ligne de commande. Dans ce cas, se sont un fichier d’entrée à traiter « riponne20.txt » et celui de sortie « out3.txt ».

Pour lancer l’exécution,Logo Run la lancera en mode normal, tandis que Logo debug la lancera en mode « debug », dont le temps d’exécution est environ 10 fois plus grand.

Une fenêtre de l’interpréteur Python montre le résultat. Ou les erreurs de compilation, vu que le Python produit du byte-code. Un clic sur l’erreur amène l’édition à la ligne coupable.

Debugger

Le mode debugger est un point important d’un environnement de développement. Plutôt que d’envoyer des « print » aux points blocants du programme, PyCharm permet d’insérer des « break point » dans le code. Ou de lancer l’exécution jusqu’à la position du curseur dans le source. Ensuite, on peut suivre le déroulement en pas à pas, avec ou sans détailler les appels à des fonctions/méthodes, attendre le retour d’un fonction, voire un prochain « break point ». Il faut noter, cependant, un ralentissement considérable de l’exécution du programme!

Dès que le programme est suspendu, on peut changer au vol des variables, et procéder à l’évaluation d’expression, ce qui est utile dans des tests compliqués. Il suffit de faire une sélection partielle du code source et de le copier dans l’évaluateur pour en avoir le résultat.

Éditeur

L’éditeur est – nous l’avons vu – a coloration syntaxique. Ce n’est pas tout: il met automatiquement la parenthèse fermante si l’on en ouvre une, ainsi que les guillemets, crochets, etc, de ce qui va par paire. Ajouter un appel à la méthode d’une classe nous les propose et cette liste se réduit au fur et à mesure que les caractères sont tapés; on peut cliquer sur une des propositions pour la valider. La méthode acceptée, les paramètres nécessaires ou en option sont indiqués en suivant, mettant en gras le paramètre à introduire.

Aide à la rédaction

Dès qu’une ligne est en édition, ou si vous y posez le curseur, une lampe vient et vous propose une amélioration du code. Par exemple:

Aide redaction

C’est vrai qu’à l’instar de la ligne précédente, on pourrait écrire l’incrément de ‘duree’: duree += 1, ce qui est fait par un simple clic!

Une refactorisation des expressions dans une condition est parfois proposée plus compliquée que l’original, et n’amène rien:

Aide if

D’une manière générale, on peut lancer « Inspect code », et une liste de propositions d’améliorationn sera faite, classées par genre:

inspect code

L’édition est régulièrement sauvegardée dans un tampon qui mémorise les modifications apportées. On peut revenir sur nos dernières retouches (un bon millier est conservé) et les restituer à l’état précédent si besoin.

diff

Ceci a un coût: PyCharm a besoin de 160 à 270 Mb de RAM. Sur mon netbook, la mise en veille a un réveil bien lent. Il lui faut joliment 1 minute pour tout retrouver. En le démarrant depuis zéro, comme il prend par défaut le dernier projet, toujours sur mon netbook ça prend 1’35 : chargement du programme, chargement et analyse des fichiers (une barre de progression et les fichiers traités sont affichés), initialisation des fenêtres… arrive ensuite le pop-up « Tips of the day », soit une astuce ou conseil du jour, tandis-que la fenêtre « structure » se complète.

Productivité

PyCharm ne se laisse pas « avoir » par une modification de fichier extérieure, il a un oeil sur tout. Sa puissance est démontrée lors de modification tel le renommage d’une structure. Son nom n’est pas terrible, vous voulez le changer? Un clic droit dessus, et « refactor » permet de la renommer ou de la déplacer: toutes les références dans les différents sources sont mises à jour, même dans les commentaires!

refactor

Ceci est particulièrement bienvenu dans Python, car des erreurs dans un bloc qui passe rarement peuvent facilement passer inaperçues, jusqu’au jour ou la condition est remplie. Et l’erreur sort à l’éxécution. La limite du système se voit si vous utilisez un nom un peut trop général: PyCharm scannant tous les modules, il va vous en proposer un peut trop. Mais on peut facilement les exclure, et éviter de modifier par mégarde du code importé qui fonctionne.

Une fenêtre sympathique: Todo. Il suffit de mettre ce mot clef dans un commentaire de votre code, et vous pourrez en atteindre rapidement l’endroit:

todo

S’il y en a beaucoup, la présentation arborescente par fichier en facilite l’accès.

Mode interactif – console Python

Démarrer la console n’est pas – contrairement à ce qu’on peut s’y attendre – sous le menu « Run », mais sous « Tools ». Cette console permet – comme dans d’autres solutions – de rentrer une portion de code pour en tester la forme et les réactions. Les lignes entrées sont mémorisées, même après l’arrêt et le redémarrage de la console, voir du programme, ce qui permet d’y revenir facilement. De plus, la fenêtre « structure » montre les éléments introduits, comme pour un source Python.

Conclusion provisoire

Forcément provisoire… JetBrains est un éditeur plein de ressources, proposant plus d’une dizaine d’environnement. Les versions progressent rapidement et sont mise à jour en fonction non seulement des nouveautés, mais avec des fonctionnalités nouvelles ou supérieures. Il y a encore ce dont je ne vous ai pas parlé (car non utilisé): l’édition de Javascript et de HTML, et pour rester coté Python,  le développement WEB avec Django. Utilisable 30 j gratuit, la licence est de 99$. Pour un usage entreprise, c’est $199. Avec du support dans les deux cas.

Yves Masur

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email

Tutoriel Processing

Introduction

« Solar with Lyrics » de Flight 404

Processing : un langage pour artistes multimedia et « visualisateurs »

Lire la suite…

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email
Categories: Microclub Tags: ,

Projet « Barrette » livrable!

25/03/2011 3 commentaires

Bonjour tous,

Une bonne nouvelle pour les bricoleurs qui veulent économiser l’énergie! Plutôt que de pédaler sur votre génératrice, la fameuse barrette écologique du MICROCLUB est une solution intéressante. Après des mois de développement et de mise au point tant électronique, soft que mécanique, la voici. J’en profite pour remercier très fort mes collègues Maurice Wuillens qui a contribué à la réalisation électronique, et Laurent Francey à la mécanique. Jugez plutôt des caractéristiques du produit:

  • Pilotage par page WEB personnalisable
  • Donc connectée sur le LAN
  • Peut enclencher 6 prises 230 VAC séparément
  • Boutons pour commande manuelle
  • LEDs de contrôle
  • Horloge RTC maintenue par pile
  • Table de 20 ordres d’enclenchement/déclenchement
  • Maintient (sélectif) par activité LAN
  • Prise maître, maintient des esclaves (sélectionnés)
  • Dimensions env. L=62 cm, l=10 cm, h=4 cm

La consommation propre, toutes les prises déclenchées est réduite à 1,1 VA! Le kit est basé sur une barrette vendue par la Migro, à laquelle nous rajoutons un bloc constitué d’un CPU PIC 18F. Bien entendu, la partie basse tension est isolée galvaniquement du secteur. Un élégant print, glissé dans la barrette contient les triacs optocouplés permettant la commutation électrique. Pas de relais qui tombent en panne!

Le MICROCLUB vous propose de la monter en kit, pour la somme (pas très modique, c’est vrai, mais c’est le prix coutant de tout ce matériel) de 280.- Mais c’est un produit génial et sans compromis. Pour ceux que le montage rebuterait ou n’est pas évident, un atelier commun sera proposé. Qu’on se le dise! Vous avez un Wi-Fi, une imprimante, un écran, des chargeurs, une lampe de bureau, un disque de sauvegarde… C’est idéal pour commuter tous ce petit monde et éviter la consommation due à l’énergie grise. Désormais, via l’adresse http://prises ou un autre nom NetBios que vous aurez choisi sur votre réseau, vous commandez vos consommateurs! Le module accepte les adresse fixes ou le DHCP. Génial, non?

CMB11

CBM11 - Barrette Microclub

Les intéressés peuvent cliquer sur la fiche pdf ci-dessous, et adresser leur commande à notre secrétaire, carlos[at]microclub.ch

CMB11-commande.pdf

Limitation: les 9 premiers seront servi rapidement; si plus d’intérêt nous devrons commander des prints…

Yves Masur (resp. du projet)

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email

IsiSpot – création de sites WEB

IziSpot – le must?

Suite à l’excellente présentation des frères Francey sur ce sujet,  je télécharge le produit: IziSpot 4.3.1, l’installe sans problème. Juste une chose étrange, W7 me demande à chaque lancement si ce logiciel peut modifier les données de l’ordi – je suppose que c’est un soft encore au style XP; bien que les données se trouvent dans les paramètres utilisateur. Puis je me lance dans l’édition d’un site comportant 3 pages:

  • accueil, logo des sponsors
  • info, tableau avec des liens
  • contact, avec formulaire

Édition des pages

La première chose est de faire son layout, très bien indiqué comme « charte graphique »: image, logo, menus, couleurs de fond. Ceci est facilité en observant des modèles, forts nombreux; voir en en prenant un pour le modifier – ce que je fait.

Une fois la page d’accueil construite, pour me simplifier la vie je la copie, en vue d’avancer la page « info ». Mal m’en prend… la page d’accueil est spéciale, reconnue comme tel. Après une heure d’essais de toute sorte, qui me font passer en revue tous les menus, je fini par voir que la page d’accueil et/ou sa copie ne peuvent pas être supprimée. L’ édition de la copie trouble IziSpot! En effet, le contenu est différent et présenté par l’environnement correctement, mais le test avec le browser montre 2 x la page d’accueil initiale.

Heureusement, le fichier .IZI qui contient l’ensemble du site et les paramètres peut être facilement sauvé, copié et numéroté pour en avoir une version. Même si l’environnement semble assez solide (mis a rude épreuve avec mes essais!), il vaut mieux sauver souvent, il n’y a pas de « undo ». Sans en avoir la certitude, il semblait que les éléments qui composent cet environnement est basé sur des web-services. Vu avec l’excellent « Process Explorer », on peut voir sans ambiguïté que des instances de Explorer sont actives dès qu’on édite.

On voit dans ce menu mes copies malheureuses de la page d’accueil, renommée en information-old. Pour finir, j’ai refait une « Info » depuis la page blanche. Par contre je n’ai pas eu besoin de remettre les éléments (tableau, images, liens) depuis zéro. En effet, en copiant le HTML de la page informations-old, la nouvelle page « Info » a tout repris!

Certes, cet environnement est au départ un peu déconcertant. Il ne faut pas confondre le nom de la page IziSpot, le nom de la page WEB telle qu’affichée dan le browser et le nom dans le menu cliquable. Cliquer sur une des pages (active ou non) lance l’édition wisiwig, confortable et bien pensée.

La manipulation de tableau est – comme dans nombre de concurrent – dépendante du contexte; par contre, on sait particulièrement bien si on s’adresse au tableau dans son entier ou une cellule, ou un groupe de cellules sélectionnées. On peut aussi agir directement dans le HTML, voir intégrer des script. Pour ce faire, le nom de la page WEB pourra obtenir l’extension .php, ou . asp.

Créer un formulaire est très simple: on détermine les champs, indiquant ceux qui sont obligatoires et la page de retour. Par contre, il faut savoir que l’émail passera par le site izisoftware.com:

if (err==1) {alert (erreur)} else {document.envoi.action='http://users.izisoftware.com/Sharing/Form/Default.aspx';document.envoi.submit()}

Organisation du site

L’organisation des pages via le menu, (icône clef 6 pans) est également très facile à utiliser:

Des flèches permettent de déplacer la page; également dans une arborescence (max 4 niveaux). Depuis ce menu, on peut également changer de charte graphique par page.

Mise en ligne

Elle est facilitée par un interface ftp, qui permet de garder les nom et password associés au projet. Un fenêtre montre les commandes ftp et un ascenseur indique la progression. En option, le fichier .izi peut également être déposé sur le serveur à titre de sauvegarde. Bien entendu, il est possible de tout relire le code généré. Par contre, il faut résister à la tentation de le modifier, car à la prochaine mise à jour, les corrections seront perdues!

Heureusement, l’option « mise à jour partielle » permet de ne renvoyer sur le site de production que les fichiers touchés, ce qui permet une accélération de la mise à jour d’un site qui devient complexe et plus lourd au fil du temps. L’édition wisiwig et la prévisualisation via browser (choix entre IE et Firefox) permet de finaliser les pages avant leur mise en ligne.

Qu’en est-il de la conformité du code généré? Il y a forcément pas mal de javascript pour lier et faire fonctionner le tout. Avec le site à 3 pages (www.giron2011.ch) la validation indique 16 erreurs. Elle concerne des balises unique qui devraient être fermées, tel que, ou des tirets excédentaires dans des commentaires. Des images n’ont pas de « alt ». Pas de quoi en faire un drame…

Conclusion (provisoire)

Cet environnement – gratuit!! l’option pour un site marchand est seule payante – mérite attention. Il est en progression constante, si l’on en juge le forum très vivant. Et ce qui pas désagréable, énormément d’efforts en français et pour les langues en général sont faits. Il soutient sans rougir la comparaison avec des outils bien plus complexes et onéreux. Une fois passé l’obstacle (mais est-ce évitable?) des menus et génération de fichiers, il est rapide et agréablement efficace.

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email
Categories: Non classé Tags: , ,

Comparaison de 2 fichiers sources

Qui ne s’est jamais retrouvé en présence de 2 versions de codes sources sans se souvenir quelle est la dernière version, ou quelles sont les différences entre elles ?

 WinMerge est un outil Open Source de différenciation et de fusion pour Windows. WinMerge peut comparer des dossiers ainsi que des fichiers, en représentant les différences dans un fichier texte visuel qui est facile à comprendre ou manipuler.

Téléchargement depuis le site : http://winmerge.org/?lang=fr

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email
Categories: Non classé Tags: ,

W7 – moniteur de fiabilité

En bidouillant W7 j’ai découvert le moniteur de fiabilité. Pour le lancer, allez dans Panneau de configuration -> centre de maintenance -> Moniteur de fiabilité. Il est possible de donner une fenêtre temporelle, et les problèmes sont affichés de manière graphique:

Capture écran

moniteur de fiabilité

On remarquera ici que W7 s’est planté régulièrement… A sa décharge, le problème survient toujours lors de la mise en veille (ou d’en ressortir!)

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email

Horloge et table de commutation

06/03/2010 2 commentaires

Dans l’implémentation du code nécessaire au projet « barrette écologique », j’ai quelque peu séché sur le problème du suivi de la table de commutation. Celle-ci contient des données non-triée de temps, de jour(s) de la semaine et de la commutation à appliquer.

Comment trouver à coup sûr la dernière commutation et la prochaine à venir? Une fonction de différence de temps est nécessaire et rend un delta:

delta = ((int) prtc_line->hour - (int) DB_SystemClock.Time.hh) * 60 +
(int) prtc_line->minute - (int) DB_SystemClock.Time.mm;

Petit piège en langage C, les bytes à transformer en int, sinon-> écrêtage à 255. Ensuite, nous parcourons régulièrement toutes les lignes du tableau de commutation.  Ainsi la valeur obsolète sera mise à jour. Celle-ci sera remplacée au fil des scan, si une ligne plus proche existe dans la table, parcourue de 0 à n.

Pour résoudre ce problème, je me suis contenté d’une fonction qui ne traite que 24 heures, laissant à plus tard son complément pour traiter des semaines. Le tableau ci-dessous montre la simplicité du raisonnement pour 24H:

  • Le plus grand delta négatif est celui de la dernière commutation à 11h – l2;
  • Le plus petit delta positif, la prochaine commutation 13h – l3.

Sur une semaine, ça ne fonctionne plus! En effet, admettons que nous sommes lundi (jour=1) et que les commutations sont seulement sur dimanche, jour=7? En admettant que notre fonction « delta » ajoute 24*60 par jour, il apparaît que la prochaine commutation est la première de dimanche, et la commutation en cours est la dernière de dimanche!! Tous des nombres positifs!! Notre fonction va donc trouver

  • Le plus grand delta (mais pas négatif) sera celui de la dernière commutation à 14h – l4;
  • Le plus petit delta positif, la prochaine commutation 10h – l1.

Faut-il une logique « intraday », travaillant avec +/- et une autre pour les jours à distance?

Commutation

l1

l2

time

l3

l4

heure

10h00

11h00

’12:10

13h00

14h00

Delta

-130

-70

delta

+50

+110

Delta corrigé 1 semaine

+9950

+10010

-

+50

+110

La solution est la suivante: lors de la recherche et comparaison, pour éviter les problèmes des jours répartis sur une semaine, on ajoute une correction de 7 jours * 24 heures * 60 minutes au temps de commutation de la ligne lue s’il est inférieur a 0. ce calcul tient compte du fait que les écarts sont cycliques sur une semaine de 7 jours. De ce fait, le test de comparaison de temps se fait toujours sur des nombres strictement positifs, et fonctionne pour le jour courant et … les autres de la semaine.

Grâce à Code::Blocks, j’ai pu tester et valider mes fonctions efficacement, car modifier + charger le binaire dans le module PIC est bien long… voir: http://microclub.ch/2009/11/23/barrette-ecologique-suivi

Yves Masur

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email
Categories: Non classé Tags: , , ,

Indice de popularité des langages de programmation

Un indice intéressant de la représentativité des langages de programmation se trouve dans les projets de sourceforge (voirhttp://sourceforge.net/ ). Vu le nombre de projets ouverts, le langage principal dans lequel un projet est écrit est un bon indice. Une sérieuse proportion des projets est multi-plateforme; une large palette des domaines de la programmation y sont représentés. La liste des « topics » est impressionnante, je l’ai collée à la fin du message et les liens devraient fonctionner. On y trouve les occurrences de langages suivantes, en decrescendo:

Java 60294
C++ 46202
PHP 40271
C 34047
C# 17703
Python 16227
JavaScript 14749
Perl 11047
Unix Shell 4701
Delphi/Kylix 4543
Visual Basic 4268
Visual Basic .NET 3848
JSP 3177
Assembly 2987
Ruby 2545
ASP.NET 2523
PL/SQL 2307
ActionScript 2147
Objective C 1869
Tcl 1486

Topic (382744)

Yves Masur

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email
Categories: Non classé Tags:

Barrette écologique – suivi

23/11/2009 11 commentaires

Comme ce projet avance par étapes, je me propose d’en relater les avancées ici. Eh oui, c’est finalement assez complexe, et ça mérite quelques éclaircissements. Il ya :

  • Le hard
  • le logiciel bas niveau
  • les processus LAN
  • du temps réel
  • l’interface WEB
  • de la compression
  • des stockages et transmission de données

Actuellement (novembre 2009),  le hard est posé dans les grandes lignes; mais pas complètement arrêté. La clock RTC sera matérialisé par un DS1307, une pile, un quartz. La commande de triacs sera fortement inspirée d’une interface de Franic (merci Laurent!).

Les couches logicielles assez bien définies; toutefois, c’est la partie qui risque de subir les plus grand changements – même si le hard est terminé! Chacun pour

clock et datas

clock et datas

ra peaufinner son interface WEB. Pour cela, il faudra une bibliothèque bien établie de tags, et de modules en Javascript. Et de modules en C, bien sûr.

Le tout est téléchargeable ici: http://yves.masur.microclub.ch/articles/

Ce n’est pas vraiment un article, mais il y a: le code source, les pages WEB, et deux documents au format pdf. « MXBOARD_decouverte » présente les différentes facette de cette plateforme, alors que « barette » est le cahier des charges – qui se transforme en cahier de réalisation petit à petit.

Yves Masur

C'est bien ? Partagez !
  • Facebook
  • Twitter
  • Wikio FR
  • del.icio.us
  • Google Bookmarks
  • email