vendredi, décembre 14, 2007

Comment obtenir le chemin courant en .NET Compact framework

Voici une belle petite commande qui permet d'obtenir le chemin d'exécution dans une application .NET CF 1.0 ou 2.0 :

System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase)

Effectivement sur windows ce 4.2 ou 5.0 il n'y a pas de notion de 'current directory' que l'on peut avoir l'habitude d'utiliser.

Webcam - Traitement d'image et plus

Pour le plaisir, je me suis intéressé à comment intégrer une image d'une webcam dans une application .NET. En faisant mes recherches, je suis tombé sur une petite application sur code project qui répondait à mes besoins même plus !
http://www.thecodeproject.com/KB/audio-video/Motion_Detection.aspx
Il s'agit en fait d'une implémentation de la librairie AForge.Net (http://code.google.com/p/aforge/) dans laquelle on retrouve
  1. tout ce qu'il faut pour afficher différents flux vidéo ... dont les flux locaux issus de webcams
  2. tout ce qu'il faut pour traiter les images (filtres RGB, HSL, Mathématique ...)
  3. et pour terminer ... tout ce qu'il faut pour réaliser des réseaux neuronnaux et trucs un peu tordus du genre !

Je me suis donc retrouvé d'afficher ma webcam, à étudier les réseaux neuronnaux ...

Je pensais avant d'avoir regarder le truc qu'il fallait être un mathématicien averti afin de pouvoir utiliser ce genre de chose. Et à priori cela n'est pas aussi compliqué que je le pensais. Ca n'est cependant pas simple ! Si cela vous intéresse, il y a une petite démo sur ce que l'on peut faire avec les réseaux neuronnaux (mais avant faut quand même se mettre dans le bain) http://www.codeproject.com/KB/recipes/aforge_neuro.aspx

Bonne lecture !

lundi, juillet 09, 2007

Le passage de date depuis un .NET CF 1.0 vers un services web .NET 2.0 est un vrai casse tête
Lors d'un développement un de mes collègues a eu un problème assez louche :

Coté PPC une application en .NET CF 1.0 qui filtre des commandes en fonction des dates d'expédition. En fonction de cette date, on appele un service web qui retourne une liste de commande en fonction de la date choisie. Jusque là rien d'extra et tout fonctionnait bien. On nous a demandé de rajouter l'heure de départ, sur le papier ça parraissait on ne peut plus facile mais en réaliter ... grosse galère !

Pour une raison assez mystèrieuse, lorsque l'on passait le datetime avec l'heure comprise on avait un décalage coté serveur de +9H ! on a regarder la partie paramètres régionaux et tout coller ... impossible de trouver la raison.

Pour solutionner, on a du changer la signature de la méthode et passer les heures séparemment ... tout simplement étrange!

samedi, juillet 07, 2007

Les certifications Microsoft côté développeur :

Pour ceux qui sont intéressés comme moi à se certifier sur les technos ASP.NET, il y a eu quelques récents changements.
J'ai toujours entendu parler de MCAD (Microsoft Certified Application Developper) et bien maintenant c'est remplacé pour par le MCSP (Microsoft Certified Solution Professional).
Pour cela, il est nécessaire de devenir un MCTS Web developper, 2 examens :
Exam 70–536: TS: Microsoft .NET Framework 2.0 - Application Development Foundation
Exam 70-528: TS: Microsoft .NET Framework 2.0 - Web-Based Client Development
Ensuite pour obtenir le MCSP Web developper, il faut passer un examen supplémentaire :
Exam 70-547: PRO: Designing and Developing Web Applications by Using the Microsoft .NET Framework

Vous retrouverez tout ça sur le lien suivant : http://www.microsoft.com/learning/mcp/mcpd/webdev/default.mspx

lundi, mai 28, 2007

NHibernate en release

Voila depuis quelques temps déjà NHibernate est sorti en release. Cette dernière version a beaucoup de bugs de corriger. Pour aller télécharger la dernière version :
http://www.hibernate.org/343.html

jeudi, janvier 04, 2007

API Google MAP

Un article sur le site du journal des développeur concernant l'API Google MAP. Celle-ci permet d'intégrer les fonctionnalités de Google MAP dans nos sites web en utilisant JavaScript.
Je pense qu'il serait intéressant de faire un petit Wrapper .Net si celui-ci n'existe pas encore...

http://developpeur.journaldunet.com/tutoriel/dht/061222-google-maps-api/0.shtml

jeudi, octobre 26, 2006

Lien RS232 et portée maximum

Lorsqu'on travaille en milieu industriel, il est quasi obligé de rencontrer à un moment ou un autre un lien RS232. Aujourd'hui dans .NET 2.0, cela ne pose plus trop de soucis car le framework implémente directement les ports séries ce qui n'était pas le cas dans la version précédente. Et pour ceux qui veulent faire un petit test sur un terminal avec .Net Compact Framework 1.1, il faut utiliser l'API OpenNETCF.
En dehors de la programmation, il y a également le protocole RS232. Effectivement, il faut savoir que les liens RS232 ont une portée maximum 15-20m. Pour cela, il existe des répéteurs ou encore des changeurs de protocoles http://www.sphinxconnect.fr/, celui de mon choix est le NPort 5110 Series qui convertit RS232 -> Ethernet. Et sur le serveur, il est possible de créer un port virtuel à partir de son adresse IP, donc rien ne change au niveau programmation pour une portée de presque 100m.

vendredi, octobre 20, 2006

Créer un composant MMC

Dans le cas d'un développement "serveur", il est intéressant d'avoir pour administrater notre programme, un composant MMC.
Pour un composant MMC v 2, il existe un SDK fonctionnant avec C++ mais pas en .Net .
Heureusement, un projet OpenSource a palié à ce probleme http://sourceforge.net/projects/mmclibrary/ qui possède également une mise à jour pour la version 3. Cependant pour cette même version, il sera bientot disponible un SDK .NET

CodeProject propose un tutoriel en utilisant mmcLibrary : http://www.codeproject.com/csharp/mmcfileactcs.asp?df=100&forumid=26094&exp=0&select=665986

Maintenant il n'y a plus qu'à tester tout ca !! :)

