Picproje Elektronik Sitesi

DERLEYİCİLER => CCS C => Konuyu başlatan: eqooo - 20 Ağustos 2014, 14:54:43

Başlık: Seri Haberleşme Protokol Öneri
Gönderen: eqooo - 20 Ağustos 2014, 14:54:43
Merhabalar;
   PIC C üzerinde kod yazıyorum ve seri haberleşme ile ilgili kafama takılan birkaç sorum olacak.
RF haberleşmede   "PUTC" fonksiyonu kullanarak seri porttan 8 bitlik veriyi gönderiyorum ve işlemcinin alıcı kısmından rahatlıkla alıyorum.
Bu konuda sıkıntı yok ama kontrollü veri göndermek istiyorum. Benim belirlediğim bir protokol olsun istiyorum.
Yapmak istediğim;
1- putc gibi bir fonksiyon kullanarak başına veya sonuna bit ekleyerek 8 biti aşan bir fonksiyon yazılabilir mi?  Yada puts ile böyle birşey yapmam mümkün mü ?
2- bir protokol oluşturmada ana esasları nasıl sağlayabilirim.

İyi çalışmalar...
Başlık: Ynt: Seri Haberleşme Protokol Öneri
Gönderen: RaMu - 20 Ağustos 2014, 15:27:07
Usart Uart SPI RS232 I2C vs. gibi seri haberleşme protokolleri donanımları mevcut,
istediğin işlemi yapıyorlar ve
bunlar mikrodenetleyicilerin içerisinde donanım olarak bulunuyor.

Eğerki yazılımsal RS232 kullanmıyorsan
(ki büyük ihtimalle kullanmıyorsun)
senin putc şeklinde kullandığın fonksiyonda
(ayarlarını o şekilde yaptıysan)
halihazırda bazı kontrol parametreleri içerir
start bit stop bit parity gibi.

Bahsettiğim protokolleri ve donanımları inceleyebilirsin
aslında ihtiyacın olmasada
bunlara bakarak kendi protokolünüde oluşturabilirsin
Başlık: Ynt: Seri Haberleşme Protokol Öneri
Gönderen: MrDarK - 20 Ağustos 2014, 21:10:09
Protokoldan ziyade sanırım komut yapısı yapmak istiyorsun ?

Misal bluetooth wifi gsm gibi donanımlar AT Komut seti kullanır. Bunun gibi yapılar istiyorsun sanırsam.

Örnek ; LED=0; MOTOR=2;

gibi yapılardan mı bahsediyorsun ? Biraz daha örnekli sorular sorarsan daha verimli bir yardım alabilirsin.
Başlık: Ynt: Seri Haberleşme Protokol Öneri
Gönderen: kimlenbu - 21 Ağustos 2014, 08:46:11
Ben anladığım kadarıyla cevap vereyim. Misal GPS modüller. Size seri olarak veri yollarlar, örnek bir veri şu şekildedir :

$GPGGA,000353.000,,,,,0,0,,,M,,M,,*4D

arkasından CR (Carriage Return) ve LF (Line Feed) karakteri gönderir.

Yani siz buffer'a CR ve LF hariç bütün karakterleri atarsınız. LF karakterini görünce anlarsınız ki size bir satır veri gelmiş. Sonra bu veriyi işlersiniz.

Misal "$GPGGA" verisi gelmiş, bunun 5. ve 6. virgülleri arasında şu bilgi var diyip string fonksiyonları ile bu veriyi ayrıştırabilirsiniz.

2+ işlemcili bir sistem yaptığımda veya bilgisayar ile haberleşme yapacağımda misal $BASLA gibi bir komut gönderiyorum. Diğer işlemci $ işaretini görünce sonraki 5 karakteri kontrol ediyor, eğer geçerli bir komutsa gerekli işlemleri yapıyor.

Başlık: Ynt: Seri Haberleşme Protokol Öneri
Gönderen: eqooo - 21 Ağustos 2014, 09:15:33
Cevaplarınız icin teşekkür ederim.
@MrDarK kardeşim asıl yapmak istediğim  @kimlenbu arkadaşımın anlattıklarının aynısı diyebilirim. mesela veri olarak 123 göndereceğim ama benim protokolden söyle çıksın istiyorum £123$. Alıcıda da çözümleyim  £ isareti ile $ işareti arasinda kalan veriyi almayı hedefleyen birşey istiyorum aslında.
Başlık: Ynt: Seri Haberleşme Protokol Öneri
Gönderen: MrDarK - 21 Ağustos 2014, 11:48:06
Alıntı yapılan: eqooo - 21 Ağustos 2014, 09:15:33
Cevaplarınız icin teşekkür ederim.
@MrDarK kardeşim asıl yapmak istediğim  @kimlenbu arkadaşımın anlattıklarının aynısı diyebilirim. mesela veri olarak 123 göndereceğim ama benim protokolden söyle çıksın istiyorum £123$. Alıcıda da çözümleyim  £ isareti ile $ işareti arasinda kalan veriyi almayı hedefleyen birşey istiyorum aslında.

Madem böyle birşey yapmak istiyorsun o zaman birkaç örnek göstereyim ; istediğini seç

https://www.google.com.tr/search?q=stx+etx+packet+protocol&rlz=1C1OPRB_enTR555TR555&espv=2&source=lnms&tbm=isch&sa=X&ei=5LH1U9SLEKvXyQPhp4I4&ved=0CAcQ_AUoAg&biw=1680&bih=949 (https://www.google.com.tr/search?q=stx+etx+packet+protocol&rlz=1C1OPRB_enTR555TR555&espv=2&source=lnms&tbm=isch&sa=X&ei=5LH1U9SLEKvXyQPhp4I4&ved=0CAcQ_AUoAg&biw=1680&bih=949)

Ascii karakter yapılarında ETX STX SOH gibi komutlar var bunları kullanman yararına olacaktır. Bu sayede nerede başlıyor nerede bitiyor öğrenebilirsin.