Picproje Elektronik Sitesi

TEKNİK SERVİS => Simkart ve Telefonlar => Konuyu başlatan: sdonmez - 25 Ocak 2017, 12:22:55

Başlık: Telit GL865 GET yöntemi ile bağlantı sorunu
Gönderen: sdonmez - 25 Ocak 2017, 12:22:55
Merhaba,

Telit GL865 üzerinden internete GET ile veri göndermeye çalışıyorum. Sitedeki örnek konuları inceledim fakat bir çözüm bulamadım.
Öncelikle gönderdiğim komutlar sırayla şöyle:

AT\r
ATE0\r
AT&K0\r
AT+CMEE=1\r
AT+CSQ\r
AT+CGSN\r
AT#USERID=\r
AT#PASSW=\r
AT+CGDCONT=1,IP,internet,0.0.0.0,0,0\r
AT#SKTSAV\r
AT#SKTCT=600\r
AT#GPRS=1\r
AT#SKTD=0,80,www........com,0\r
GET /deneme.aspx?id=78&veri=%u&girisim=%u HTTP/1.1\r\n
Host: www..........com\r\n
Connection: keep-alive\r\n\r\n\r\n


AT#SKTD=0,80,www........com,0\r komutuna kadar sorunsuz, olması gerekn cevapları alarak geliyorum.
AT#SKTD=0,80,www........com,0\r komutuna CONNECT cevabı da geliyor.

Sonrasındaki GET, Host ve Connection komutlarını peşisıra gönderiyorum. Bazen web sayfasından düzgün cevap geliyor ve html kodlarını alıyorum,  bazen de Bad Request dönüyor. Sıkıntıyı çözemedim.

Soket bağlantısının kapanmasında kaynaklanabileceğini düşünüp "AT#SKTD=0,80,www........com,255\r" ile bağlanmayı ve html kodlarını aldıktan sonra "+++" ile sonlandırmayı denedim. Bu durumda "NO CARRIER" hemen geliyor ama çözüm olmadı.

Bu arada avea hat kullanarak deniyorum

Problem ne olabilir? Yardımınızı rica ederim

Teşekkürler
Başlık: Ynt: Telit GL865 GET yöntemi ile bağlantı sorunu
Gönderen: ismail kaya - 25 Ocak 2017, 13:10:11
CSS C kodları aşağıda kendine göre uyarlarsın.
 
fprintf(PORT1,"AT\r\n");
delay_ms(500);
fprintf(PORT1,"AT+IPR=9600\r\n");
delay_ms(500);
fprintf(PORT1,"AT&K0\r\n");
delay_ms(500);       
fprintf(PORT1,"AT+FCLASS=0\r");
delay_ms(1000);
fprintf(PORT1,"AT+CGDCONT=1,\"ip\",\"internet\"\r");   
delay_ms(1000);
fprintf(PORT1,"AT#SCFG=1,1,100,50,600,50\r"); 
delay_ms(1000);
fprintf(PORT1,"AT#SGACT=1,1\r");                                                             
delay_ms(5000);
fprintf(PORT1,"AT#SD=1,0,80,\"www.telit.com\"\r");             
delay_ms(7000);
fprintf(PORT1,"GET/deneme.aspx?id=78&veri=%u&girisim=%u HTTP/1.1\r\n",veri,girisim);
delay_ms(500);
fprintf(PORT1,"Host: www.telit.com\r\n");
delay_ms(500);
fprintf(PORT1,"\r\n");
Başlık: Ynt: Telit GL865 GET yöntemi ile bağlantı sorunu
Gönderen: sdonmez - 25 Ocak 2017, 13:42:03
Tesekkurler. Deneyeceğim. 

