/// <summary> /// Traite les accusés de réception des messages non accusés /// </summary> public void getDeliveryReport() { //on selectionne les messages dont la reception de l'accuse reception est a verifier try { MessageEnvoi[] lesSMSAVerifier = (from msg in dbContext.MessageEnvoi where msg.Statut.libelleStatut == "Envoye" && msg.Message.accuseReception == 1 select msg).ToArray(); String[][] accuses = null; if (lesSMSAVerifier.Count() > 0) { //connexion modem modem.connectToModem(); //on recupere les accuses du modem /** * Retourne un tableau avec les informations de l'accuse reception * pour le message i * [i]0 - Reference * [i]1 - Destinataire * [i]2 - Date d'envoi SMS * [i]3 - Date Reception * [i]4 - Heure de reception * */ accuses = modem.readDeliveryReport(); } //pour chaque message foreach (MessageEnvoi sms in lesSMSAVerifier) { //Console.WriteLine("=== Verif SMS ==="); //si on a recu l'accuse if (verifierAccusePresentDansModem(sms, accuses)) { //Console.WriteLine("=== SMS OK ==="); //on change le statut sms.Statut = (from stat in dbContext.Statut where stat.libelleStatut == "Accuse" select stat).First(); sms.accuseReceptionRecu = 1; } } //on submit les changement dbContext.SubmitChanges(); if (lesSMSAVerifier.Count() > 0) { modem.disconnectToModem(); } } catch (SqlException sqle) { Console.WriteLine(sqle.Message); modem.disconnectToModem(); Thread.Sleep(2000); getDeliveryReport(); } }
/// <summary> /// Point d'entrée principal de l'application. /// </summary> static void Main(string[] args) { //si mode debug on passe un argument a l'application #if DEBUG args = new string[1] { "/cons" }; #endif if (args.Length > 0) //si un argument est passé à l'application { //on lance l'application en mode console ServiceManager serverSync = new ServiceManager(); serverSync.Start(); //boucle qui permet de passer des commandes a l'application pendant l'execution #region Attend une saisie de la commande 'quit' pour sortir string quit = string.Empty; Console.Title = "Service SMS"; while (string.IsNullOrEmpty(quit) || !quit.Equals("quit")) { Console.WriteLine("///////////////////////////////"); Console.WriteLine("taper la commande 'quit' pour quitter l'application\r\n"); quit = Console.ReadLine(); switch (quit.ToLower()) { case "clr": case "clear": Console.Clear(); break; case "test": modemSMS modSMS = new modemSMS("COM11"); modSMS.connectToModem(); //modSMS.sendTramePDU("0001000b913376650111F800f6002930000000000066010b000001001b04343731314e85b65950683b590831323334353637380000126701"); modSMS.sendTramePDU("0021000A816057161081000015F4F29C0E0A8FC7F57919242F8FCB707AFAED06"); modSMS.readDeliveryReport(); modSMS.disconnectToModem(); break; case "read": modemSMS modSMSRead = new modemSMS("COM11"); modSMSRead.connectToModem(); modSMSRead.readPDUMessage(); modSMSRead.disconnectToModem(); break; case "test vp": modemSMS modSMSVP = new modemSMS("COM11"); TimeSpan tim = new TimeSpan(1, 0, 0, 0); int intValue = modSMSVP.calculValidityPeriod(tim); Console.WriteLine("INT VALUE : " + intValue); TimeSpan tim2 = modSMSVP.decoderValidityPeriod(intValue); Console.WriteLine("Redecodage : " + tim2.Days + ", " + tim2.Hours + ", " + tim2.Minutes); break; } Console.WriteLine(string.Empty); } #endregion serverSync.Stop(); serverSync.Dispose(); } else //on lance l'application en tant que service windows { //on instancie le service ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new ServiceSMS() }; //on lance le service ServiceBase.Run(ServicesToRun); } }
/// <summary> /// Point d'entrée principal de l'application. /// </summary> static void Main(string[] args) { //si mode debug on passe un argument a l'application #if DEBUG args = new string[1] { "/cons" }; #endif if (args.Length > 0) //si un argument est passé à l'application { //on lance l'application en mode console ServiceManager serverSync = new ServiceManager(); serverSync.Start(); //boucle qui permet de passer des commandes a l'application pendant l'execution #region Attend une saisie de la commande 'quit' pour sortir string quit = string.Empty; Console.Title = "Service SMS"; while (string.IsNullOrEmpty(quit) || !quit.Equals("quit")) { Console.WriteLine("///////////////////////////////"); Console.WriteLine("taper la commande 'quit' pour quitter l'application\r\n"); quit = Console.ReadLine(); switch (quit.ToLower()) { case "clr": case "clear": Console.Clear(); break; case "test": modemSMS modSMS = new modemSMS("COM11"); modSMS.connectToModem(); //modSMS.sendTramePDU("0001000b913376650111F800f6002930000000000066010b000001001b04343731314e85b65950683b590831323334353637380000126701"); modSMS.sendTramePDU("0021000A816057161081000015F4F29C0E0A8FC7F57919242F8FCB707AFAED06"); modSMS.readDeliveryReport(); modSMS.disconnectToModem(); break; case "read": modemSMS modSMSRead = new modemSMS("COM11"); modSMSRead.connectToModem(); modSMSRead.readPDUMessage(); modSMSRead.disconnectToModem(); break; case "test vp": modemSMS modSMSVP = new modemSMS("COM11"); TimeSpan tim = new TimeSpan(1, 0, 0, 0); int intValue = modSMSVP.calculValidityPeriod(tim); Console.WriteLine("INT VALUE : " + intValue); TimeSpan tim2 = modSMSVP.decoderValidityPeriod(intValue); Console.WriteLine("Redecodage : " + tim2.Days + ", " + tim2.Hours + ", " + tim2.Minutes); break; } Console.WriteLine(string.Empty); } #endregion serverSync.Stop(); serverSync.Dispose(); } else //on lance l'application en tant que service windows { //on instancie le service ServiceBase[] ServicesToRun; ServicesToRun = new ServiceBase[] { new ServiceSMS() }; //on lance le service ServiceBase.Run(ServicesToRun); } }