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.