jeudi, octobre 12, 2006

Envoyer des SMS dans son application

Pour un système de gestion d'incident, on m'a demandé de mettre en place des alertes via SMS.
Il existe plusieurs solutions pour envoyer des SMS dont deux principales (elles ont un cout dans tous les cas) :
  1. en envoyant un mail
  2. en faisant une requete http

Pour ma part, j'ai choisi la seconde solution car moins contraignante dans l'utilsation. Effectivement, pour la 1ere solution, il est nécessaire d'avoir un serveur SMTP alors que notre application n'en a pas forcémment besoin et même si l'on a ce serveur, il faut le paramétrer pour autoriser le relais. De plus, cela pose un problème de configuration pour le client qui ne maitrise pas forcemment sa messagerie.

Avec la 2nde solution, il faut juste avoir un accès internet et pouvoir faire du HTTP. Voici un petit exemple avec smsmode.com où le SMS me coûte environ 10cts TTC (le prix est dégressif en fonction du volume).


//On convertit le message au format URL
m_Message = System.Web.HttpUtility.UrlEncode(m_Message);
//On créé la requete spécifié par le fournisseur
HttpWebRequest maRequete = (HttpWebRequest) WebRequest.Create(PASSERELLE+"?pseudo="+LOGIN+"&pass="+MOTDEPASSE
+"&message="+m_Message
+"&numero="+m_Destinataire);


//On recupère la réponse de la requete
HttpWebResponse maReponse = (HttpWebResponse) maRequete.GetResponse();
bool statut = false;
if (maReponse.StatusCode == HttpStatusCode.OK)
{
statut = true;
//Si le code retour est OK
//On lit la réponse enfin d'obtenir les informations
Stream dataStream = maReponse.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string reponse = reader.ReadToEnd();
//On récupère le code retour de cette facon car la trame est :
//code_retourdescription_statussmsID
CodeRetour code = (CodeRetour)Convert.ToInt32(reponse.Split(Convert.ToChar(""))[0]);
maReponse.Close();
return code;
}

