Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

Seri Haberleşme Protokol Öneri

Başlatan eqooo, 20 Ağustos 2014, 14:54:43

eqooo

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...

RaMu

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
Sorularınıza hızlı cevap alın: http://www.picproje.org/index.php/topic,57135.0.html

MrDarK

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.
Picproje Eğitim Gönüllüleri ~ MrDarK

kimlenbu

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.


eqooo

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.

MrDarK

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

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.
Picproje Eğitim Gönüllüleri ~ MrDarK