Modem GSM, fabricants? modeles?

Modem GSM, fabricants? modeles? - Divers - Hardware - Périphériques

Marsh Posté le 30-11-2005 à 10:42:08    

Bonjour,
 
Je recherche des modems GSM, a mettre avec un pc, en usb?, ou interne? (ça existe en baie 5''1/4?),  
 
Si vous connaissez des sites de fabricants et modeles, boutiques qui vendent en france, je suis prenneur  :bounce:  :bounce:  :bounce:  
 
c'est pour envoyer des SMS depuis mon PC
 
Merci d'avance

Reply

Marsh Posté le 30-11-2005 à 10:42:08   

Reply

Marsh Posté le 30-11-2005 à 11:03:52    

une carte en pcmcia ....  
Sinon pas mal de portable on l'option du câble usb. Ou si ton portable à l'infra rouge.
SOny ericson, nokia ect..

Reply

Marsh Posté le 30-11-2005 à 11:18:19    

Merci wonee,  
j'ai exclu la piste portable, pour avoir un modem dédié,  
t'as vu des cartes pcmcia GSM?, quelle marque? ou les trouver?

Reply

Marsh Posté le 30-11-2005 à 11:19:48    

Reply

Marsh Posté le 30-11-2005 à 11:21:21    

http://www.01net.com/editorial/231 [...] mcia-gprs/
voici un test un peu vieux mais çà existe. SInon chez SFR ou orange y'a les carte mobile connect mais là y'a en plus le GPRS, 3G, edge et wifi en plus.

Reply

Marsh Posté le 30-11-2005 à 11:23:34    

Par contre faudra une seconde carte sim si tu veux pas l'enlever à chaque fois.
Fait gaffe le premier lien la carte est pas compatible xp...
enfin là y'en a pas mal:
http://www.expansys.fr/other.asp?cat=MOBDATA


Message édité par wonee le 30-11-2005 à 11:27:26
Reply

Marsh Posté le 30-11-2005 à 11:45:59    

Super,
je viens de regarder, j'aime les 2 premières, novatel et vodafone
je vais voir si on peut s'en servir pour l'appli, je pars a la chasse de la doc..
merci :jap:

Reply

Marsh Posté le 30-11-2005 à 11:50:28    

[:tom18] np

Reply

Marsh Posté le 30-11-2005 à 14:57:32    

:)  Encore moi
 
Je n'avais eu le temps de poster avant :
 
http://www.ihub.com/ peut utiliser un modem GSM (Wavecom FASTRACK Modem).
 
J'avais utilise un de ces modems il y a 5 ans. On avait abandonne car c'etait une peu lent
(une dizaine de SMS par minutes). A l'epoque je l'attaquais directement en liaison serie.
Avant on utilisait on boitier Nokia mais c'etait encore plus lent.


---------------
http://www.ikimegon.com/
Reply

Marsh Posté le 30-11-2005 à 15:36:41    

OK,Merci,  
 
ce lien c'est une appli passerelle vers des modem gsm?
Obligé de passer par un truc comme ça?
je comptais avoir uniquement les commandes du modem pour composer le N° portable puis pousser le SMS dépuis l'appli, mais je vais l'étudier plus en détail.
 
Alors tu avais monté une solution d'envois de mail depuis ton appli, c'est ça?
 
Moi je pense que mes clients risquent d'envoyer entre 5 et 25 sms par jour, pour rappeler à l'ordre ces clients tête en l'air.
 
c'est pas des envois en masse de sms!
 
le modem FASTRACK c'est le premier modem GSM que j'ai trouvé hier qd je commençais a comprendre les 2 options.

Reply

Marsh Posté le 30-11-2005 à 15:36:41   

Reply

Marsh Posté le 30-11-2005 à 16:16:26    

Eux mais ces sms c'est gêrer directement ou c taper à la main ? C'est une seule personne par site ?
La plupart de ces cartes ont déjà des softs pour envoyer des sms.
C'est un serveur SMS que tu veux monter ?
Car sur le site http://www.ihub.com/ çà m'a l'air compatible avec pas mal de modem. (voire la demo c'est un sony ericson T68) en connexion par câble.


