NI Ürünleri İle İlgili Tartışmalar

cancel
Showing results for 
Search instead for 
Did you mean: 

Sub.vi den anlık sürekli veri çekme

Solved!
Go to solution

Herkese Selamlar. While döngüsü içerisinde bütün işlemlerini gerçekleştiren bir sub.vi den main.vi ye nasıl sürekli veri çekebilirim? Sub.vi sürekli çalışmak zorunda. 

 

Mevcut durumda sub.vi sürekli döndüğü için (sürekli çalışması gerek) main.vi ye verileri aktarılmıyor.

 

Bu konuda nasıl bir yol izlemem gerekiyor? Yardımcı olurmusunuz.

Teşekkürler.

0 Kudos
Message 1 of 13
(7,332 Views)
Solution
Accepted by keremgeliz

Merhabalar Kerem,

 

En kolay yöntemlerden birisi Global bir değişken tanımlayıp, Sub vi içerisinde devamlı ürettiğin datayı bu değişkene set edip,Main vi da ise devamlı bu değişkeni okuyarak bu işi çözebilirsin.(Race Condition oluşması senin için önemli değilse bunu kullanabilirsin.)

Fakat SubVi'da üretmiş olduğun datanın kayıpsız ve sıralı bir şekilde Main vi'a aktarılmasını istiyorsan Queue yapısını(Produce-Consume) kullanarak daha iyi bir çözüm sağlamış olursun.(Sub Vi Enqueu yapar,Main Vi ise Dequeu yapar.)

 

Saygılarımla... 

Himmet GENCER
Software Development Coordinator at TDG
himmetgencer@gmail.com

View Himmet Gencer's profile on LinkedIn

View on Instagram
Message 2 of 13
(7,321 Views)

Sorunumu global değişken kullanarak çözdüm (aslında ilk önce sub.vi yi while loop tan çıkardım ve main vi de while loopa yerleştirdim öyle hallettim ama forumları tararken global değişkenin daha kullanışlı bir yöntem olduğunu görünce global değişken kullandım). Queue yapısı sanırım daha büyük verilerin aktarımı için en iyi çözüm. Bu konuya en kısa zamanda çalışmayı düşünüyorum.

 

Şimdi şöyle bir sorunla karşı karşıyayım. Bir excel tablom var, Labviewde bir işlem yapıp örneğin sonuç olarak A sayısını buluyorum. Bu A sayısı excel tablomda 1. sütun (Labview deki işlem sonucu çıkan bütün sonuçlar 1. sütunda) 5. satırda ve ben tabloda A satırında başka bir veriyi labview e aktarıp onu işleme sokmak istiyorum.

 

Örneğin: 1. Sütün 5. Satır A labview bunu bulacak ve 5. satır 15. sütun B bunu programa çekecem.

 

Bir nevi tablo okuyup karşılığına denk gelen sayıyı çekme işlemi yaptıracam. Nasıl bir yol izlemem gerekiyor. 

 

Teşekkür Ederim.

0 Kudos
Message 3 of 13
(7,309 Views)

Merhabalar Kerem Bey,

 

Read From SpreadSheet File fonksiyonu yardımı ile bu istediklerinizi yapabilirsiniz diye düşünüyorum. Aşağıdaki linklerden bu fonksiyon ile ilgili detaylı bilgilere ulaşabilirsiniz.

 

https://decibel.ni.com/content/docs/DOC-12287

http://zone.ni.com/reference/en-XX/help/371361J-01/glang/read_from_spreadsheet_file/

 

Saygılarımla...

Himmet GENCER
Software Development Coordinator at TDG
himmetgencer@gmail.com

View Himmet Gencer's profile on LinkedIn

View on Instagram
0 Kudos
Message 4 of 13
(7,298 Views)

Himmet Bey Selamlar. Labview den dosya okutma konusunda sıkıntım yok. Bunu Read From Spread Sheet File ile yapabiliyorum. Sorunum şurda: Benim okuttuğum dosya 2D array, Labview de Search array fonksiyonu 1D Array için arama yapıyor. Benim 2D Array içerisinde arama yapmam gerekli.

 

