AT KOMUTLARINI NASIL GÖNDEREBİLİRİM?

Başlatan fuko88, 15 Mayıs 2006, 13:02:25

fuko88

merhaba

CCS kullanıyorum.
iki PIC'i seri şekilde haberleştirebiliyorum. Ancak PIC den bir modeme AT komutlarını nasıl gönderebilirim?

Daha önce böyle bir uygulama yapan var mı?

ya da nasıl yapıldığını bilen?

Teşekkürler.

Klein

AT komutlarını göndermek için özel birşey yapmana gerek yok. Seri porttan ASCII olarak ATxxxx şeklinde gönderebilirsin. Aşağıdaki şekilde gönderebilirsin. Aşağıdaki (CMGR=900)komut cep telefonuna gelen mesajı okur.

void sendstr(char *source){
	 unsigned char count;
	 for(count=0;source[count]!=0;count++){
		senddata(source[count]);
	 }
	 senddata(13);
	 senddata(10);
}

sendstr("AT+CMGR=900");


Mod Notu : kod verirken code.../code

FEHMİ_ASM

#2
    Bağlantı kurmak istediğim modül bir RF alıcı verici. Modülün HandShake komutu aşağıdaki gibi.
Command  :             AT+DMOCONNECT <CR><LF>
Response  :            +DMOCONNECT: 0<CR><LF>   


   Yukarıdaki komutları gönderdiğimde  response bekleyeceğim. Sorum şu; gelen response yi yazılımla nasıl test edebilirim? Response'yi diziye mi atmam lazım kontrol etmem için yoksa daha kolay bir yolu var mı?  C18 kullanıyorum.

   Yoksa biraz ilkel gibi olsa da aşağıdaki gibi mi kontrol etmeliyim:
   
    gets1USART (Array,0);

    if (Array [12] == 0) //Dizinin 12. elemanı response'da "0" olarak belirtilmiş, orası yeterli sanırım test için
      {
      True.....
      }

Hz.Hamza'nın Belinde İki Kılıç Duruyor ! Attığı Her Adım Bir Kalbi Durduruyor ! Ey Hamza ! Gördüğün Hiçbir Şeyden Korkmazsın , Bu Doğru Ama Heybetini Gizli Tut , Yürüyüşün Ölümü Korkutuyor !  İşte Hz.Ömer ve Hz.Ali , Biri Hattaboğlu , Biri Haydâr-ı Kerrar ! Ve Kolkola Ölümün Ağzına Giriyorlar !  Azrai

Klein

Bir proje için aşağıdaki kodu yazmıştım. Sorun çıkarmadı. Kullanabilisin.
Her rx kesmesi geldiğinde çağırılıyor. parametresi seri porttan alınan bayt.
response.expected[]  beklenen mesajı içeren array. 
Beklenen mesaj geldiğinde
gprs_comm_flag.rx_ok bayrağı çekiliyor.

gprs_rx(char c){  
  gprs_comm_buf[gprs_comm_ctrl.rx_count]=c;
  if(gprs_comm_ctrl.rx_count < 30) gprs_comm_ctrl.rx_count++;
  gprs_comm_ctrl.response_timeout=0;
  if( c == response.expected[gprs_comm_ctrl.rx_index]) {
    gprs_comm_ctrl.rx_index++;
    if(response.expected[gprs_comm_ctrl.rx_index] == '\0'){
        gprs_comm_ctrl.rx_index=0;
        gprs_comm_flag.rx_ok=1;
    }
  } else gprs_comm_ctrl.rx_index=0;
    
}

FEHMİ_ASM

    Ben sadece tx kullanacağım. Response benim için sadece Status içerdiğinden ve ne çıkacağını tahmin ettiğimden o süre boyunca bekleme yapıyorum.

     Pic16 ile haberleşme kurmaya çalışıyorum. Yukarıdaki verdiğim AT komutlarının sonlarındaki "<CR><LF>" karakterlerini de aynı şekilde (sekiz adet ascii karakter olarak) mi göndereceğim? Yoksa bunlar başka bir şeye mi karşılık geliyor da karşılığını mı bulacağım-göndereceğim?
Hz.Hamza'nın Belinde İki Kılıç Duruyor ! Attığı Her Adım Bir Kalbi Durduruyor ! Ey Hamza ! Gördüğün Hiçbir Şeyden Korkmazsın , Bu Doğru Ama Heybetini Gizli Tut , Yürüyüşün Ölümü Korkutuyor !  İşte Hz.Ömer ve Hz.Ali , Biri Hattaboğlu , Biri Haydâr-ı Kerrar ! Ve Kolkola Ölümün Ağzına Giriyorlar !  Azrai

Klein


FEHMİ_ASM

    Evet, dediğiniz gibi 0D ve 0A bilgilerini gönderdim, şu köşeli adını bilmediğim parantezleri " < > " göndermedim. Virtual terminalde üç dizi alt alta gözüktü, "yeni satır" ve "satır besleme" dedikleri bu demek ki.
Hz.Hamza'nın Belinde İki Kılıç Duruyor ! Attığı Her Adım Bir Kalbi Durduruyor ! Ey Hamza ! Gördüğün Hiçbir Şeyden Korkmazsın , Bu Doğru Ama Heybetini Gizli Tut , Yürüyüşün Ölümü Korkutuyor !  İşte Hz.Ömer ve Hz.Ali , Biri Hattaboğlu , Biri Haydâr-ı Kerrar ! Ve Kolkola Ölümün Ağzına Giriyorlar !  Azrai