Message édité par wonee le 30-11-2005 à 16:24:39
Reply

Marsh Posté le 30-11-2005 à 16:51:39    

sami34 a écrit :

Alors tu avais monté une solution d'envois de mail depuis ton appli, c'est ça?


Au debut on commandait le modem par serie (commandes AT presque standard). Apres on a remplace
ca par un envoi d'email standard avec des mot clefs dans le destination/sujet/corp vers le provider.
Lui faissait l'envoi de SMS.
 
Je dois encore avoir le source Windows de commande du modem. Si ca t'interesse, je colle ca ce soir.
 
L'avantage de http://www.ihub.com/ c'est bien qu'ils ont l'air de supporter pas mal de HW.
Et il doit y en avoir d'autre.


---------------
http://www.ikimegon.com/
Reply

Marsh Posté le 30-11-2005 à 17:15:38    

Ok, je suis preneur,
 
hoty, dans l'idée je voulais faire comme tu as fait au début,
c'est à dire, je prends un modem GSM, puis interfacer pour que l'appli envoi automatiquement les SMS par ce modem GSM,
 je fournirai l'appli + le modem pour lequel j'ai developpé, les clients prennent l'abonement avec l'opérateur en direct.
 
wonee , l'apli gère des agendas, si qqn oublie de faire ce qui est prevu, l'appli enverra en fin de journée un message automatique, avec des infos fixes + les variables lui concernant.

Reply

Marsh Posté le 30-11-2005 à 20:49:58    

Voila, ce n'est pas de la super programmation modulaire, mais ca marchait.
 
theDialog c'est un pointeur sur une fenetre qui permettait d'afficher des messages.
 
Deux modems etaient supportes :
 ManagePortWaveCom
 ManagePortPremiCell (Nokia)
 
SMSLock c'est la declartion d'une entree dans une section critique (protection de la queue de message).
MsgQueue c'etait une CStringList.
 
Pour poster un message, le programme faisait :
   

Code :
  1. SMSLock L;
  2.    if (urgent)
  3.   MsgQueue.AddTail(msg);
  4.    else
  5.   MsgQueue.AddHead(msg);


   
et un thread executant une des deux fct ManagePort... lisait la queue et envoyait le message :
 _beginthread(ManagePort...,2048,port);
 
Enfin, tu peux lancer plusieur thread, un par port.
 

