AT Komutları

Başlatan gokayk, 28 Şubat 2012, 18:57:46

gokayk

Arkadaşlar merhaba,

AT komutları ile çalışan arkadaşlar var mı?

Bir projeme bu özelliği eklemek istiyorumda, at komutlarını destekleyen telefon modellerini buldum birini spariş ettim hatta. Önce seri port üzerinden deneyeceğim, daha sonra (çalışırsa) devrem üzerine entegre edeceğim. Tecrübesi olan arkadaşların görüşlerini bekliyorum.

Teşekkürler.

skara1214

Herkes ölür ama herkes gerçekten yaşamaz


gokayk

Tekrardan merhabalar.

AT komutlarını destekleyen bir cep telefonum var. Hyper Terminal ile haberleştirdim, AT enter'dan sonra OK dönüşünü alıyorum.
PIC 18f452 ile hazırladığım devre max232 aracılığı ile Hyper Terminal ile haberleşmekte.
Fakat cep telefonum ile devremi haberleştirirken bazı sorunlar yaşıyorum.

Kısaca kod şu şekildedir:

#use rs232 (baud=9600, xmit=pin_C6, rcv=pin_C7, STREAM = PC)
#use rs232 (baud=9600, xmit=pin_C4, rcv=pin_C5, STREAM = PHONE)

char klavye[80];
char telefon[80]; 

while(1)
{
      fprintf(PHONE,"AT");  //cep telefonuna AT göndermekte
      delay_ms(100);
      fputc(0x0d,PHONE);  //cep telefonuna AT komutundan sonra enter göndermekte
      delay_ms(1000);
      fprintf(PC, "\n\rTelefona gonderilen: AT\n"); //Telefona gönderilen AT komutu hyper terminalde görüntülenmekte.
      fgets(telefon,PHONE);  //cep telefonundan gelen verileri telefon değişkenine atamakta
      fprintf(PC, "\n\rTelefondan gelen: %s\n",telefon);  //telefondan gelen veriyi hyper terminalde görüntülemekte.
}


Bu kodları yazdığımda fgets(telefon,PHONE); kısmında program donmakta. Birkaç araştırmadan sonra PHONE'dan gelen değerleri telefon değişkenine byte byte atadım, fakat sonuç değişmedi.

Konu hakkında yardımcı olabilecek biri var mı?

Teşekkürler,

skara1214

demekki bilgisayar sadece enter yollamıyor başka bir karakter daha yolluyor bunu bulmaya çalışın bence(kullandığınız cep telefonunun modeli nedir?)
Herkes ölür ama herkes gerçekten yaşamaz

LukeSkywalker

arada koyduğunuz beklemeden kaynaklanıyor sorun. Telefon anında gönderiyor cevabını fakat siz o arada bekleme yapıyorsunuz. Telefona "OK" gönderdikten hemen sonra fgets kullanın..

cemilkendir

aradaki 1000ms lik geçikme esnasında data geliyor olabilir ve sen bunu kaçırmış olabilirsin

gokayk

Alıntı yapılan: skara1214 - 25 Mart 2012, 20:23:30
demekki bilgisayar sadece enter yollamıyor başka bir karakter daha yolluyor bunu bulmaya çalışın bence(kullandığınız cep telefonunun modeli nedir?)

Enter'ı bilgisayar göndermiyor, başka bir karakter daha gönderiyor derken? Ne demek istediğinizi anlayamadım. ???
Kullandığım telefon modeli sony ericsson t290

gokayk

Alıntı yapılan: cemilkendir - 25 Mart 2012, 21:24:45
aradaki 1000ms lik geçikme esnasında data geliyor olabilir ve sen bunu kaçırmış olabilirsin

Ne yapmam gerekir peki?

gokayk

Alıntı yapılan: maytere - 25 Mart 2012, 20:51:11
arada koyduğunuz beklemeden kaynaklanıyor sorun. Telefon anında gönderiyor cevabını fakat siz o arada bekleme yapıyorsunuz. Telefona "OK" gönderdikten hemen sonra fgets kullanın..

Telefona AT gönderin demek istediniz sanırım, peki bu enter komutunu ne yapacağız?

LukeSkywalker

#10
Evet yanlis yazmisim. At olacakti o ok. Arkadasim at ve cr gonderdikten sonra fgets komutunu kullan diyorum. Gecikme kullanma. Telefonun modeli nedir?

gokayk

Alıntı yapılan: maytere - 25 Mart 2012, 22:57:48
Evet yanlis yazmisim. At olacakti o ok. Arkadasim at ve cr gonderdikten sonra fgets komutunu kullan diyorum. Gecikme kullanma. Telefonun modeli nedir?

sony ericson t290

Dediğiniz gibi yaptığımda dahi fgets() komutundan çıkamıyor devre  ???

cemilkendir

fgets() komutu 0x0d yada 0x0a karakterinin gelmesini bekler eğer telofon "ok" yazısının sonuna bu bahsettiğim karakterleri eklemiyorsa fgets komutunda takılı kalır.
kesin sonuç için ccs c nin help dosyalarına bak orada tam olarak göstermişdir

LukeSkywalker

getch komutunu kullan o zaman. Karakterleri teker teker alarak ekrana bas.

pax

ben de Siemens c55 ile gsm kontrollü otomasyon projesi yapmıştım. ilk başlarda aynı sıkıntıları ben de yaşadım. sorunu şu şekilde çözdü önce telefonu haberleşme için hazırlaman gerekiyor. :) bunun içinde şu kodları kullanmıştım ben bunları dediğim gibi siemens için kullandım siz kendi kullandığınız telefonun özelliklerine göre ayarlamanız gerekiyor.
void setup_tlf()
{
   fprintf(gsm,"ATZ");  delay_ms(1000);
   fputc(0x0d,gsm);delay_ms(5000);
   
   
   fprintf(gsm,"AT+IPR=19200");  delay_ms(1000);
   fputc(0x0d,gsm);delay_ms(1000);
   
   
   fprintf(gsm,"ATE0");  delay_ms(1000);
  fputc(0x0d,gsm);delay_ms(1000);
 
}

ben sorunumu bu şekilde çözdüm inşallah sizin için yararlı olur .