Connection keep alive kullanmamissiniz. Bu durumda sorguyu yaptiktan sonra  baglanti hemen kesiliyor  mu?
Başlık: Ynt: Telit GL865 GET yöntemi ile bağlantı sorunu
Gönderen: ismail kaya - 25 Ocak 2017, 15:03:28
Bir süre sonra kesiliyor. (onun yerine +++ da yolluyorduk herhalde.)
Başlık: Ynt: Telit GL865 GET yöntemi ile bağlantı sorunu
Gönderen: MrDarK - 25 Ocak 2017, 15:22:10
Kullandığınız besleme ve şebeke kalitesi çok önemli bu tarz internetle ilgili projelerde. Datayı gönderirken gsm modül 2A'e yakın anlık tüketim yapabilir. Haliyle besleme kaynağınız düşük ise bu anda voltaj düşmelerinden uart seviyelerinizde değişme olabilir. Buda datanın karşı tarafa hatalı gitmesine sebep olacaktır.

Eğer bağlantı hemen kapatılsın istiyorsanız connection modunu close kullanabilirsiniz.

Birde pasif bağlantı metodunu tercih edebilirsiniz. Şu an kullandığınız aktif bağlantı modu.
Başlık: Ynt: Telit GL865 GET yöntemi ile bağlantı sorunu
Gönderen: sdonmez - 25 Ocak 2017, 20:25:24
Alıntı yapılan: MrDarK - 25 Ocak 2017, 15:22:10
Kullandığınız besleme ve şebeke kalitesi çok önemli bu tarz internetle ilgili projelerde. Datayı gönderirken gsm modül 2A'e yakın anlık tüketim yapabilir. Haliyle besleme kaynağınız düşük ise bu anda voltaj düşmelerinden uart seviyelerinizde değişme olabilir. Buda datanın karşı tarafa hatalı gitmesine sebep olacaktır.

Eğer bağlantı hemen kapatılsın istiyorsanız connection modunu close kullanabilirsiniz.

Birde pasif bağlantı metodunu tercih edebilirsiniz. Şu an kullandığınız aktif bağlantı modu.


Hemen kapatmasi icin connection: close yazacağız sanirim.

Pasif baglanti nasil saglaniyor?
Başlık: Ynt: Telit GL865 GET yöntemi ile bağlantı sorunu
Gönderen: MrDarK - 26 Ocak 2017, 08:49:11
AT komutlarını inceleyebilirsiniz. Pasif bağlantı dediğim komut modunda bağlantı
Başlık: Ynt: Telit GL865 GET yöntemi ile bağlantı sorunu
Gönderen: sdonmez - 26 Ocak 2017, 09:52:31
Merhaba,

Akşam soket bağlantı komutlarını değiştirdim. AT#SCFG, AT#SGACT, AT#SD komutlarını denedim.

Komutlar sırayla şöyle:

AT\r
ATE0\r
AT&K0\r
AT+CMEE=1\r
AT+CSQ\r
AT+CGSN\r
AT+CREG?\r
AT+CGDCONT=1,IP,internet,0.0.0.0\r
AT#USERID=\r
AT#PASSW=\r
AT+CGDCONT?\r
AT#SCFG?\r
AT#SCFG=1,1,100,50,600,50\r
AT#SGACT?\r
AT#SGACT=1,1\r
AT#SD=1,0,80,www..........com\r

GET /deneme.aspx?id=78&veri=%u&girisim=%u HTTP/1.1\r\n
Host: www..........com\r\n
Connection: keep-alive\r\n\r\n\r\n


AT#SCFG? komutundan sonra liste geliyor ve ben AT#SCFG=1,1,100,50,600,50 ile devam ediyorum, OK alıyorum.
AT#SGACT? komutundan sonra AT#SGACT=1,0 geliyor. AT#SGACT=1,1 komutu ile devam ediyorum ve IP alıyorum.
AT#SD= komutundan sonra CONNECT de geliyor.

