2 pic arasında rs232 ile veri aktarımı

Başlatan zengdai, 11 Haziran 2014, 17:15:56

zengdai

Sürekli olarak, 10 farklı değişkeni bir picten diğerine aktarmak istiyorum. Bunu nasıl yapabilirim işin içinden çıkamadım. Nasıl algoritma ile çalışmam gerekiyor yardım ederseniz sevinirim.

xoom


elektronart

Genelde iki birim arasında veri aktarılırken bir başlık(header), paket uzunluk bilgisi, içerik, opsiyonel olarak içerikler arası ayraç, paket doğruluğunu kontrol için checksum ve kapatma bilgisi olur.
örnek: değişkenlerin hepsinin int olduğunu düşünelim
0xAA   ile paket paşlıyor
0x15   2x10 byte + checksum
0x11  1. integer High
0x11  1. integer Low
0x22  2. integer High
0x22  2. integer Low
..
..
0xAB  checksum
0x55  paket kapatılıyor
Açık Elektronik

zengdai

10 float değer, bu değerleri karşılayacak(yani receive bölümü) tarafta ard arda okuma komutu tekrar ederek mi mesajı alacağım?   

elektronart

https://www.picproje.org/index.php/topic,53788.0.html
bu konuya bir bak, 2. mesajda Tagli hocam bir yapı göndermiş. Eğer ard arda veriler almak gerekiyorsa bu işi interruptın içinde protokolü karşılayacak bir kod yazarak yapmak kolay ve güvenli olur. Seriport alıcı interruptın içinde State döngüsü kurulur ve ana kodun içinde state kontrol edilir. Interruptın içinde state "tüm paket alındı" durumuna çekildiğinde alınan tüm paket ana kodun içinde  işlenir. Tek tek gelen tüm veriyi ana kod içinde işlemek zahmetli olur.
Açık Elektronik

ali.bayuk

- hocam gönderici olarak bir dizi içine @elektronart'ın dediği gibi yerkeştir verilerini ve seri olarak gönder.
- alıcı tarafında seri port kesmesi kur. bir tane buffer tanımla. her kesme geldiğinde bufferin bir sonraki indisine ekle. program akışında bufferini kontrol et ve eğer bitiş baytın geldiyse bütün veriyi ayrıştır istediğin verileri dağıt sonra bufferı sil.

zengdai

hocam, IMU sensörlerini çıktılarını(ki bu 9 eksen ve 9 adet veri demek ) bilgisayara aktarmak istiyorum.
Bunun tek yolu bumu? Yanlış anlamadıysam tavsiye ettiğiniz yöntemlerde circular buffer gibi birşey yapılmış.
Basit bir yöntem varsa da paylaşırsanız sevinirim.
Selametle

MrDarK

Alıntı yapılan: ali.bayuk - 21 Haziran 2014, 21:16:20
- hocam gönderici olarak bir dizi içine @elektronart'ın dediği gibi yerkeştir verilerini ve seri olarak gönder.
- alıcı tarafında seri port kesmesi kur. bir tane buffer tanımla. her kesme geldiğinde bufferin bir sonraki indisine ekle. program akışında bufferini kontrol et ve eğer bitiş baytın geldiyse bütün veriyi ayrıştır istediğin verileri dağıt sonra bufferı sil.

Yapmak istediğin işin en basit yöntemi budur. Örnek yapı inceleyip anlaman gerekiyor mantığı, misal GPS modüllerinin verdiği datalar içinden GPRMC kodunu çekmek gibi birşey bu sistem. Kod istersen basit birşeylerde karalayabiliriz arkadaşlarla fakat arkadaş gayet net ve basit yapman gerekeni söylemiş.
Picproje Eğitim Gönüllüleri ~ MrDarK