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.