2011-07-06 3 views
1

J'ai un modem GSM usb de type lightWave. J'ai trouvé ce code dans C# qui peut recevoir, envoyer, supprimer et lire le message sms de ce modem mais quand un nouveau message arrive au modem, l'évènement qui devrait être déclenché quand un nouveau message est reçu ne sera pas levé. Je ne sais pas quel est le problème; cependant, je peux lire ce message de la carte SIM après réception, mais je veux l'événement de message reçu soulevé lorsque le message arrive cette partie du code:programmation modem GSM en C#

private void Form1_Load(object sender, EventArgs e) 
{ 
    int port = GsmCommMain.DefaultPortNumber; 
    int baudRate = 9600; // We Set 9600 as our Default Baud Rate 
    int timeout = GsmCommMain.DefaultTimeout; 

    dlg = new frmConnection(); 

    dlg.StartPosition = FormStartPosition.CenterScreen; 
    dlg.SetData(port, baudRate, timeout); 
    if (dlg.ShowDialog(this) == DialogResult.OK) 
    { 
     dlg.GetData(out port, out baudRate, out timeout); 
     CommSetting.Comm_Port = port; 
     CommSetting.Comm_BaudRate = baudRate; 
     CommSetting.Comm_TimeOut = timeout; 
    } 
    else 
    { 
     Close(); 
     return; 
    } 
    Cursor.Current = Cursors.WaitCursor; 
    CommSetting.comm = new GsmCommMain(port, baudRate, timeout); 
    Cursor.Current = Cursors.Default; 
    CommSetting.comm.PhoneConnected += new EventHandler(comm_PhoneConnected); 
    CommSetting.comm.MessageReceived += new MessageReceivedEventHandler(comm_MessageReceived); 
    //.... 
} 

Cet événement ne se laisse soulevé pas quand un message

CommSetting.comm.MessageReceived += new MessageReceivedEventHandler(comm_MessageReceived); 

Ce code dans C# I fondé à codeproject.com peut-il m'aider s'il vous plaît?

+0

Si vous ne définissez pas la propriété Handshake vous devez alors définir vous-même les signaux de prise de contact matérielle. Définissez les propriétés RtsEnable et DtrEnable sur true. –

+0

Au lieu d'utiliser GSMcomm, vous devez mettre votre propre gestionnaire pour recevoir les données et prendre des décisions en conséquence. –

Répondre

0

+ CMTI

un modem GSM/GPRS ou téléphone mobile utilise + CMTI pour avertir l'ordinateur/PC qu'un nouveau message SMS a été reçu et l'emplacement de mémoire où il est stocké.

continuer à courir le fil lors de l'événement poignée DataReceivedHandler,

if(indata.Contains("+CMTI"))//Alert for message recived read message from the loacation 

Obtenez le loaction et lire le message de cet emplacement de sim specfic.

ref http://www.developershome.com/sms/resultCodes3.asp

ref http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.datareceived.aspx

0

d'abord vous devez vous assurer que votre port, baudRate et le temps est valide. Et puis vérifiez que comm est correctement initialisé.

ajouter gestionnaire écrire le code suivant seulement ......

comm.MessageReceived += comm_MessageReceived; 

et initialize comm par le code suivant .......

comm = new GsmCommMain(port, baudRate, timeout);