seri porttan gelen veriyi çizdirme

Başlatan modernherakles, 28 Şubat 2010, 23:58:53

modernherakles

Selamlar,

Sorun şu ki seri porttan mikroişlemci datalar gönderiyor matlabte bunları alıp okuyabiliyorum ancak benim yapmak istediğim u aldıgım degerleri çizdirmek. idn bir datasının içersinde 0.01 gibi değerler var ama ben bunu anlık olarak çizdirmeliyim .

içimnden çıkamadım bu durumda, bilen kişilerin yardımına ihtiyacım var.matlabte yeni sayılırım ancak programlama bilgim var.Her türlü yardım iyi olurdu.

matlab kodu:
% To construct a serial port object:
         s1 = serial('COM1');
       % To connect the serial port object to the serial port:
         fopen(s1)
       % To query the device.
         fprintf(s1, '*IDN?');
         fscanf(s1);
     idn1 = fscanf(s1);
     idn2 = fscanf(s1);
     idn3 = fscanf(s1);
       % To disconnect the serial port object from the serial port.
         fclose(s1);
If we hear, we forget; if we see, we remember; if we do, we understand – Confucius

modernherakles

soruyu daha açık yazarsak seri porttan gelen değerler ascii kodunda, bunları çizdirmem için float tipine çevirmeliyim daha sonrada anlık olarak çizdireeğim bunu yapabilen matlab komutu nedir?
If we hear, we forget; if we see, we remember; if we do, we understand – Confucius

ferdem

Portu açtıktan sonra porta gelen veri "default" değeri 512 byte olan bir "buffer" a yazılıyor(boyutu değiştirebilirsiniz). fread ile bu buffer ın tamamını veya istediğiniz miktarını okuyabilirsiniz, fread verinin 10 luk sistemdeki değerini döndürüyor. Nesnemizin adı s olsun, disp(s) ile(veya get(s,'BytesAvailable') ile) kaç byte veri geldiğini görebilir, plot(fread(s)) ile gelen verileri basitçe çizdirebilirsiniz. Veri akışı sürekli ve bunu gerçek zamanlı takip etmek istiyorsanız buna hemen verebileceğim bir önerim yok ancak x byte gelecek ve duracak diyorsanız:
s = serial('COM1','BAUD',9600);
fopen(s);

ile portu açın, veriler gelsin, sonra da:
plot(fread(s));

ile çizdirin. Kolay gelsin.

kemalkemal

merhaba
aynı problemle karşı karşıyayım. başlığı görünce atladım hemen , ama tam bir çözüm yok gördüğüm kadarıyla. Simulink'in xPC Target toolbox'ında RS232 kütüphanesi var. Oradan yapmayı deneyeceğim. Ama tam bir cözümü yada başka bir fikri olan varsa çok makbule geçer :)
şimdiden teşekkürler

modernherakles

merhaba kemal kardeşm ben sorunu bir kanadada robotik sitesindeki kodu revize ederek aştım, fakat aklında olsun forumda da vardı italyan bi eleman kendisi simulinkte RS-232 kütüphanesi yapmış ben ugrasamdım kod daha kolayıma geldi ama istediğim tüm verileri çizdirmekti şimdi 10datada bir falan alıyorum çokda ilgilenemedim sonra.

siteyi buldum burada bu adam arduino işlemcisi ile gerçekleştimiş faydası olabilir.

http://robotgrrl.com/blog/2010/01/15/arduino-to-matlab-read-in-sensor-data/
hoşçakal
If we hear, we forget; if we see, we remember; if we do, we understand – Confucius