C# ta MDi formlarda Ortak Değişken

Başlatan since1990, 01 Kasım 2011, 13:27:49

since1990

Mdi forumlarin hepsinde aynı matrisi kullanmak istiyorum arkadaşlar mümkün müdür?
Aslında 6 ayrı mdi form olacak bunların hepsi seri porttan bir sayı okuyacak. Hepsi için seri port ayarı yapmaktansa alt taraftaki program onların adına dataları alsın ve onlara dağıtsın istiyorum. Yani gelen[6] boyutunda bir matris olsun isityorum. Herbiri kendi sayısını o matristen alsın. Mümkün müdür?

veya seri port data okumayı bir fonksiyon gibi yapsak. örneğin

seri_port_oku (sayi);
gibi integer olarak fonsiyon geri dönse de olur ama. yapamadım bir kolayı varmıdır?
Teşekkürler...
"Dinlenmemek üzere yola çıkanlar asla yorulmazlar. Türk gençliği, gayeye, idealizme durmadan ve yorulmadan yürüyecektir. Bütün ümidim gençliktedir." Mustafa Kemal Atatürk

RcALTIN

#1
herşey mümkündür de ne yapmak istediğinizi ben tam olarak anlayamadım.

parent formunuzda public static tanımlayacağınız nesneye/değişkene, child formlar içinden parentform.nesne olarak ulaşabilirsiniz en basitinden. ayrıca child formlarınız ayrı ayrı tasarlanmamış da, hepsi tek formdan türetiliyorsa: herhangi birinin içerisinde tanımlanacak static nesneler değiştirildikçe hepsi için değiştirilmiş olacaktır... bu da işinize yarayabilir.

başka bir dikkat etmeniz gereken nokta, her child formda direkt olarak aynı seri porta okuyup yazamazsınız, seri port bir yerde açılmışsa, kapatılana kadar bir başka formdan açılamaz, bu yüzden parent form içinde ayarlayıp, bir kez açıp child formların kullanabilmesi için public yapmak gerekir seriport nesnesini. kısaca ne yapmak istediğinizi biraz daha açarsanız belki yardımcı olunabilir...
KİMSEYİ ENGELLEDİĞİM YOK, ÖZEL İLETİ DEVRE DIŞI !

since1990

Tabiki anlatırım :)
Şİmdi olay şu C# 1 hafta önce başladım. Yapmak istediğim programı MDİ form kullanmadan yaptım. Gayet güzel oldu. Yaptığım sistem 6 adet yardımcı modülün pc tarafından okunması. MEsela herbirinin bi adresi var. Pc seri porttan 1 gönderiyor, 1. işlemci ona karşılı bir sayı gönderiyor. sonra 2 gönderiyor. .... diye devam ediyor. sonra bu gelen sayılarpc de değerlendirilip ekrana dökülüyor. Bütün pencereleri tek bir formda birleştirip bir program yazdım ve gayet güzel oldu. Ama daha doğru ve daha profesyonel olması açısından her modülü ayrı ayrı pencerelerde açıp kapatabilmek istiyorum. MDİ formu 1 gündür araştırıyorum Videolar falan izledim. Fakat dediğim gibi en alttaki dosya aç kaydet penceresi olan pencerenin kodlarına seri port okumayı yaptırmak istiyorum. SOnra gelen sayıları bir matrise kaydedecek. Örneğin Gelen[6] 6 satırlık bir matrise. 1. form kendi gelen[0] ı değerlendirecek. .....
şeklinde daha net olabildim mi?
"Dinlenmemek üzere yola çıkanlar asla yorulmazlar. Türk gençliği, gayeye, idealizme durmadan ve yorulmadan yürüyecektir. Bütün ümidim gençliktedir." Mustafa Kemal Atatürk

justice_for_all

#3
mecburen bi tane ana formun olcak seri porttan bilgiyi ana formda alirsin ve diziyi global olarak tanimlarsan dizideki bilgileri kucuk formlarda kontrol edebilirsin...

peki neden midi form yapiyosun tek formda yapsan olmazmi formu 6ya bol mesela??
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