Code :
  1. #include "stdafx.h"
  2. HANDLE      Ports[MAXPORT];
  3. bool        isReady[MAXPORT];
  4. UINT        SMSSent;
  5. UINT        SMSSending;
  6. UINT        PortError = 0;
  7. extern CString     cfgPIN; // PIN de la carte SIM
  8. bool InitPort(UINT port)
  9. {
  10.    CString wrk;
  11.    //
  12.    wrk.Format("COM%d",port);
  13.    Ports[port] = CreateFile(wrk,
  14.                            GENERIC_READ|GENERIC_WRITE,
  15.                            0,
  16.                            NULL,
  17.                            OPEN_EXISTING,
  18.                            0,
  19.                            NULL );
  20.    if ( Ports[port] == INVALID_HANDLE_VALUE )
  21.       theDialog->Display("   error opening: %d",GetLastError());
  22.    else
  23.    {
  24.       COMMTIMEOUTS scTO;
  25.       DCB          dcb;
  26.       //
  27.       memset (&scTO,0,sizeof(scTO));
  28.       scTO.ReadIntervalTimeout         =  250;
  29.       scTO.ReadTotalTimeoutMultiplier  = 2000;
  30.       scTO.ReadTotalTimeoutConstant    = 1000;
  31.       scTO.WriteTotalTimeoutMultiplier = 2000;
  32.       scTO.WriteTotalTimeoutConstant   = 1000;
  33.       SetCommTimeouts (Ports[port], &scTO);
  34.       //
  35.       if (GetCommState(Ports[port], &dcb))
  36.       {
  37.          dcb.BaudRate = CBR_9600;      // set the baud rate
  38.          dcb.ByteSize = 8;             // data size, xmit, and rcv
  39.          dcb.Parity   = NOPARITY;      // no parity bit
  40.          dcb.StopBits = ONESTOPBIT;    // one stop bit
  41.          if (SetCommState(Ports[port], &dcb))
  42.          {
  43.             return true;
  44.          }
  45.          else
  46.          {
  47.             theDialog->Display("   error setting comport: %d",GetLastError());
  48.             CloseHandle(Ports[port]);
  49.             Ports[port] = INVALID_HANDLE_VALUE;
  50.          }
  51.       }
  52.       else
  53.       {
  54.          theDialog->Display("   error getting comport: %d",GetLastError());
  55.          CloseHandle(Ports[port]);
  56.          Ports[port] = INVALID_HANDLE_VALUE;
  57.       }
  58.    }
  59.    return false;
  60. }
  61. // text must be 4 characters long
  62. bool WaitForOk4(HANDLE handle, const char * text)
  63. {
  64.    char     wrk[8];
  65.    DWORD    nb;
  66.    CString  Win;
  67.    //
  68.    for (;;)
  69.    {
  70.       if (ReadFile( handle, wrk, 4 , &nb, NULL))
  71.       {
  72.          wrk[nb] = 0;
  73.          Win += wrk;
  74.          if (Win.Find(text) != -1) return true;
  75.          if (nb==0)                return false;
  76.          if (Win.GetLength()>4)
  77.             Win.Delete(0,Win.GetLength()-4);
  78.       }
  79.       else
  80.          return false;
  81.    }
  82. }
  83. // text must be 2 characters long
  84. bool WaitForOk2(HANDLE handle, const char * text)
  85. {
  86.    char     wrk[8];
  87.    DWORD    nb;
  88.    CString  Win;
  89.    //
  90.    for (;;)
  91.    {
  92.       if (ReadFile( handle, wrk, 2 , &nb, NULL))
  93.       {
  94.          wrk[nb] = 0;
  95.          Win += wrk;
  96.          if (Win.Find(text) != -1) return true;
  97.          if (nb==0)                return false;
  98.          if (Win.GetLength()>2)
  99.             Win.Delete(0,Win.GetLength()-2);
  100.       }
  101.       else
  102.          return false;
  103.    }
  104. }
  105. void _cdecl ManagePortPremiCell(void * p)
  106. {
  107.    UINT    port = (UINT)p;
  108.    DWORD   nb;
  109.    CString Number,Msg;
  110.    //
  111.    if (!InitPort(port)) return;
  112.    //
  113.    for (;;) // Reset loop
  114.    {
  115.       // Exit previous session
  116.       Sleep(2000);
  117.       PurgeComm( Ports[port], PURGE_TXCLEAR|PURGE_RXCLEAR);
  118.       WriteFile( Ports[port], "EXIT\r", 5, &nb, NULL);   
  119.       //
  120.       // Reset box
  121.       Sleep(2000);
  122.       PurgeComm( Ports[port], PURGE_TXCLEAR|PURGE_RXCLEAR);
  123.       WriteFile( Ports[port], "atz\r", 4, &nb, NULL);
  124.       //
  125.       // Enter SMS mode
  126.       Sleep(3000);
  127.       PurgeComm( Ports[port], PURGE_TXCLEAR|PURGE_RXCLEAR);
  128.       WriteFile( Ports[port], "at*c\r", 5, &nb, NULL);
  129.       //
  130.       if (!WaitForOk4(Ports[port],"SMS>" ))
  131.       {
  132.          theDialog->Display("#%d: Error entering SMS mode (not a PremiCell?). Will retry in 30s.",port);
  133.          CloseHandle(Ports[port]);
  134.          Ports[port] = INVALID_HANDLE_VALUE;
  135.          //
  136.          Sleep (30000);
  137.          if (!InitPort(port)) return;
  138.          continue;
  139.       }
  140.       //
  141.       isReady[port] = true;
  142.       //
  143.       for (;;) // Message loop -------------------------------------------------------
  144.       {
  145.          // Wait for something in the queue
  146.          theDialog->Display("#%d: Ready.",port);
  147.          for (BOOL gotMessage=FALSE; !gotMessage;)
  148.          {
  149.             Sleep (200);
  150.             {
  151.                SMSLock L;
  152.                if (!MsgQueue.IsEmpty())
  153.                {
  154.                   // Retrieves message from the queue and increments counter
  155.                   gotMessage = TRUE;
  156.                   SMSSending++;
  157.                   Msg = MsgQueue.GetHead();
  158.                   MsgQueue.RemoveHead();
  159.                }
  160.             }
  161.          }
  162.          //
  163.          // Msg format: "06060606;Message text"
  164.          Number = Msg.SpanExcluding(";" );
  165.          Msg.Delete(0,Number.GetLength()+1);
  166.          if (Msg.GetLength()>150)
  167.             Msg.Delete(150,Msg.GetLength());
  168.          //
  169.          theDialog->Display("#%d: \"%s\" to %s",port,Msg,Number);
  170.          //
  171.          // Sending message
  172.          bool MsgSent = false;
  173.          WriteFile( Ports[port], "SEND\r", 5, &nb, NULL);   
  174.          if (WaitForOk4(Ports[port],"NO):" ))
  175.          {
  176.             // Send number
  177.             Sleep(15);
  178.             WriteFile( Ports[port], Number+"\r", Number.GetLength()+1, &nb, NULL);
  179.             if (WaitForOk4(Ports[port],"IT):" ))
  180.             {
  181.                // Send message
  182.                Sleep(15);
  183.                WriteFile( Ports[port], Msg+"\x1a", Msg.GetLength()+1, &nb, NULL);
  184.                if (WaitForOk4(Ports[port],"SMS>" ))
  185.                   MsgSent = true;
  186.             }
  187.          }
  188.          //
  189.          if (MsgSent)
  190.          {
  191.             SMSLock L;     // Success
  192.             SMSSent++;
  193.             SMSSending--;
  194.          }
  195.          else
  196.             break;
  197.       } // for next message ----------------------------------------------------------
  198.       //
  199.       // Repost the current message
  200.       {
  201.          AddMsgInQueue(Number+";"+Msg,true);
  202.          //
  203.          SMSLock L;
  204.          SMSSending--;
  205.          PortError++;
  206.       }
  207.       // Reset
  208.       theDialog->Display("#%d: Error sending message. Reposting and reseting.",port);
  209.       Sleep(5000);
  210.       //
  211.    } // for reset
  212. }
  213. void _cdecl ManagePortWaveCom(void * p)
  214. {
  215.    UINT    port = (UINT)p;
  216.    DWORD   nb;
  217.    CString Number,Msg;
  218.    //
  219.    if (!InitPort(port)) return;
  220.    //
  221.    // Reset box ------------------------------------------------
  222.    Sleep(2000);
  223.    PurgeComm( Ports[port], PURGE_TXCLEAR|PURGE_RXCLEAR);
  224.    WriteFile( Ports[port], "atz\r", 4, &nb, NULL);
  225.    if (!WaitForOk2(Ports[port],"OK" ))
  226.    {
  227.       theDialog->Display("#%d: Error reseting",port);
  228.       return;
  229.    }
  230.    //
  231.    // Enter PIN
  232.    Sleep(2000);
  233.    WriteFile( Ports[port], "AT+CPIN?\r", 9, &nb, NULL);
  234.    if (!WaitForOk4(Ports[port],"EADY" ))
  235.    {
  236.       Sleep(500);
  237.       WriteFile( Ports[port], "AT+CPIN?\r", 9, &nb, NULL);
  238.       if (WaitForOk4(Ports[port]," PIN" ) && cfgPIN.GetLength()==4)
  239.       {
  240.          Sleep(500);
  241.          PurgeComm( Ports[port], PURGE_TXCLEAR|PURGE_RXCLEAR);
  242.          WriteFile( Ports[port], "AT+CPIN="+cfgPIN+"\r", 13, &nb, NULL);
  243.          if (!WaitForOk2(Ports[port],"OK" ))
  244.          {
  245.             theDialog->Display("#%d: Error entering PIN code",port);
  246.             return;
  247.          }
  248.       }
  249.       else
  250.       {
  251.          theDialog->Display("#%d: Error SIM",port);
  252.          return;
  253.       }
  254.    }
  255.    //
  256.    for (;;) // Reset loop --------------------------------------
  257.    {
  258.       // Exit previous session
  259.       Sleep(2000);
  260.       PurgeComm( Ports[port], PURGE_TXCLEAR|PURGE_RXCLEAR);
  261.       WriteFile( Ports[port], "\x1a\r", 2, &nb, NULL);   
  262.       //
  263.       // Reset box
  264.       Sleep(2000);
  265.       PurgeComm( Ports[port], PURGE_TXCLEAR|PURGE_RXCLEAR);
  266.       WriteFile( Ports[port], "atz\r", 4, &nb, NULL);
  267.       //
  268.       // Enter SMS text mode
  269.       Sleep(3000);
  270.       PurgeComm( Ports[port], PURGE_TXCLEAR|PURGE_RXCLEAR);
  271.       WriteFile( Ports[port], "AT+CSDH=1\r", 10, &nb, NULL);
  272.       //
  273.       isReady[port] = true;
  274.       //
  275.       for (;;) // Message loop -------------------------------------------------------
  276.       {
  277.          // Wait for something in the queue
  278.          theDialog->Display("#%d: Ready.",port);
  279.          for (BOOL gotMessage=FALSE; !gotMessage;)
  280.          {
  281.             Sleep (200);
  282.             {
  283.                SMSLock L;
  284.                if (!MsgQueue.IsEmpty())
  285.                {
  286.                   // Retrieves message from the queue and increments counter
  287.                   gotMessage = TRUE;
  288.                   SMSSending++;
  289.                   Msg = MsgQueue.GetHead();
  290.                   MsgQueue.RemoveHead();
  291.                }
  292.             }
  293.          }
  294.          //
  295.          // Msg format: "06060606;Message text"
  296.          Number = Msg.SpanExcluding(";" );
  297.          Msg.Delete(0,Number.GetLength()+1);
  298.          if (Msg.GetLength()>150)
  299.             Msg.Delete(150,Msg.GetLength());
  300.          //
  301.          theDialog->Display("#%d: \"%s\" to %s",port,Msg,Number);
  302.          //
  303.          // Sending message
  304.          bool MsgSent = false;
  305.          WriteFile( Ports[port], "AT+CMGS="+Number+"\r", 8+Number.GetLength()+1, &nb, NULL);   
  306.          if (WaitForOk2(Ports[port],"\n>" ))
  307.          {
  308.             // Send message
  309.             Sleep(15);
  310.             WriteFile( Ports[port], Msg+"\x1a", Msg.GetLength()+1, &nb, NULL);
  311.             if (WaitForOk2(Ports[port],"OK" ))
  312.                MsgSent = true;
  313.          }
  314.          //
  315.          if (MsgSent)
  316.          {
  317.             SMSLock L;     // Success
  318.             SMSSent++;
  319.             SMSSending--;
  320.          }
  321.          else
  322.             break;
  323.       } // for next message ----------------------------------------------------------
  324.       //
  325.       // Repost the current message
  326.       {
  327.          AddMsgInQueue(Number+";"+Msg,true);
  328.          //
  329.          SMSLock L;
  330.          SMSSending--;
  331.          PortError++;
  332.       }
  333.       // Reset
  334.       theDialog->Display("#%d: Error sending message. Reposting and reseting.",port);
  335.       Sleep(5000);
  336.       //
  337.    } // for reset
  338. }

Reply

Marsh Posté le 01-12-2005 à 09:23:16    

Merci Hoti  :jap:  
 
je vais acheter un modem GSM et commencer les tests :bounce:  
 
je pense que c'est la solution (du moins pour moi, je galère un peu jusqu'à reussir à envoyer le premier mail, puis après on en parle plus)
 
je vous tiens au courant des resultats
 
Merci a tous les 2

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed