Gprs bağlantısı

Başlatan ttg, 17 Temmuz 2013, 18:58:30

ttg

Merhabalar,

Telit gl685 modem ile gprs bağlantısı kurmak istiyorum. Aklıma birkaç soru takıldı.

- 115200 baud rate gprs in maksimum hızına ne kadar yeterli oluyor? Ya da baud rate de hızı sınırlayan bir etken mi?
- Bu bağlantı kurma işleminin prosedürüne göre yazılmış örnek bir kod var mı? (Udp veya tcp kullanmak istiyorum)
- Modül dökümanlarında megabaytlara ulaşan hızların ayarlarından bahsediyor. Bu ayarları yapınca bile gprs den bu hızla bağlanması mümkün değil gibi bunu nasıl hallediyor?

Sürekli veri akışı olacaği için bunlar oldukça önem kazandı uzun sorduğum için kusura bakmayın.
4 Buçuk Saatlik Python Eğitimi [Ücretsiz] www.youtube.com/gryyldrm

polleme

Sırayla cevap vereyim:

1- Evet, 115200 bps, alınacak hızı sınırlayan bir parametredir. Eğer GPRS ortamı daha yüksek bantgenişliği sağlıyorsa hızınız 115200 bps ile sınırlı kalır, eğer 115200 bps altında bir bantgenişliği varsa ve veri sıkıştırma kullanılabiliyorsa modem veriyi sıkıştırarak 115200 bps'i elde etmeye çalışır.
2- Bu bağlantı için aslında kod bile yazmanıza gerek yok, Telit'in IP dökümanına bakarsanız TCP veya UDP bağlantıyı soket komutları ile yapmanız mümkün. Zira Telit modem içinde TCP/IP stack var.
3- Telit'in bu bahsettiğiniz modeli GPRS ortamının sağlayacağı hızın ötesine geçemez. Daha yüksek hızlar için bu modül olmaz, EDGE veya 3G destekleyen modüller kullanmanız gerekir.


ttg

Hocam cevap için çok teşekkür ederim. Dökümanı kurcalayıp socket bağlantısı kurdum sonunda kendi yazdığım sunucuya. Yalnız yeni bir sorunum oluştu,

Modülden sunucuya yolladığım veri yaklaşık 4-5 saniye sonra sunucuya giderken sunucunun cevabı milisaniyeler içerisinde modüle dönüyor. Bu bekleme süresi için bir ayar var mı yoksa GPRS kaynaklı mı çözemedim.
4 Buçuk Saatlik Python Eğitimi [Ücretsiz] www.youtube.com/gryyldrm

polleme

Metin modundan çok kısa komutlat gönderdiğinizi varsaydığımda bu sorunun modülden kaynaklanmadığını söyleyebilirim. Kodunuzla alakalı olabilir. Bnçok rastlanan bir durum değil, daha net yorum yapmak için daha detay lazım.

ttg

#4
Hocam sunucu kodum mesajı alınca ekrana basıp hemen ardından "ok.."+mesaj stringini geri yolluyor, telnet üzerinden halihazırda test ettiğim basit bir kod.

Modüldeki işlemi putty veya linuxtaki farklı terminal programlarıyla yapıyorum, mikrodenetleyiciyle deneme yapmaya da başladım, arama sms atma gibi işlemlerde sorun yaşamıyorum ancak gprs'e geldiğimde onda farklı bir sorunum var. IP alırken \r karakteri ardından \n karakterini modüle hemen yollayamadığımı farkettim,
Şu kod (fonksiyon stringi sırayla seri porttan 115200 baud rate ile atıyor)

seriVeriYolla("at#sgact = 1,1\r\n");
__delay_cycles(5000000); // 1 mhz altında 5 saniye


sonuç olarak ERROR dönerken şöyle yazınca:
  seriVeriYolla("at#sgact = 1,1");
  __delay_cycles(1000000);
  seriVeriYolla("\r");
  __delay_cycles(1000000);
  seriVeriYolla("\n");
  __delay_cycles(1000000);

sorun vermeden çalışıyor ve IP alıyor. Her iki kodu denerken de başta şu komutu mecburi olarak gönderip apn belirtiyorum:
seriVeriYolla("at+cgdcont = 1, \"IP\", \"internet\"\r\n");

Çalışıyor olması güzel ama sorunun kaynağını da merak ettim doğrusu.

Edit: Veri yollama sıklığını 50 ms'e kadar düşürdüm. Sonuç olarak aynı veriyi 50 ms aralıklarla yolladığımda veri 10'lu 15'li paketler halinde karşıya ulaşıyor, sanırım bu paket dolana kadar ya da belirli bir süre geçene kadar bekliyor. 3 saniye aralıklarla denediğimde minimum 6 saniyede karşıya ulaştı. Karşının yolladığı cevapsa anında modülden okunuyor.
4 Buçuk Saatlik Python Eğitimi [Ücretsiz] www.youtube.com/gryyldrm

ttg

Dökümanlarda gezinirken çözümü buldum ve denedim. Benden sonra bu işle uğraşacaklara yazmış olayım.

Varsayılan olarak bizim modül 5 saniye timeout ile çalışıyor ve 300 bayt veri bekliyor. Eğer 300 bayt veri(300 bayt'ın sayısı konusunda emin değilim ama benim yolladığımın çok üstündeydi miktar yanlışsa kusura bakmayın).

Ben timeout'u 0 saniye yaptığımda veriyi bekletmeden göndermeye başladı. Tabii ihtiyaç meselesi benim işimi bu şekilde görebiliyordum. Bende AT#SCFG komutunun değerleriyle oldu bu, sorun yaşayanlar da bu komuta bakarlarsa işlerine yarayabilir.
4 Buçuk Saatlik Python Eğitimi [Ücretsiz] www.youtube.com/gryyldrm