J'ai essayé d'envoyer des commandes AT en ouvrant une connexion de port série et mon but était d'envoyer un SMS. J'ai été capable de réaliser cela et le message a été envoyé, ce qui est un signe que la méthode WriteLine() se termine avec succès. Cependant, je n'arrive pas à obtenir de réponse dans mes tampons de réception. J'ai activé l'écho en examinant certaines réponses ici sur stackoverflow.AT Command Works, mais pas de réponse
Mais il n'y a toujours pas de réponse. J'ai essayé d'attendre en utilisant Thread.Sleep() et aussi en utilisant le gestionnaire, p_DataReceived. Il n'y a toujours pas de réponse. Un exemple serait la simple commande "AT" qui devrait avoir une réponse "ok". Mais il n'y a pas de réponses à tous (taille de la propriété est à savoir BytesToRead 0)
J'essaie avec ce dwm222 de D-Link 4G LTE adaptateur USB
Tous les pointeurs seraient grandement appréciés!
private void button_Click(object sender, RoutedEventArgs e)
{
mySerialPort = new SerialPort("COM15");
mySerialPort.BaudRate = 9600;
mySerialPort.Parity = Parity.None;
mySerialPort.StopBits = StopBits.One;
mySerialPort.DataBits = 8;
mySerialPort.Handshake = Handshake.None;
mySerialPort.NewLine = Environment.NewLine;
mySerialPort.DataReceived += new SerialDataReceivedEventHandler(p_DataReceived);
mySerialPort.Open();
mySerialPort.DiscardInBuffer();
mySerialPort.DiscardOutBuffer();
mySerialPort.WriteLine("ATE1"); //turn on echo
mySerialPort.WriteLine("AT"); //test response
Thread.Sleep(3000);
string responseSTR = mySerialPort.ReadLine();
if (responseSTR.Contains("OK")) //empty string
{
MessageBox.Show(responseSTR);
}
this.SendSms("+XXXXXXXXXXXXXXXXXXX", "Hello From C#");
mySerialPort.Close();
}
public void p_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string s = (sender as SerialPort).ReadExisting();
buff += s;
MessageBox.Show(buff);
}
void SendSms(string destination, string text)
{ ........}
Est-ce que votre événement est en cours? et la boîte de message affiche null? –
aucun événement déclenché et responseSTR est vide, c'est-à-dire responseSTR = "". –
Une autre question: Pouvez-vous essayer différents paramètres "mySerialPort.NewLine ="? Parce que "Environment.NewLine" est "\ r \ n" sous Windows (CR + LF). Et peut-être votre modem répond avec "CR" seulement. Mérite un essai: mySerialPort.NewLine = "\ r", ou quel que soit le code correct pour cela en C#. –