Wysyłanie smsów poprzez modem (COM/rs232)

0

Witam,
próbuje napisać sobie program do wysyłania smsów przez modem sms:
Oki, zrobiłem sobie taki program:

public static SerialPort SMSPort = null;

static void Main(string[] args)
   {
      try
     {

     SMSPort = new SerialPort();
     SMSPort.PortName = "COM14";
     SMSPort.BaudRate = 115200;
     //SMSPort.Parity = Parity.None;
     SMSPort.DataBits = 8;
     //SMSPort.ReadTimeout = 10000;
     //SMSPort.WriteTimeout = 10000;
     SMSPort.StopBits = StopBits.One;
     //SMSPort.Handshake = Handshake.RequestToSend;
     SMSPort.DtrEnable = true;
     SMSPort.RtsEnable = true;
     SMSPort.NewLine = ((char)13).ToString() + ((char)10).ToString();
     SMSPort.Open();

     Console.WriteLine("SMS Server is started");
     Thread t1 = new Thread(odpowiedzi);
     t1.Start();
     Thread t2 = new Thread(wysylka);
     t2.Start();
     }
     catch (TimeoutException ex)
      {
     Console.WriteLine("Błąd : " + ex.Message);
     }
     catch (Exception ex)
    {
     Console.WriteLine("Błąd : " + ex.Message);
    }
    }

public static void odpowiedzi()
   {
      while (true)
        {
            Console.WriteLine(SMSPort.ReadLine());
        }
   }


public static void wysylka()
    {
    //while (true)
    //{
    //
    ///////////////////////////////////////////////////////////////////
    //////////////////// KONWERSJA NA PDU //////////////
    ///////////////////////////////////////////////////////////////////
    SmsSubmitPdu pdu;
    string costam = "";
    string destination_numbers = "+48123456789";
    string txt_message = "tresc wiadomosci";
    pdu = new SmsSubmitPdu(txt_message, destination_numbers, ""); // "" indicate SMSC No
    //Console.WriteLine(pdu); // WIADOMOŚĆ W PDU DO WYSŁANIA
     ///////////////////////////////////////////////////////////////////

    SMSPort.NewLine = ((char)13).ToString() + ((char)10).ToString();
    SMSPort.Write("AT+CMGF=1\r");
    byte[] RXBuffer = new byte[SMSPort.ReadBufferSize + 1];
    SMSPort.Write("AT+CMGS=\"+48123456789\",129" + SMSPort.NewLine);


   while (SMSPort.BytesToRead != 0)
          {
           costam += SMSPort.ReadExisting() + "\n";
           //if (costam.Contains(">") == true)
           //{
           SMSPort.Write("_tu_bedzie_pdu_" + "" + (char)26);
           //}
    }

    //Console.WriteLine(SMSPort.ReadLine());
    //costam += SMSPort.ReadLine() + "\n";

    // }
     }

nie chce mi to za bardzo działać - ani nie odczytuje, ani nie wysyła:/ wiecie może co jest nie tak??

Northwest

0
  1. Formatowanie kodu
  2. Znaczniki <cpp> </cpp >
0

zrobione;)

0
cyriel napisał(a)
  1. Formatowanie kodu
  2. Znaczniki <cpp> </cpp >

Po co jak mozna < code=csharp >< /code >?

sorry za offtopa ;p

0

Nie wnikałem w błędy kodu, ale na pewno po poleceniu AT+CMGS=....\r powinieneś poczekać na znak zachęty.

0

hmmm tu nie ma znaków zachęty...

0
Northwest napisał(a)

nie chce mi to za bardzo działać - ani nie odczytuje, ani nie wysyła:/ wiecie może co jest nie tak??

a przez zwykły terminal możesz wysyłać? Jeśli tak, to chyba jasne, że błąd masz w transmisji po rsie...

0

nom, w terminalu wszystko działa :)))
komunikacja chyba jest, tylko mój kod od obsługi ma jakiś błąd i nie wiem jaki.... :/

0

w takim razie proponuję napisać program od nowa, bo nikt go za Ciebie w tym bałaganie nie poprawi.

raz piszesz

SMSPort.NewLine = ((char)13).ToString() + ((char)10).ToString();

innym razem "\n\r"
albo kto może wiedzieć co to za klasa SmsSubmitPdu i po co w ogóle ona jest? :P

SMSPort.Write("AT+CMGF=1\r");

nie powinno być przypadkiem na końcu "\n\r"?
trochę wysiłku, a będzie większa satysfakcja :)
pozdrawiam

0

oczywiście miało być \r\n

0

Bardzo interesuje mnie ten problem, szukam modemu który ma zaimplementowane wspomaganie wysyłania SMS-ów.
Proszę, podajcie jakich modemów używacie.
mm57

1 użytkowników online, w tym zalogowanych: 0, gości: 1