Fakat GET, Host ve Connection komutlarından sonra hala anlamlandıramadığım şekilde bazen "Bad Request, invalid verb" gibi içeriğe sahip cevap dönüyor.  :(

Web sitesinde problem var desem, web tarayıcıdan sorgu yaptığımda herşey düzgün görünüyor...

www.google.com gibi bir sitede mi denesem, bilemedim..




Başlık: Ynt: Telit GL865 GET yöntemi ile bağlantı sorunu
Gönderen: MrDarK - 26 Ocak 2017, 12:05:25
Eğer gerçek gelen bilgileri görmek isterseniz kendi bilgisayarınıza apachi gibi birşey yükleyip gönderdiğiniz komutları görebilirsiniz. Tavsiyem bu yönde olabilir.

Ben hala ya arada sırada buffer'larınızda bir hata oluşuyor yada besleme kaynaklı data bozulması yaşadığınızı düşünüyorum. Çünkü anlık olarak 2A gerçeğini göz ardı ettiğinizi düşünüyorum. Ayrıca pcb ve anten kalitenizi de değerlendirmek lazım.

Gönderdiğiniz komutları uzun süreli test halinde bırakıp inceleyip hatayı tespit edebilirsiniz. Şu noktadan sonra biz bir adım ileri gidemeyiz ne yazık ki. Problemin ne tarafta olduğunu siz test ederek bulmalısınız.
Başlık: Ynt: Telit GL865 GET yöntemi ile bağlantı sorunu
Gönderen: ismail kaya - 26 Ocak 2017, 12:16:15
MrDark Hocamın dediği gibi istersen 3.7v lipo yada Lion pille bir dene. Komutları işlemciyle mi yolluyorsun yoksa RsTerm gibi programlami. İşlemciyle yolluyorsan seri portan bilgisayarda verileri kontrol edebilirsin. Gl865 kart hazır mi sen mi tasarladın. Anten tasarımı yanlış olabilir.
Başlık: Ynt: Telit GL865 GET yöntemi ile bağlantı sorunu
Gönderen: sdonmez - 26 Ocak 2017, 12:52:34
Karti ben yaptim ve komutlari islemciyle gonderiyorum.
Yazilimsal seri porttan da gsm modulden donen verileri izliyorum.
Sunucu tarafina ne gittigine bakmaya calisacagimm.

Besleme konusunda sikinti oldugunu zannetmiyorum. Zira sms atiyorum. Yine de kontrol edecegim.

Başlık: Ynt: Telit GL865 GET yöntemi ile bağlantı sorunu
Gönderen: ismail kaya - 26 Ocak 2017, 18:32:56
Hocam besleme voltajı kaç V? Ben 4v ile besliyordum.
Başlık: Ynt: Telit GL865 GET yöntemi ile bağlantı sorunu
Gönderen: sdonmez - 26 Ocak 2017, 19:18:20
3.7 v civarinda besleme voltajim var.
Başlık: Ynt: Telit GL865 GET yöntemi ile bağlantı sorunu
Gönderen: sdonmez - 27 Ocak 2017, 00:18:58
Şimdi devre üzerinden ölçtüm.
3.83V veriyorum

Başlık: Ynt: Telit GL865 GET yöntemi ile bağlantı sorunu
Gönderen: Klein - 27 Ocak 2017, 05:38:26
Get sorgusunun sonuna "\x1A"  karakteri eklemezseniz bazı siteler cevap vermiyor.
Başlık: Ynt: Telit GL865 GET yöntemi ile bağlantı sorunu
Gönderen: sdonmez - 27 Ocak 2017, 10:21:40
Alıntı yapılan: Klein - 27 Ocak 2017, 05:38:26
Get sorgusunun sonuna "\x1A"  karakteri eklemezseniz bazı siteler cevap vermiyor.

Bunu ilk defa duyuyorum. Deneyecegim.

Edit:  bu komut sms gondermede kullanilan Ctrl+Z.

Fakat dedigim gibi bazen gayet guzel cevap aliyorum. Anlamadigim da bu..

Ben ayni kartimla daha once de benzer bir sistem yapmistim. Boyle bir sorun yasamamistim. 9600 baud rate ile calisiyordum.

Sonra Int_rda kesmesi altindaki okuma sistemini, gelen verinin  bittigini algilayacagim sekilde switch-case yapisina donusturdum. Bu yapi cok daha guzel calisiyor cunku.. Ve 38400 baud rate'e ciktim..

Dun gece acaba okuma hizini arttirdigim icin mi boyle oldu diye dusundum ama degistiremedim henuz..

Web sorgusuna kadar olan AT komutlarinda 38400 baud da sorunum yok ama.. Web sorgusunda bir sekilde etkisi olabilir mi?

Başlık: Ynt: Telit GL865 GET yöntemi ile bağlantı sorunu
Gönderen: sdonmez - 29 Ocak 2017, 09:31:25
Sorunu hala çözemedim.

GSM modulü bile değiştirdim ama nafile..

Kendi sitemin haricinde www.telit.com (http://www.telit.com) adresine de sorgu göndermeyi denedim. Sorgu başarılı olmuş ise html kodlarının tamamını aldığımı gördüm. Fakat yaptığım sorguların çoğunda Bad Request alıyorum.

Modüle gönderdiğim komutlar:

fprintf(COM1, "AT#SKTD=0,80,www.telit.com\r");   
fprintf(COM1, "GET / HTTP/1.1\r\n");
delay_ms(50);                                   
fprintf(COM1, "Host: www.telit.com\r\n"); 
delay_ms(50);                                             
fprintf(COM1, "Connection: keep-alive");
delay_ms(50);                                           
fprintf(COM1, "\r\n\r\n"); 



Dönen Bad Request cevabı:


HTTP/1.1 400 Bad Request                                                     
Content-Type: text/html                                                     
Cache-Control: no-cache                                                     
Connection: close                                                           
Content-Length: 630
                                                           
X-Iinfo: 10-53068326-0 0NNN RT(1485670871684 5299) q(-1 -1 -1 -1) r(0 -1) b1
                                                                           
<html style="height:100%"><head><META NAME="ROBOTS" CONTENT="NOINDEX, NOFOLLOW">
<meta name="format-detection" content="telephone=no"><meta name="viewport" conte
nt="initial-scale=1.0"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrom
e=1"></head><body style="margin:0px;height:100%"><iframe src="/_Incapsula_Resour
ce?CWUDNSAI=2&xinfo=10-53068326-0 0NNN RT(1485670871684 5299) q(-1 -1 -1 -1) r(0
-1) b1&incident_id=0-432198904000481354&edet=3&cinfo=ffffffff" frameborder=0 wi
dth="100%" height="100%" marginheight="0px" marginwidth="0px">Request unsuccessf
ul. Incapsula incident ID: 0-432198904000481354</iframe></body></html>
       
NO CARRIER




Neyi yanlış yaptığımı bir türlü anlamıyorum. Yardımınızı rica ederim.
Başlık: Ynt: Telit GL865 GET yöntemi ile bağlantı sorunu
Gönderen: mufitsozen - 29 Ocak 2017, 14:03:49
AT#SKDT satirini daha dikkatli olusturunuz.
Başlık: Ynt: Telit GL865 GET yöntemi ile bağlantı sorunu
Gönderen: sdonmez - 02 Şubat 2017, 01:10:52
Merhaba,

Sorunu çözdüm. Problem, "fprintf(COM1, "AT#SKTD=0,80,www......com,255\r"); " komutunu sadece 1 kez gönderip cevap beklemek yerine arka arkaya göndermemden kaynaklanıyormuş. Ben CONNECT cevabı alıyorum nasıl olsa diye çok üstünde durmamıştım. Sanırım bir hataya sebep oluyordu.

Şimdi web sayfasına sorgu yapıyorum ve Switch-case içinde gelen verileri kontrol ediyorum. Yine takıldığım bir nokta oldu. Başka bir gözün daha kontrol etmesinde fayda var.

Web sayfasından dönen cevap şöyle:

HTTP/1.1 200 OK                                                                 
Cache-Control: private                                                         
Content-Type: text/html; charset=utf-8                                         
Server: Microsoft-IIS/8.5                                                       
X-AspNet-Version: 4.0.30319                                                     
X-Powered-By: ASP.NET                                                           
Date: Wed, 01 Feb 2017 21:50:05 GMT                                             
Content-Length: 693                                                             
                                                                               
                                                                               
                                                                               
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.or
g/TR/xhtml1/DTD/xhtml1-transitional.dtd">                                       
                                                                               
<html xmlns="http://www.w3.org/1999/xhtml">                                     
<head><title>                                                                   
                                                                               
</title></head>                                                                 
    <body>                                                                     
            <form name="form1" method="post" action="./deneme.aspx?id=78&amp;ver
i=1&amp;girisim=0" id="form1">                                                 
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJOTczNTMy
NjI5D2QWAgIDD2QWAgIBDw8WAh4EVGV4dAUFU2FkYW5kZGTXCEfVjpDT+E/H33ra6p0XUGO0mL/vqDu1
ZEF46JAxpA==" />                                                               
                                                                               
<input type="hidden" name="__VIEWSTATEGENERATOR" id="__VIEWSTATEGENERATOR" value
="5DFC4FE4" />                                                                 
                <span id="Label1">Sadan</span>                                 
    </form>                                                                     
                                                                               
    </body>                                                                     
</html>


Ben bu kod içindeki "Sadan" ifadesini arıyorum. Program bulamayınca, aralara ne olduğunu anlamak için bazı bayraklar, sayaçlar ekledim. Gördüm ki, "FlagA_cnt" sayacı bana "S" karakterinin dönen tüm cevap içinde 7 kez bulunduğunu gösteriyor. Halbuki "Sadan" içindeki "S" harfi sekizinci "S" karakteri.


RDA kesmesinin ilgili bölümü şöyle:


if(response_rcvd == 0)       
{                                 
indexS ++; 
                                         
    switch (gsm_state)       
{
case  0:
                response = 0;                   // Clear response
                if (tmp == 'O')                  // We have 'O', it could be "OK" or "Ok"
                  gsm_state = 1;                 // Expecting 'K'
                if (tmp == '>')                  // We have '>', it could be "> "     
                  gsm_state = 10;                // Expecting ' '
                if (tmp == 'E')                  // We have 'E', it could be "ERROR"
                  gsm_state = 30;                // Expecting 'R'
                if (tmp == "S")                  // We have 'S', it could be "Sadan"
                {                                                                   
                  gsm_state = 40;                // Expecting 'a'
                  gsc = 0;   
                  FlagA = 1;
                  FlagA_index = indexS;
                  FlagA_cnt ++;                   
                }
                if (tmp == 'R')                  // We have 'R', it could be "READY"
                  gsm_state = 50;                // Expecting 'E'
                if (tmp == '+')                  // We have '+', it could be "+CREG: 0,1"
                  gsm_state = 60;                // Expecting 'C'   
                if (tmp == 'G')                  // We have 'G', it could be "GPRS: 1"
                  gsm_state = 70;                // Expecting 'P'   
                if (tmp == 'C')                  // We have 'C', it could be "CONNECT"
                  gsm_state = 110;               // Expecting O   
                break;
case  1:                                                                   
                if (tmp == 'K') {                // We have 'K' ->
                  response = GSM_OK;             // We have "OK" response
                  gsm_state = 20;                // Expecting CR+LF
                }                 
                else                     
                  gsm_state = 0;                 // Reset state machine
                break;
      case 10:                       
                if (tmp == ' ')
                {
                  response_rcvd = 1;             // We have "> " response
                  response = GSM_Ready_To_Receive_Message; // Set reception flag
                  responseID = response;         // Set response ID
                  gsc = 10;
                }
                gsm_state = 0;                   // Reset state machine
                break;
      case 20:           
                if (tmp == 13)                   // We have 13, it could be CR+LF
                  gsm_state = 21;                // Expecting LF
                else
                  gsm_state = 0;                 // Reset state machine
                break;
      case 21:
                if (tmp == 10)
                {                // We have LF, response is complete
                  response_rcvd = 1;             // Set reception flag
                  responseID = response;         // Set response ID
                }                   
                gsm_state = 0;                   // Reset state machine
                break;
      case 30:
                if (tmp == 'R')                  // We have 'R', it could be "ERROR"
                  gsm_state = 31;                // Expecting 'R'
                else
                  gsm_state = 0;                 // Reset state machine
                break;                                                                                                                               
      case 31:
                if (tmp == 'R')                  // We have 'R', it could be "ERROR"
                  gsm_state = 32;                // Expecting 'O'
                else                     
                  gsm_state = 0;                 // Reset state machine
                break;
      case 32:                                           
                if (tmp == 'O')                  // We have 'O', it could be "ERROR"
                  gsm_state = 33;                // Expecting 'R'
                else
                  gsm_state = 0;                 // Reset state machine
                break;
      case 33:
                if (tmp == 'R'){                 // We have 'R'
                  response_rcvd = 1;             // We have "ERROR" response
                  response = GSM_ERROR;          // Set reception flag       
                  responseID = response;         // Set response ID
                }               
                gsm_state = 0;                   // Reset state machine
                break;
   case 40:
                if (tmp == "a")                  // We have 'a', it could be "Sadan"
                {
                  gsm_state = 41;                // Expecting 'd'
                  gsc = 40;   
                  FlagB = 1;
                  FlagB_index = indexS;               
                }
                else
                  gsm_state = 0;              // Reset state machine
                break;           
      case 41:
                if (tmp == "d")                  // We have 'd', it could be "Sadan"
                {
                  gsm_state = 42;                // Expecting 'a'
                  gsc = 41;   
                  FlagC = 1;
                  FlagC_index = indexS;
                }
                else
                  gsm_state = 0;                 // Reset state machine
                break;       
      case 42:
                if (tmp == "a")                  // We have 'a', it could be "Sadan"
                {
                  gsm_state = 43;                // Expecting 'n'
                  gsc = 42;
                }             
                else               
                  gsm_state = 0;                 // Reset state machine
                break;                 
      case 43:           
                if (tmp == "n")
                {                // We have "Sadan"
                  response_rcvd = 1;             //
                  response = GSM_WEBEND;          // Set reception flag
                  responseID = response;         // Set response ID
                  gsc = 43;   
                }
                else                   
                  gsm_state = 0;                 // Reset state machine
                break;   
       case 50:
                if (tmp == 'E')                  // We have 'E', it could be "READY"
                  gsm_state = 31;                // Expecting 'A'
                else
                  gsm_state = 0;                 // Reset state machine
                break; 
       case 51:
                if (tmp == 'A')                  // We have 'A', it could be "ERROR"
                  gsm_state = 31;                // Expecting 'D'
                else
                  gsm_state = 0;                 // Reset state machine
                break; 
       case 52:
                if (tmp == 'D')                  // We have 'D', it could be "ERROR"
                  gsm_state = 31;                // Expecting 'Y'
                else
                  gsm_state = 0;                 // Reset state machine
                break;                           
       case 53:
                if (tmp == 'Y'){                 // We have 'Y'
                  response_rcvd = 1;             // We have "READY" response
                  response = GSM_READY;          // Set reception flag
                  responseID = response;         // Set response ID
                }               
                gsm_state = 0;                   // Reset state machine
                break;   
       case 60:
                if (tmp == 'C')                  // We have 'C', it could be "+CREG: 0,1"   
                  gsm_state = 61;                // Expecting 'R'
                else
                  gsm_state = 0;                 // Reset state machine
                break;   
       case 61:                 
                if (tmp == 'R')                  // We have 'R', it could be "+CREG: 0,1"     
                  gsm_state = 62;                // Expecting 'E'   
                else
                    gsm_state = 0;               // Reset state machine
               break;                 
       case 62:                                                                                 
                if (tmp == 'E')                  // We have 'E', it could be "+CREG: 0,1"     
                  gsm_state = 63;                // Expecting 'G'   
                else
                  gsm_state = 0;                 // Reset state machine
                break;                               
       case 63:
                if (tmp == 'G')                  // We have 'G', it could be "+CREG: 0,1"   
                  gsm_state = 64;                // Expecting ':'     
                else
                  gsm_state = 0;                 // Reset state machine
                break; 
       case 64:
                if (tmp == ':')                  // We have ':', it could be "+CREG: 0,1"
                  gsm_state = 65;                // Expecting ' '
                else                   
                  gsm_state = 0;                 // Reset state machine
                break; 
       case 65:
                if (tmp == ' ')                  // We have ' ', it could be "+CREG: 0,1"
                  gsm_state = 66;                // Expecting '0'
                else
                  gsm_state = 0;                 // Reset state machine
                break; 
       case 66:
                if (tmp == '0')                  // We have '0', it could be "+CREG: 0,1"
                  gsm_state = 67;                // Expecting ','
                else
                  gsm_state = 0;                 // Reset state machine
                break; 
       case 67:
                if (tmp == ',')                  // We have ',', it could be "+CREG: 0,1"
                  gsm_state = 68;                // Expecting '1'
                else
                  gsm_state = 0;                 // Reset state machine
                break;                 
       case 68:                         
                if (tmp == '1'){                 // We have '1'   
                  response_rcvd = 1;             // We have "+CREG: 0,1" response
                  response = GSM_REGISTERED;          // Set reception flag 
                  responseID = response;         // Set response ID
                }
                else
                {
                  response_rcvd = 1;             // We have "+CREG: 0,x" response
                  response = GSM_NOTREGISTERED;  // Set reception flag 
                  responseID = response;         // Set response ID
                }   
                gsm_state = 0;                   // Reset state machine
                break;       
       case 70:
                if (tmp == 'P')                  // We have 'P', it could be "GPRS: 1"   
                  gsm_state = 71;                // Expecting 'R'
                else
                  gsm_state = 0;                 // Reset state machine
                break; 
       case 71:
                if (tmp == 'R')                  // We have 'R', it could be "GPRS: 1"   
                  gsm_state = 72;                // Expecting S'
                else
                  gsm_state = 0;                 // Reset state machine
                break;
       case 72:
                if (tmp == 'S')                  // We have 'S', it could be "GPRS: 1"   
                  gsm_state = 73;                // Expecting ':'
                else
                  gsm_state = 0;                 // Reset state machine
                break;   
       case 73:
                if (tmp == ':')                  // We have ':', it could be "GPRS: 1"   
                  gsm_state = 74;                // Expecting ' '
                else
                  gsm_state = 0;                 // Reset state machine
                break;               
       case 74:
                if (tmp == ' ')                  // We have ' ', it could be "GPRS: 1"   
                  gsm_state = 75;                // Expecting '1'
                else
                  gsm_state = 0;                 // Reset state machine
                break;
       case 75:
                if (tmp == '1'){                 // We have '1'   
                  response_rcvd = 1;             // We have "GPRS: 1" response
                  response = GSM_IPPRESENT;      // Set reception flag 
                  responseID = response;         // Set response ID     
                }
                else           
                {
                  response_rcvd = 1;             // We have "GPRS: 0" or "GPRS: 2" response
                  response = GSM_IPNOTPRESENT;   // Set reception flag 
                  responseID = response;         // Set response ID
                }   
                gsm_state = 0;                   // Reset state machine
                break;     
       case 110:
if (tmp == 'O'){              // We have 'O', it could be "CONNECT"
gsm_state = 111; 
gsc = 110;
}
else                         
gsm_state = 0;
break; 
       case 111:
                if (tmp == 'N'){              // We have 'N', it could be "CONNECT"
                     gsm_state = 112; 
                     gsc = 111;
                }
                else                                   
                     gsm_state = 0;
                break;
       case 112:
if (tmp == 'N'){              // We have 'N', it could be "CONNECT"
gsm_state = 113;   
gsc = 112;
}
else
gsm_state = 0;
break;   
       case 113:
if (tmp == 'E'){              // We have 'E', it could be "CONNECT"
gsm_state = 114;
gsc = 113;
}                   
else
gsm_state = 0;
break;   
       case 114:
if (tmp == 'C'){              // We have 'C', it could be "CONNECT"
gsm_state = 115;   
gsc = 114;
}
else
gsm_state = 0;
break;
       case 115:                 
if (tmp == 'T'){              // We have 'T'
                  response_rcvd = 1;            // We have "CONNECT" response
                  response = GSM_CONNECT;        // Set reception flag
                  responseID = response;        // Set response ID
                  gsc = 115;
                } 
gsm_state = 0;
break;
      default:                                  // Unwanted character
                gsm_state = 0;                   // Reset state machine
             
    }                                 
                     
  }           


"Sadan" ifadesi için konuşacak olursak, normalde Case 0, 40, 41,42... adımlarını izlemesi lazım fakat son "S" yi bulamıyor.
Gece gece yine kafamı karıştırdı.

Başlık: Ynt: Telit GL865 GET yöntemi ile bağlantı sorunu
Gönderen: sdonmez - 02 Şubat 2017, 01:26:26
Buldum.

">" kontrolünden kaynaklıymış. Teşekkürler