Telit GL865 No Carrier gecikme problemi

Başlatan sdonmez, 17 Şubat 2017, 09:15:28

sdonmez

Merhaba,

GL865 modül ile HTML sorgusunu yapı cevabı aldıktan sonra soket bağlantısı kapatmak istiyorum. "+++" escape komutu  gönderdiğimde "NO CARRIER" geliyor ama nadiren de olsa benim belirlediğim zaman aşımına takılıyor. Programda bu durumu daa çözdüm fakat neden bazen geç cevap aldığımı anlayamadım.

Komutlarım şöyle:

.
.
fprintf(COM1, "ATS12=20\r");
.
.
.
fprintf(COM1, "AT#SKTD=0,80,www.......com,255\r"); 
.
.
.
fprintf(COM1, "GET /deneme.aspx?");    
fprintf(COM1, "id=%c&", Imeii[0]);
fprintf(COM1, "veri=%u&live=0&girisim=%u HTTP/1.1\r\n", _input, Web_timer);
fprintf(COM1, "Host: www.......com\r\n");            
fprintf(COM1, "Connection: keep-alive\r\n\r\n\r\n");
.
.
.
delay_ms(750);            
fprintf(COM1, "+++");
delay_ms(500);
.
.


Gördüğünüz gibi "+++" komutuna verilecek cevabın süresini değiştiren ATS12 komutu ile default 50 (1saniye) olan değeri 20'ye düşürüyorum. Bu da 0.4 saniye eder.
Programda "+++" dan önce ve sonra delay_ms ile gecikme de veriyorum ki "+++" komutunu algılayabilsin.
Fakat bazen cevap çok gecikiyor.

Bu cevap süresi üzerinde etkisi olan başka neler olabilir?

AT#SKTD=0,80,www.......com,255 komutunda "<closure type>" bilgisini 255 verdiğim için "+++" kapatma komutunu kullanıyorum. "<closure type>" ı 0 versem HTML sorgusundan sonra "NO CARRIER" hemen gelir mi?

Teşekkürler



MrDarK

Connection: close

şeklinde denersen komut gönderildiğinde sunucudan atılacağın için +++ göndermene de gerek kalmayacaktır.

Birde bu tarz işlemler için aktif mod değilde pasif modda kullanmak soket açıp kapatma işlemlerini kolaylaştıracaktır. Yinede sen bilirsin. Üstteki söylediğim komutla zaten seni sunucu atacaktır.
Picproje Eğitim Gönüllüleri ~ MrDarK

sdonmez

Merhaba

AT#SKTD=0,80,www.......com,0
Connection: close

Seklinde degil mi?

Aksam deneyecegim. Teşekkürler

ismail kaya

MrDarK hocam pasif bağlantı örneği verebilir misiniz? Aktif bağlantıdan ne farkı var? Açıklayabilir misiniz

sdonmez

Merhaba,

AT#SKTD=0,80,www.......com,0
Connection: close

ile daha hızlı NO CARRIER dönmeye başladı, teşekkürler.

Şimdi ise şöyle bir sıkıntı doğdu. Kullandığımız web server bazen çok geç cevap veriyor. Yani soketi AT#SKTD=0,80,www.......com,0 ile açıyorum, web sorgusunu gönderiyorum ama cevap gelemiyor. Dolayısıyla NO CARRIER de gelmiyor.

Ben tüm cevaplarım için timeout sayaçları kullanıyorum yani web sorgusuna belli bir süre içinde cevap gelmezse işi o yerde bırakıp devam etmek istiyorum. NO CARRIER gelmediği için gsm modül komut moduna giremiyor. AT#SKTD=0,80,www.......com,0 ile soketi açtığım için bu durumda "+++" da işe yaramayacaktır. Dolayısıyla program da NO CARRIER gelene kadar yaklaşık 2dk bekliyor ve sonra AT komutlarına devam edebiliyor.

Buna karşın birşey yapılabilir mi?


MrDarK

Arkadaşlar mesajlarınızı okudum kısa zamanda komut modunda tcp bağlantısı nasıl kurulur anlatacağım.

Sdonmez senin problemini komut modu kesinlikle çözecektir. Merak etme. Cevap için timeout koymana da gerek kalmayacaktır.
Picproje Eğitim Gönüllüleri ~ MrDarK

sdonmez

Tesekkurler

Gece okudugum bir dokumanda AT#SKTD=0,80,www.......com,0 kullanilsa bile "+++" ile soketin kapatilabilecegi yazilmisti. Denedim, ise yariyor.
Artik timeout sürem  dolarsa "+++" ile soketi kapatip devam ediyorum.