konto usunięte

Temat: Wysyłanie smsów przez modem (COM)

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
Marcin Pigłowski

Marcin Pigłowski Specjalista ds. baz
danych

Temat: Wysyłanie smsów przez modem (COM)

Cześć,

ponad rok temu pisałem program do wysyłania smsów (odbiór nie był potrzebny). Wprawdzie nie mam teraz dostępu do kodu i nie pamiętam szczegółów, ale pamiętam, że całość korzystała tylko z klasy SerialPort nie używałem SmsSubmitPdu.

Warto dodać obsługę zdarzeń DataReceived oraz ErrorReceived. Wtedy będziesz wiedzieć jaki komunikat ewentualnie błąd zwraca modem to może pomóc w rozwiązaniu problemu.

Możliwe, że za szybko wysyłasz kolejne linie do modemu przez co się blokuje. Ja miałem taki problem, że na modem był podpięty pod serwer, który w pewnych godzinach był obciążony i między kolejnymi liniami dałem opóźnienie. Bez opóźnienia wysyłane dane się nakładały czy coś i modem się blokował.

konto usunięte

Temat: Wysyłanie smsów przez modem (COM)

aha... czyli jakieś masowe wysyłanie smsów przez taki modem nie wchodzi w grę - "udusi" się??

jak w takim razie najlepiej wysyłać smsy??

konto usunięte

Temat: Wysyłanie smsów przez modem (COM)

Łukasz Peta:
aha... czyli jakieś masowe wysyłanie smsów przez taki modem nie wchodzi w grę - "udusi" się??

jak w takim razie najlepiej wysyłać smsy??

Zależy z czym tak naprawdę masz problemy. Jeżeli komunikacją po serialu to polecam użyć jakiegoś gotowego komponentu, ja używałem kiedyś TCom napisanego w Delphi pod .net bodajże i działało to sprawnie. Z COMem jest taki problem, że od kilku lat w żadnym kompie którego używam nie ma tego portu, a z adapterem USB-COM dużo problemów miałem.

Zainteresuj się też SDK dla Skype - bardzo tanio i niezawodnie, do tego bardzo łatwa obsługa z .net (i nie tylko).

konto usunięte

Temat: Wysyłanie smsów przez modem (COM)

ja mam właśnie adapter USB->COM...

a czy dzięki temu Skype SDK będę miał takie funkcje:
- wysyłka SMSa
- sprawdzanie raportu doręczenia SMSa
- odczyt SMSa

??
Mariusz Dullak

Mariusz Dullak Dullak Solutions -
Właściciel

Temat: Wysyłanie smsów przez modem (COM)

Z tego co widzę, nie czekasz na żadne potwierdzenie przyjęcia komendy przez moduł, który masz podłączony. Sprawdź w specyfikacji urządzenia jakiej odpowiedzi należy oczekiwać.
Jeżeli masz zapisywane SMSy wysłane, to możesz również przepełnić ich pamięć na urządzeniu.

Jest jeszcze kwestia PDU. Czy Twój moduł nie obsługuje wiadomości tekstowych w ASCII? Czasami to bardzo dużo ułatwia.

konto usunięte

Temat: Wysyłanie smsów przez modem (COM)

obsługuje ASCII... tylko ponoć nie wszystkie telefony obsługują SMSy w trybie textowym...
Mariusz Dullak

Mariusz Dullak Dullak Solutions -
Właściciel

Temat: Wysyłanie smsów przez modem (COM)

Ale to przecież centrum SMS ma się dogadać z terminalem co do kodowania SMSa, a nie strona wysyłająca.
Tak, czy inaczej proponuję najpierw ręczne sprawdzenie czy Pana terminal GSM poprawnie kontaktuje się z siecią i centrum SMS.
Potem można dopiero myśleć o tym żeby to wrzucać w jakiś program.
Jeżeli przydałaby się Panu jakaś pomoc, to zapraszam na priv.
Marcin Pigłowski

Marcin Pigłowski Specjalista ds. baz
danych

Temat: Wysyłanie smsów przez modem (COM)

sprawdź co zwraca Ci modem będziesz wiedzieć gdzie leży problem

konto usunięte

Temat: Wysyłanie smsów przez modem (COM)

Łukasz Peta:
ja mam właśnie adapter USB->COM...

a czy dzięki temu Skype SDK będę miał takie funkcje:
- wysyłka SMSa
- sprawdzanie raportu doręczenia SMSa
- odczyt SMSa

??

Tak, takie rzeczy możesz odebrać ze Skype'owkiego SDK.