En espérant que cela puisse vous aider. J'ai fait une petit API à ce sujet, si vous souhaitez l'obtenir, contactez moi.

lundi, octobre 09, 2006

Persistance d'objet NHibernate

Pour ceux qui travaille en modèle 3 couches, il existe des outils de mappings d'objets enfin de ne pas perdre de temps à coder les accès aux base de données. Il parait que cela représente 30% du temps de développement.

En théorie, Microsoft a sorti son propre outils de persistance mais au vu du succès qu'il obtient, je me dis qu'il faut certainement s'orienter vers autres chose. Pour info, il s'appelle : Object Space dont voici un lien http://www.labo-dotnet.com/articles/ADOdotnet/Object%20Space/0/48.aspx

Pour ma part je me suis lancé avec NHibernate, outils OpenSource connu dans le mode Java. Sa deniere version n'est pas encore totalement débugger mais semble bien fonctionner. L'avantage de cet outils c'est la documentation et examples disponibles sur le net. http://www.hibernate.org/343.html

Je ne vous cache pas que j'ai rencontré quelques difficultés de compréhension dans l'utilisation de celui-ci mais à force de persévérance, j'y suis parvenu! Le plus gros problème que j'ai rencontré est le mappage d'un attribut du style List ListeT (relation many-to-many) ... Mais en utilisant les attributs on en arrive à bout !

Prochainement, j'essaierai de faire un petit tutoriel sur cette expérience bien que l'on en trouve déjà de nombreux à ce sujet.

mercredi, septembre 13, 2006

Report viewer - mise à jour automatique

Une petite astuce toute simple qui peut aider certains d'entre vous.
Lorsque vous utilisez un report viewer dont les DataSource dépendent d'une dropdownlist ou autre qui a besoin d'un postback pour être pris en compte. Et bien, vous pouvez mettre à jour le rapport non pas en faisant ReportViewer1.DataBind()
mais ReportViewer1.LocalReport.Refresh()
C'est trop simple mais pas évident à savoir quand on ne connait pas :)

jeudi, septembre 07, 2006

Liste de mes projets actuels

Afin de patienter avant la publication d'articles complets, voici une petite liste sur les projets auxquels je m'attelle actuellement.

Dans un premier temps, je suis en train de développer une petite application de traçabilité sur terminal Psion Tecklogix WorkAbout Pro (Windows CE 4.2). Le but du jeux est de noter tout ce que l'on apporte et récupère de chez le client et de l'imprimer sur un petite imprimante Zebra RW Series.
Difficultés techniques :
  1. Ne pas partir sur un développement en .Net CF 2.0 car non supporté sur windows CE 4.2
  2. L'utilisation de la RFID qui n'en ait plus vraiment un car Psion a mis en place un système Wedge (écran / clavier)
  3. La communication Bluetooth avec l'imprimante Zebra. Ca ce gère facilement via les ports COM ... normalement. A savoir qu'avec .Net CF 1.1, il faut utiliser l'API OpenNETCF.org
  4. Et pour terminer, l'utilisation de SQL CE

Ensuite, il y a la mise en place d'un extranet qui a été réalisé par une de nos stagiaires. Il reste la persistance d'objet à implémenter, ainsi que quelques petits déboggages.
Pour la persistance, on m'a conseillé NHibernate qui semble être assez performant mais à qui il manque cruellement un plug-in pour Visual Studio.

Il y a d'autres projets à l'étude mais qui n'ont pas de caractéristiques particulières.

lundi, septembre 04, 2006

Premier pas sur mon blog

Salut à tous !

Je me lance aussi dans la création de blog tout comme beaucoup de mon aujourd'hui. L'object de celui-ci sera principalement l'informatique.

Les sujets abordés seront variés mais seront principalement liés au developpement ASP.Net C#, car il s'agit de mon coeur de métier.

Je me suis fixé comme objectif de vous faire part de mes expériences et surtout de mes nouvelles découvertes.