since1990

Formu 6 ya böl derken görsel olarak mı? YOksa başka teknik bir tabirden mi bahsediyorsunuz?
eğer görsel olarak diyorsanız dediğim gibi zaten şu anda öyle yazdım. ama diyorumki görmek istemediği modülü kaoatabilsin. Hiç ihtiyaç duyulmayacak ama geleceğe yönelik bunuda bilip uygulamak istiyorum.
"Dinlenmemek üzere yola çıkanlar asla yorulmazlar. Türk gençliği, gayeye, idealizme durmadan ve yorulmadan yürüyecektir. Bütün ümidim gençliktedir." Mustafa Kemal Atatürk

justice_for_all

evet gorsel olarak demistim...o zaman yukarda bahsettigim gibi yapman gerek yani ana formdan midileri kontrol etceksin..
Deneyip de başaramayanları değil, yalnızca denemeye bile kalkışmayanları yargıla.   Gökhan Arslanbay

RcALTIN

#6


bu sabah yazdığım şu örneği incelermisin, bahsettiğin böyle bir terminalse üzerine devam edebilirsin...

gelen datayı : göre ayırıp ilk kısımdaki adrese göre ilgili forma gönderiyor.. örneğin seriporttan;

1:MERHABA

gelirse 1 numaralı form açıksa ekranda data oraya yazılıyor

6:DENEME

gelirse 6 numaralı forma yollanıyor.

deneme yapabilmen için çok eskiden yazdığım basit bir rs232 programım vardı onu attım debug klasörüne; kodlarda anlamadığın veya geliştirmek istediğin yerler olursa belirt...
KİMSEYİ ENGELLEDİĞİM YOK, ÖZEL İLETİ DEVRE DIŞI !

since1990

Sizinki i2c gibi adres bilgisi gelen datanın içerisinde işlenmiş. BEnim dediğim adres datası içermiyor. Master 1 gönderiyor. Gelen data ne olursa olsun 1. slaveden gelmiş gibi işlem görüyor. zaten slaveleride ben hazırladığım için bir yanlışlık olmadan Rahatlıkla değerlendirebiliyorum.  Yani şöyle master veri yoluna bağırıyor. biiir diye. 1. slave hemen derdini söylüyor. sonra master ikiii diye bağırıyor... haricinde mikroişlemciler uyuyorlar :D Sizin yazdığını kodlarıda inceliyorum... ;)
"Dinlenmemek üzere yola çıkanlar asla yorulmazlar. Türk gençliği, gayeye, idealizme durmadan ve yorulmadan yürüyecektir. Bütün ümidim gençliktedir." Mustafa Kemal Atatürk

RcALTIN

#8
Alıntı yapılan: since1990 - 03 Kasım 2011, 00:24:49
Sizinki i2c gibi adres bilgisi gelen datanın içerisinde işlenmiş. BEnim dediğim adres datası içermiyor. Master 1 gönderiyor. Gelen data ne olursa olsun 1. slaveden gelmiş gibi işlem görüyor. zaten slaveleride ben hazırladığım için bir yanlışlık olmadan Rahatlıkla değerlendirebiliyorum.  Yani şöyle master veri yoluna bağırıyor. biiir diye. 1. slave hemen derdini söylüyor. sonra master ikiii diye bağırıyor... haricinde mikroişlemciler uyuyorlar :D Sizin yazdığını kodlarıda inceliyorum... ;)

sonuçta önce veriyi yollayıp, kimden cevap geleceğini bildiğinize göre gelen datayı istediğiniz forma göndertebilirsiniz; ben orada direkt child içindeki richtextbox'a yazdırdım, childForm içinde bir metod tanımlayıp onun içerisine aktarıp kendi amacınıza göre işleseniz daha anlamlı olur. aslında ben tek bir formdan türetilmiş formlar arasında veriyi nasıl transfer edebileceğinizi göstermeye çalıştım, o nedenle öyle kodladım...
KİMSEYİ ENGELLEDİĞİM YOK, ÖZEL İLETİ DEVRE DIŞI !