IMHO powinieneś zawęzić poszukiwania, spróbuj użyć sprawdzonego komponentu do COMa, np. tego:
http://www.codeproject.com/KB/system/Serialport_COM.aspx
Zwróć uwagę na wybór portu (popatrz na komentarze do artykułu), to częsty problem z adapterami. Jeżeli dalej nie będzie działać, spróbuj zmienić port (jeżeli masz taką możliwość w driverze). A jak dalej nic to napisz co Ci wyszło i będziemy dalej kombinować ;-)

konto usunięte

Temat: Wysyłanie smsów przez modem (COM)

oki:) ps. przez modem da sie jakoś seryjnie wysyłać smsy, czy to raczej wolno idzie??

konto usunięte

Temat: Wysyłanie smsów przez modem (COM)

Oczywiste że nie wyślesz 2 smsów jednocześnie używając jednego modemu. Smsy wysyłasz jeden po 2gim i wszystko zależy od szybkości połączenia z modemem i samego czasu wysłania przez modem. Nigdy czasu nie mierzyłem, ale jak się przyjrzy komórkom, to wysłanie 1go smsa trwa średnio 10 sekund.

Chcąc masowo wysyłać smsy musisz użyć wielu modemów połączonych równolegle. W mojej firmie mamy taki system obsługujący ponad 200 modemów. Aplikacja automatycznie rozdziela wysyłanie smsów na poszczególne modemy. Potwierdzenie odbioru smsa jest, z tym że nie pamiętam czy działa to asynchronicznie czy trzeba czekac, blokując tym samym modem...

Jak wróci kumpel co się tym zajmował to dam znac.Marcin Kozłowski edytował(a) ten post dnia 15.09.08 o godzinie 15:45

konto usunięte

Temat: Wysyłanie smsów przez modem (COM)

Potwierdzanie dostarczenia wiadomości przychodzi asynchronicznie (przynajmniej w przypadku modemu ENFORY2 nie ma innej możliwości). Trzeba więc napisac odpowiednią logikę i problem z głowy.

Pozdrawiam.

PS.W razie pytań piszcie. Znajdzie się i kawałek kodu jak trzeba będzie coś opisac...

Temat: Wysyłanie smsów przez modem (COM)

Czy mozecie polecic jakis modem do wysylania sms na domowy uzytek?
Mariusz Dullak

Mariusz Dullak Dullak Solutions -
Właściciel

Temat: Wysyłanie smsów przez modem (COM)

Dowolny, stary telefon GSM podpinany do PCta.
Wyjdzie najtaniej :D

Temat: Wysyłanie smsów przez modem (COM)

Raczej poszukuje czegos co bedzie mialo albo jakies API albo przykladowy kod programu pod linuxa, wysylajacego sms.
Ze zwyklym telefonem komorkowym raczej tego nie dostane, prawda ?

konto usunięte

Temat: Wysyłanie smsów przez modem (COM)

No pewnie API jako takiego nie dostaniesz, ale zawsze możesz użyć komend AT (choć czemu ich nie traktować jako API??), które (chyba) wspierane są przez każdy telefon. Programowanie za ich pomocą funkcjo nie jest takie trudne, ale na pewno ciut bardziej pracochłonne niż użycie API.
Marcin Pigłowski

Marcin Pigłowski Specjalista ds. baz
danych

Temat: Wysyłanie smsów przez modem (COM)

ja jak pisałem program do modemu GSM to nie było jakiegoś szczególnego API tylko korzystałem z klasy do obsługi portu com (w .NET 2.0 wprowadzili klasę SerialPort) i poprostu wysyłałem komendy AT. Modem był chyba firm Wavecom, modelu nie pamiętam i nie wiem ile kosztował. Nie było jakiś szczególnych problemów w oprogramowaniu go. Z tego co pamiętam wysyłał i odbierał sms i możliwe że miał opcje prowadzenia rozmowy, ale nie dam sobie głowy uciąć że było tak napewno.
Mariusz Dullak

Mariusz Dullak Dullak Solutions -
Właściciel

Temat: Wysyłanie smsów przez modem (COM)

Dokładnie tak jak napisał Paweł.
API to komendy AT wysyłane przez port COM (fizyczny, czy emulowany przez USB). Jeżeli to dla Ciebie mało, to pod linuxem masz chociażby gnokii. Kod dostępny, więc możesz podejrzeć sobie jaki dokładnie to jest robione.

Temat: Wysyłanie smsów przez modem (COM)

Dzieki, wlasnie takiego info potrzebowalem :-)

Niestety ciezko to bylo wygooglowac sposrod zyliona stron sprzedajacych komorki.

Następna dyskusja:

Wysyłanie e-maili ASP.NET




Wyślij zaproszenie do