Skip to main content

AccessTr.neT


SMS Göndermek Hakkında (Access 2007-2010)

SMS Göndermek Hakkında (Access 2007-2010)

#1
Merhaba,
Ekteki, Access 2010'da hazırladığım basit uygulama ile 3G modem üzerinden (bendeki, üzerinde artes yazan Huawei E1752 modem) SMS gönderebiliyorum.

1-Bilgisayarımda Windows 7 64 Bit Kurulu
2-Kodlar alıntıdır. İnternette bulduğum bir Visual Basic 6.0 projesinden kopyaladım (o proje de sadece sms gönderimi yapıyordu. Ben sadece Access 2010'a çevirdim yani.).

Şimdi, yaptıklarım adım adım şöyle:

1- Sayın Seruz'un https://accesstr.net/konu-activex-ekleye...tml?page=2 sayfasındaki konuda vermiş olduğu son sürüm MSComm32.ocx dosyasını indirdim (Çok teşekkür ediyorum Sayın Seruz, bu dosya olmasaydı uygulama çalışmıyordu).
2- MSComm32.ocx dosyasını "C:\Windows\SysWOW64" dizinine kopyaladım (eskisi vardıysa üzerine yazdım, hatırlamıyorum).
3- "C:\Windows\SysWOW64" dizinindeki "cmd.exe"ye sağ tıklayıp "yönetici olarak çalıştır"a tıkladım.
4- Komut satırına "regsvr32 MSComm32.ocx" yazıp ve entere bastım ve kayıt defterine başarıyla eklendiği mesajını aldım.
5- Access 2010 projeme Vba penceresinde "Tools-->References"te Browse'ye tıklayarak "C:\Windows\SysWOW64" dizininde "Microsoft Comm Control 6.0 (SP6)" buldum ve dahil ettim.
Buraya kadar olanları problemsiz uygulandıysa ekteki Access dosyasını açarak inceleyebilirsiniz sanırım.
6- Bundan sonra tasarım penceresinde ActiveX denetimlerinden "Microsoft Communications Control, version 6.0 (SP6)"yı ekleyerek 3G modemin bağlı olduğu COM portla (bende COM6) İletişim kurdum.

Bunları uyguladıktan sonra problemsiz olarak SMS gönderebiliyorum (telefon numarasını 0 ile birlikte girmek gerekiyor).

Buraya kadarki işlemleri yapabilmek için internette elimden geldiğince araştırma yaptım. Elimden geldiğince diyorum çünkü ingilizcem yok maalesef.

Ve SMS meselesinin tamamen AT Komut Seti üzerine kurulduğunu öğrendim.

Fakat basit uygulamamda 160 karakterden fazla SMS gönderilmiyor (160 bile olmuyor aslında nedense). Ayrıca Türkçe karakter yazarsam hata vermediği halde mesaj gitmiyor.

Bunların da tamamen AT Komutları ile ilgili olduğunu öğrendim ama gerekli komutların hangileri olduğunu ve yazılışlarını bir türlü çözemediğimden dolayı artık yardım istemenin zamanının geldiğine karar verdim.

Bu konuda bilgisi olan arkadaşlar varsa; öncelikle 160 karakterden uzun mesajları nasıl gönderebileceğim konusunda, sonra mümkünse Türkçe karakterli mesajları nasıl gönderebileceğim konusunda yardım edebilirlerse minnettar kalırım.

Saygılarımla...

NOT 1: Mobile Partner adlı program ile hem 160 karakterden uzun mesajları, hem de Türkçe karakterli mesajları gönderebildiğimden dolayı elimdeki 3G modemin bunlara destek verdiğini biliyorum.

NOT 2: Sayın Seruz'un siteye eklediği MSComm32.ocx dosyası da ekte mevcuttur.
.rar WiniFred-SMSUygulama-Access 2010.rar (Dosya Boyutu: 72,01 KB | İndirme Sayısı: 81)
Cevapla
#2
Buton tıklandığında Türkçe karakterleri düzeltmesi için replace komutu ile "ç" yerine "c", "ş" yerine "s" yazdırılabilir. Yine buton tıklandığında len fonksiyonu ile mesaj kısmına yazılan verinin uzunluğuna göre denetim yapılabilir.
Cevapla
#3
Sayın ozanakkaya,
konuya cevap verdiğinize dair e-mail'i bugün aldım nedense. o zamandan beri de cevap yok diye bakmıyordum konuya. Öncelikle özür diliyorum bu nedenle. Şimdi, bu konu ile ilgili olmayan ingilizcemle öğrenebildiğim bilgileri bu vesile ile anlatmaya çalışayım.

Öncelikle konunun "access ile sms göndermek" ile ilgisi olmadığını öğrendim. Konu, com port'a bağlanan cihazla kullanılan programlama dili aracılığı ile İletişim kurmak ve cihaza, yine kullanılan programlama diliyle AT komutlarını göndermekmiş.

Yukarıdaki mesajıma zaten 160 karaktere kadar ve Türkçe karakter içermeyen metin mesajlarının nasıl gönderileceği ile ilgili bir örnek eklemiştim (sizin bahsettiğiniz düzenlemeleri de sonradan kendi uygulamama eklemiştim).

Sonra, çok uzun bir süre boyunca internette 160 karakterden uzun mesajların nasıl gönderileceği ile ilgili araştırma yaptım.

Bunu araştırırken öğrendiğim şey, ilk mesajımda anlattığım gibi direkt metin mesajlarını göndermenin yanında başka bir yol olduğuydu.

Bu yol da metin mesajını PDU (Protocol Data Unit) denen bir koda çevirerek göndermek.

160 karaktere kadar, Türkçe karakter içermeyen sms'leri ister direkt metin olarak, ister PDU'ya çevirerek gönderebiliyoruz.

160 karaktere kadar Türkçe karakter içermeyen mesajları PDU'ya çeviren bir visual basic 6.0 uygulaması da buldum ve onu da Access 2010'a çevirdim. Uygulamayı ekte bulabilirsiniz (koda şöyle bir baktım ama beni aştığı için incelemedim).

160 karakterden uzun mesajları ise sadece PDU'ya çevirerek gönderebiliyoruz. Ve bu çevirme her 153 karakteri bir PDU kodundan oluşan mesaj haline getirip sırayla göndermek şeklinde oluyor. Alıcı telefon bu mesajları birleştirerek bize gösteriyor. Anlayabildiğim kadarıyla GSM operatörünün bir etkisi olmuyor. O sadece gönderilen herbir sms'i yerine ulaştırıyor.

Şimdi burada birşeye dikkat çekmem lazım. Önce 160 karaktere kadar olan sms'i PDU'ya çeviren uygulama buldum dedim. Sonra da 160 karakterden uzun sms'leri PDU'ya çevirerek gönderebiliyoruz dedim. Fakat bu ikisi aynı şey değil.

160 karakterden uzun sms'lerin her bir parçasını çevirirken bu PDU koduna UDH (user daha header) denen bir parça ekleniyor. Zaten doğru anlamışsam bu nedenle her bir parça 153 karaktere düşüyor. Bu 153'lük kısım da 7 bitlik GSM alfabesine göre oluyor. 8 bitlik GSM alfabesine göre mesaj gönderirsek  toplam karakter uzunluğu 140 oluyor ve uzun sms'lerdeki bölümlerde -yanlış hatırlamıyorsam- 134'e düşüyor. Türkçe karakter içeren sms'ler zaten toplamda 70 karakter olabiliyor ve 16 bitlik GSM alfabesi olarak adlandırılıyor. Uzun sms'deki PDU bölümlerinin kaça düştüğünü ise zaten bulamadım.

İşte bulduğumu söylediğim uygulamada UDH kısmını çeviren bir modül yok.

Bu UDH'de referans kodu denen bir kısım var. Hani PDU'ya çevirmeyi belki kasıp öğrenirim diyorum, çünkü sanırım bit kaydırma yoluyla falan yapılan bir yöntem. Ama bu UDH kısmı içersindeki referans kodunun neye göre oluşturulacağına dair birşey bulamadım, ya da anlamadım. İngilizcesi olan arkadaşlar belki bu kısmı çözebilirler. Bu PDU ve UDH ile ilgili iki site buldum:

https://hiteshagja.wordpress.com/2010/04...-long-sms/

http://mobiletidings.com/2009/02/18/comb...-messages/

ilkindeki resimlerde UDH'nin hangi parçalardan oluştuğunu rahatça görebilirsiniz. İkincisi ise oldukça güzel örnekleme yapmış. Bu ikincisindeki kullanıcı yorumlarında da UDH'de sıkıntı yaşandığı belli oluyor yanlış anlamıyorsam.

Aşağıdaki sitede de bir online sms pdu decoder/converter var ve çevirdiğiniz metine karşılık gelen pdu kodunun hangi parçasının hangi kısma denk geldiğini de gösteriyor. Yalnız bu da 160 karaktere kadar çeviriyor.

http://www.diafaan.com/sms-tutorials/gsm...u-decoder/

Aşağıdaki sitede de UDH ile ilgili bir açıklama mevcut ama tamamen ingilizce tabii ki.

http://www.clockworksms.com/blog/concatenated-sms/

şurada PDU'ya çevirme ile ilgili küçük bir örnek mevcut:

http://stackoverflow.com/questions/19530...age-in-pdu

Google'da arama yaparsanız bir sürü site daha çıkacak zaten.

Sonuçta UDH olmadan 160 karakterden uzun sms gönderilemiyor.

Bu konuya o kadar uzun süre kafa yordum ki, sonunda resmen beynim sulandı ve bıraktım. Ama hala ara ara belki birşeyler daha çözerim diye bakmaktan kendimi alıkoyamıyorum.

Konuyla ilgilenen veya ilgilenmek isteyen arkadaşlar için güzel bir başlangıç bilgisi verebilmişimdir umarım. Ve umarım bu konuyu çözebilen arkadaşlar olursa burada adım adım anlatırlar da, SMS'i PDU'ya (UDH ile birlikte) çevirme konusunda Türkçe bir kaynağa sahip oluruz.

Saygılarımla...

.rar SMS2PDU_WiniFred_Access2010.rar (Dosya Boyutu: 66,99 KB | İndirme Sayısı: 44)
Cevapla
#4
Sayın winifred,

Yapılan araştırmalar neticesinde bahsini yaptığınız hususlara yönelik olarak aşağıdaki bilgiler elde edilmiştir.

1)160 KARAKTERDEN UZUN MESAJ GÖNDERME
uluslararası standart bir mesaj uzunluğu 160 karakter ile sınırlıdır.fakat, Concat (Concatenated) SMS sistemi ile,bu mesaj sınırı;4 ayrı mesaj uzunluğunda(612 karakterli) sms gönderimi yapılmak sureti ile ve sonrasında da bu 4 ayrı mesajın birleştirilmiş kısa mesaj servisi ile bu hususun gerçekleştirilebildiği ve bu 4 mesajın da ayrı ayrı olarak faturalandırılmakta olduğu anlatılmaktadır.

Karakter sayısına göre;
 
    0 – 160 1 SMS
 161 – 306 2 SMS
 307 – 459 3 SMS
 460 – 612 4 SMS
şeklinde kullanılmaktadır.operatörlerden bilgi araştırması edinilebilir.
 
2) TÜRKÇE KARAKTERLİ SMS GÖNDERME
Bu konuda yine yapılan bir araştırmada elde edilen bilgilerde yer alan bir alıntı nitelikli açıklama söz konusu:


Alıntı:GSM standardında 2 alfabe tablosu tanımlanmıştır. Bunlardan biri Unicode alfabesi, diğeri ise her bir karakteri 7 bit uzunluğunda olan GSM alfabesidir. Unicode alfabe tablosunda tablonun her bir elemanı 2 byte (=16 bit) uzunluğundadır. (1 byte = 8 bit)

 
GSM alfabesinde sadece 128 karakter bulunmakta ve bunların içinde Türkçe'deki ı, ğ, ş, İ, Ğ, Ş harfleri bulunmamaktadır. SMS mesaj bilgisi için GSM' de 140 byte ayrılmıştır. Bu GSM alfabesi kullanıldığında 140x8 /7 = 160 karakter alır.
 
Eğer Unicode alfabe kullanılırsa 140x8 / 16 = 70 karakter alır. Eğer bu limitler geçilirse yeni bir SMS oluşturularak mesajın devamı yeni SMS' in içine yazılır. Örnek olarak 160 karakterlik Unicode Türkçe mesaj ancak 3 SMS (70+70+20 karakterden oluşan 3 mesaj) ile gönderilebilir. Bu sorundan dolayı bir çok cep telefonu kullanıcısı zarar görmektedir.



Bir diğer bilgi olarak da;sisteme entegre edilebilecek bir TÜRKÇE Karakterli Xml SMS API kullanımı ile bu hususa dair açıklamalar da mevcut.bilginize.

İyi çalışmalar,
Saygılar.
Herkes, kendisinin AR-GE'cisidir...


Konulara eklenen Uygulama içeriğine yönelik Tavsiyeler
Alt Form Denetim Değerlerine ulaşma ve Alt Form Güncelleme
Kapatırken Düzenle (Compact On Close) Seçeneğinin İşaretlenmesi Hakkında
Cevapla
#5
(17/01/2015, 14:41)atoz112 Bu program windows 10 çalışıyor mu yazdı: Sayın winifred,

Yapılan araştırmalar neticesinde bahsini yaptığınız hususlara yönelik olarak aşağıdaki bilgiler elde edilmiştir.

1)160 KARAKTERDEN UZUN MESAJ GÖNDERME
uluslararası standart bir mesaj uzunluğu 160 karakter ile sınırlıdır.fakat, Concat (Concatenated) SMS sistemi ile,bu mesaj sınırı;4 ayrı mesaj uzunluğunda(612 karakterli) sms gönderimi yapılmak sureti ile ve sonrasında da bu 4 ayrı mesajın birleştirilmiş kısa mesaj servisi ile bu hususun gerçekleştirilebildiği ve bu 4 mesajın da ayrı ayrı olarak faturalandırılmakta olduğu anlatılmaktadır.

Karakter sayısına göre;
 
    0 – 160 1 SMS
 161 – 306 2 SMS
 307 – 459 3 SMS
 460 – 612 4 SMS
şeklinde kullanılmaktadır.operatörlerden bilgi araştırması edinilebilir.
 
2) TÜRKÇE KARAKTERLİ SMS GÖNDERME
Bu konuda yine yapılan bir araştırmada elde edilen bilgilerde yer alan bir alıntı nitelikli açıklama söz konusu:


Alıntı:GSM standardında 2 alfabe tablosu tanımlanmıştır. Bunlardan biri Unicode alfabesi, diğeri ise her bir karakteri 7 bit uzunluğunda olan GSM alfabesidir. Unicode alfabe tablosunda tablonun her bir elemanı 2 byte (=16 bit) uzunluğundadır. (1 byte = 8 bit)

 
GSM alfabesinde sadece 128 karakter bulunmakta ve bunların içinde Türkçe'deki ı, ğ, ş, İ, Ğ, Ş harfleri bulunmamaktadır. SMS mesaj bilgisi için GSM' de 140 byte ayrılmıştır. Bu GSM alfabesi kullanıldığında 140x8 /7 = 160 karakter alır.
 
Eğer Unicode alfabe kullanılırsa 140x8 / 16 = 70 karakter alır. Eğer bu limitler geçilirse yeni bir SMS oluşturularak mesajın devamı yeni SMS' in içine yazılır. Örnek olarak 160 karakterlik Unicode Türkçe mesaj ancak 3 SMS (70+70+20 karakterden oluşan 3 mesaj) ile gönderilebilir. Bu sorundan dolayı bir çok cep telefonu kullanıcısı zarar görmektedir.



Bir diğer bilgi olarak da;sisteme entegre edilebilecek bir TÜRKÇE Karakterli Xml SMS API kullanımı ile bu hususa dair açıklamalar da mevcut.bilginize.

İyi çalışmalar,
Saygılar.
Cevapla
#6
(09/09/2014, 18:33)WiniFred Bu program windows 10 çalışıyor mu ben denedim çalışmadı yardımcı olursanız çok sevinirim teşekkürler şimdiden yazdı: Merhaba,
Ekteki, Access 2010'da hazırladığım basit uygulama ile 3G modem üzerinden  (bendeki, üzerinde artes yazan Huawei E1752 modem) SMS gönderebiliyorum.

1-Bilgisayarımda Windows 7 64 Bit Kurulu
2-Kodlar alıntıdır. İnternette bulduğum bir Visual Basic 6.0 projesinden kopyaladım (o proje de sadece sms gönderimi yapıyordu. Ben sadece Access 2010'a çevirdim yani.).

Şimdi, yaptıklarım adım adım şöyle:

1- Sayın Seruz'un https://accesstr.net/konu-activex-ekleye...tml?page=2 sayfasındaki konuda vermiş olduğu son sürüm MSComm32.ocx dosyasını indirdim (Çok teşekkür ediyorum Sayın Seruz, bu dosya olmasaydı uygulama çalışmıyordu).
2- MSComm32.ocx dosyasını "C:\Windows\SysWOW64" dizinine kopyaladım (eskisi vardıysa üzerine yazdım, hatırlamıyorum).
3- "C:\Windows\SysWOW64" dizinindeki "cmd.exe"ye sağ tıklayıp "yönetici olarak çalıştır"a tıkladım.
4- Komut satırına "regsvr32 MSComm32.ocx" yazıp ve entere bastım ve kayıt defterine başarıyla eklendiği mesajını aldım.
5- Access 2010 projeme Vba penceresinde "Tools-->References"te Browse'ye tıklayarak "C:\Windows\SysWOW64" dizininde "Microsoft Comm Control 6.0 (SP6)" buldum ve dahil ettim.
Buraya kadar olanları problemsiz uygulandıysa ekteki Access dosyasını açarak inceleyebilirsiniz sanırım.
6- Bundan sonra tasarım penceresinde ActiveX denetimlerinden "Microsoft Communications Control, version 6.0 (SP6)"yı ekleyerek 3G modemin bağlı olduğu COM portla (bende COM6) İletişim kurdum.

Bunları uyguladıktan sonra problemsiz olarak SMS gönderebiliyorum (telefon numarasını 0 ile birlikte girmek gerekiyor).

Buraya kadarki işlemleri yapabilmek için internette elimden geldiğince araştırma yaptım. Elimden geldiğince diyorum çünkü ingilizcem yok maalesef.

Ve SMS meselesinin tamamen AT Komut Seti üzerine kurulduğunu öğrendim.

Fakat basit uygulamamda 160 karakterden fazla SMS gönderilmiyor (160 bile olmuyor aslında nedense). Ayrıca Türkçe karakter yazarsam hata vermediği halde mesaj gitmiyor.

Bunların da tamamen AT Komutları ile ilgili olduğunu öğrendim ama gerekli komutların hangileri olduğunu ve yazılışlarını bir türlü çözemediğimden dolayı artık yardım istemenin zamanının geldiğine karar verdim.

Bu konuda bilgisi olan arkadaşlar varsa;  öncelikle 160 karakterden uzun mesajları nasıl gönderebileceğim konusunda, sonra mümkünse Türkçe karakterli mesajları nasıl gönderebileceğim konusunda yardım edebilirlerse minnettar kalırım.

Saygılarımla...

NOT 1: Mobile Partner adlı program ile hem 160 karakterden uzun mesajları, hem de Türkçe karakterli mesajları gönderebildiğimden dolayı elimdeki 3G modemin bunlara destek verdiğini biliyorum.

NOT 2: Sayın Seruz'un siteye eklediği MSComm32.ocx dosyası da ekte mevcuttur.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da