Bluetooth ile yüksek boyutlu veri aktarımı algoritma önerisi

Başlatan Mucit23, 18 Aralık 2015, 09:53:06

Mucit23

Selamlar,

Bluetooth modülü ile yüksek boyutta veri aktarımı yapmaya çalışıyorum. Verim yaklaşık olarak 300x200 boyutlarında bir resimden oluşuyor Her bir pixeli göndermem gerekiyor. Her bir pixel 16 bit derinlikte. Gönderici birim resmi hafızadan sırasıyla okuyor ve uarttan bluetooth ile gönderecek. Alıcıda ise gelen pixel datalarını bekletmeden ekrana basmam gerekiyor. 

Doğru düzgün bir algoritma kuramadım. Bu işi kesintisiz bir şekilde yüksek hızda yapmam gerekiyor. Şuan tek sıkıntım her bir pixeli paketleyip karşıya mümkün olabilecek en yüksek hızda gönderebilmek .

Her bir pixel datasının 16 bit olması biraz işleri karıştırıyor. Birde senkronizasyon meselesi var. Dün biraz uğraştım ama çalışan bir sonuç elde edemedim. Bluetooth modülünü şuanda 38400 baudrate ile kullanıyorum. haberleşme mantığını oturtursam veri hızını arttıracam.

Benim sıkıntı çektiğim noktalar şunlar.
Arada bluetooth modülü olduğu için verinin tam olarak karşıya gidip gitmediğini nasıl anlayacağımı bilmiyorum. Bu yüzden veri gönderim hızını ayarlamakta sıkıntı çekiyorum. Her bir paket sonrası karşı taraftan onay beklesem veri hızı çok düşüyor. (bu şekilde de gönderemedim) Birde verilerin 16 bit olması sıkıntı yaratıyor.

Bu iş için algoritma önerisine ihtiyacım var.

Gökhan BEKEN

Gerek rf gerek kablolu olsun bir işte usart kullanıyorsan verilerin paketli olacak. Paket başlangıcın en az 2 byte olacak. Canlı iletişimde verinin gidip gitmediği çok sorgulanmaz. Ama dosya gönderiyorsan paket sonuna checksum eklemelisin.
Özel mesaj okumuyorum, lütfen göndermeyin.

CaFFeiNe

nasıl hızlı olacak ben anlamadım, 38400bps te 25-30 saniye sürer bu iş

300x200x16 = 960000 bit
960000/38400 = 25sn (checksum filan yok)

kantirici

Senkronazisyon için paket başlangıcında ve sonunda tanımlı bir veri gönderirisin. Çok sorun değil.

Daha sonra sırasıyla okuduğun 16 bit dataları 8-8 standart yapıda karşı tarafa gönderirsin.
Başlama datası geldikten sonra Karşı tarftan gelen ilk byte ı alır sonraki byte ı bekler. 2. byte gelince ikisini birleştirir ekrana basar. Bu işlem sürekli tekrarlanır.
Son olarak paket sonu ile de tüm verinin geldigi anlaşılır.

HC06-05 ler değil ama kaliteli BL modüller 900KBps e ve üzerinde data gönderiyorlar. Hız sorun olmaz gibime geliyor. Tabi şu da var o hızlarda hata kontrolü yapmak gerekecektir. Ayrıca iki byte arasında veriyi işleyip gondermekte gerekecek.

Mucit23

Şöyle bir yöntem aklıma geldi. 16 Bit pixel datası gönderecektim ama resim zaten en fazla 10 farklı renkten oluşuyor. Bu yüzden her renge ait bir kod belirleyip 8 bitlik boyut üzerinden sadece o kodları göndereceğim. Karşı tarafta sadece gelen dataları ayıklamam gerekecek. Nasıl bir sonuç çıkar Akşam deneyip göreceğim.

Eğer 115200 ile gönderirsem (300*200*8)115200=4,16sn

kralsam

Merhaba,

Bence işlemci yeterince güçlü ise sıkıştırma yapmalısın. Oldukça rahatlatacaktır.(Kamera vs. ise yani renk sayısı çok olursa verimsiz olabilir)
https://tr.wikipedia.org/wiki/Huffman_kodu
https://www.youtube.com/watch?v=dM6us854Jk0

CaFFeiNe


peko

Alıntı Yap4,16sn

Yine de çok uzun bir süre.

Karşı tarafta oluşturulacak görseller için template'ler belirleyip saklanabilirse sadece display edilecek data gönderilmesi yeterli olur gibi düşünüyorum. Tabii eğer mümkünse yapı gereği..
" Bazıları zeka'sını iş'i zorlaştırmak için, bazıları ise kolaylaştırmak için kullanır.. "

E3A4

Slm hocam anladığım kadarıyla max 10 farklı renk var ve bunları kodlarsan 4 bit ile bir pixel basabilirsin yani bir byte ile iki pixel basabilirsin tum resim içinde start ve checksum koyarak datayı analiz edebirisin.Tabi sıkıstırma yontemi ile hızını dahada arttırabilirsin.

engerex

4 bit sana yetiyor. Sıkıştırılan gönderim hızı artacaktır. Daha da hızlanma gerekirse 10 renk hepsi sürekli kullanılıyorsa 1-2-3-4 bit dönüşümlü gönderebilirsiniz.