Teşekkür Ederim.

0 Kudos
Message 5 of 13
(7,281 Views)
2d arrayi for döngüsüne sokup bulmak istediğiniz elemani dongu icinde iken search 1d array ile bulabilirsiniz.(bu şekilde 2d icinde arama yapabilirsiniz, bulursa -1 den farkli bir index değeri döner). Ilgili elemanı bulduğunuz anda donguden cikarsiniz. (For dongusunun conditional terminal ozelligi ile)

Saygilarimla...
Himmet GENCER
Software Development Coordinator at TDG
himmetgencer@gmail.com

View Himmet Gencer's profile on LinkedIn

View on Instagram
0 Kudos
Message 6 of 13
(7,277 Views)

Tarih ettiğiniz şekilde tabloda arama yapabiliyorum. Fakat benim arama yapmam gereken sütun sadece 1. sütun örneğin 1. sütunda ki elemanlardan 1 tanesini aratıp 3. sütunda bunun karşılığında ki elemanı çekmek istiyorum. Ama şuanda bütün elemanlar tek tek aranıyor. Farklı satır ve sütunlarda aynı elemanlar olduğu için burada sıkıntı yaşıyorum. Aramayı tablomu bölmeden (bölerek yapıyorum yani 2 dosya çekiyorum. 1. sinde sadece 1. sütun diğerinde tablomun tamamı ama dışardan okutulan dosya sayısı armasın istiyorum.) nasıl sadece ilk sütun için yapabilirim?

 

Ayrıca benim aradığım değer tabloda yok ise en yakın değerin gelmesini nasıl sağlayabilirim. Örneğin 4.97 tabloda yok 4.98 var ise 4.97 arattığımda 0 gelmeyecek 4.98 in karşılığı olan eleman gelecek.

 

 

Yardımcı olurmusunuz.

Teşekkürler.

 

0 Kudos
Message 7 of 13
(7,130 Views)

Merhabalar Kerem Bey,

 

Ekteki vi sanırım isteğinizi karşılıyor. 

 

Saygılarımla...

Himmet GENCER
Software Development Coordinator at TDG
himmetgencer@gmail.com

View Himmet Gencer's profile on LinkedIn

View on Instagram
0 Kudos
Message 8 of 13
(7,125 Views)

Kerem Bey ayrıca en yakın değeride bulabilmek için istediğiniz sayının +-  limitini tanımlarsınız ve "In range and Coerce" fonksiyonu yardımıyla bu istediğinizi yapabilirsiniz.

1.PNG

 

Tabiki bu durumda search array'i kullanamazsınız. Bunun yerine ilgili sütun içerisinde sırası ile gezerek ve range taraması yaparak aradığınız elemanı bulabilirsiniz. Derseniz ki bu kaba bir yöntem o zaman hızlı arama algoritmalarını araştırmanız gerekecektir.Zaten çok yüksek sayılarda elaman yoksa bu yöntemi kullanmak yeterli olacaktır.

 

Saygılarımla...

Himmet GENCER
Software Development Coordinator at TDG
himmetgencer@gmail.com

View Himmet Gencer's profile on LinkedIn

View on Instagram
0 Kudos
Message 9 of 13
(7,123 Views)

Himmet Bey çok teşkkür ederim. Peki peki bu tablonun ilk sütununda bulunan bir değerin karşılığı sıfırdan farklı olmasına rağmen 0 olarak çağırmasının sebbi ne olabilir? Aşağıda size çalışmamı gönderiyorum. Burada bazı değerlerin karşılığı sıfır olmamasına rağmen sıfır olarak çekiyor program. Çalışmanın linki aşağıda. Sizin gönderdiğiniz uygulamada for döngüsünü nasıl uyarlayacağımı çıkaramadım.

 

http://www.dosya.tc/server30/MkME10/tablo.zip.html

0 Kudos
Message 10 of 13
(7,119 Views)