Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Visual C# => Konuyu başlatan: mfy40 - 02 Ocak 2012, 00:31:54

Başlık: c# da sayac okuma programı
Gönderen: mfy40 - 02 Ocak 2012, 00:31:54
arkadaş merhaba kaç aydır bi işle uğraşıyorum elimde makel ve köhler sayacları var bunları c# la okumaya çalışıyorum uzaktan değil comport ile. ve kabloda bir tane sayac bağlı olacak. yani bir kaç tane sayacdan birini okuma gibi bi derdim yok. ama daha bi yol alamadım formu incelediğimde bir kaç tane arkadaşımızın bu işle ilgilendiklerini ve yaptıklarını gördüm ama kimse genel olarak bi açıklama yapmamış. lütfen yardımcı olurmusunuz bu işi nasıl yapabilirim. visual studio nun serialport nesnesini kullanıyorum bütün ayarları veriyorum sayactan nasıl cevap alabilirim ilgilenirseniz sevinirim. şimdiden teşekkür ediyorum
Başlık: Ynt: c# da sayac okuma programı
Gönderen: mir_as82 - 02 Ocak 2012, 08:36:46
Arkadaşım ben bu şekilde bir proje yapmadım ama eğer sayaçtan data alabiliyorsan o datayı c# a göndermek o kadar zor değil. Sayaçsız veri gönderebiliyor musun C# a? bunu dene eğer bunu yapabiliyorsan sayaç tan veri okumaya çalış.
Başlık: Ynt: c# da sayac okuma programı
Gönderen: vitruvius - 02 Ocak 2012, 09:31:42
Kodlarınızı ve devre şemanızı görürsek daha çok yardımcı olabiliriz.
Başlık: Ynt: c# da sayac okuma programı
Gönderen: mfy40 - 02 Ocak 2012, 13:20:38
"Kodlarınızı ve devre şemanızı görürsek daha çok yardımcı olabiliriz."

cihazdan verinin gelmesi için cihaza komut göndermem gerekiyor göndermem gereken komut bu;

string komut;         
komut="/?!" + (char)13 + (char)10;


byte[] Dizi;
Dizi = Encoding.UTF8.GetBytes(komut);
serialPort1.Write(Dizi, 0, Dizi.Length); 

bunu gönderdiğim zaman cihazın kendini tanıtma mesajı göndermesi gerekiyor fakat serialPort1_DataReceived tetiklenmiyor ve cihazdan hiç bi veri gelmiyor bağlantı ayarlarını yanlış yapmış olsam veri gelir ama anlamsız bi veri gelir benim sorunum cihaz hiç bi şekilde veri göndermiyor kodların neresinde yanlışlık yapıyorum bilmiyorum acaba byte gönderirken mi hata yapıyorum ilgilendiğiniz için teşekkür ederim
Başlık: Ynt: c# da sayac okuma programı
Gönderen: mfy40 - 02 Ocak 2012, 13:22:59
"Arkadaşım ben bu şekilde bir proje yapmadım ama eğer sayaçtan data alabiliyorsan o datayı c# a göndermek o kadar zor değil. Sayaçsız veri gönderebiliyor musun C# a? bunu dene eğer bunu yapabiliyorsan sayaç tan veri okumaya çalış."

Sayaçsız veri gönderebiliyor musun C# a? derken neyi kasdettiniz anlamadım. sayactan datanın gelip gelmediğini nasıl anlayabilirim. normalde kodu gönderince bana verilerin gelmesi gerekmiyormu. sayaca veri gönderirken hata vermiyor ama hiç bi şekilde de cevap vermiyor

ilginiz için teşekkür ederim.


Başlık: Ynt: c# da sayac okuma programı
Gönderen: RcALTIN - 03 Ocak 2012, 00:01:51
şimdi buradaki insanların elektrik sayaçlarıyla çok içli dışlı olduğunu sanmıyorum, o yüzden sayacın derdi nedir bunu bilemiyoruz. "acaba kendi yazılımım doğru mu çalışmıyor?" diyorsan; denemek için seri portun 2. ve 3. pinlerini kısadevre yap, gönderdiğin veriyi aynen geri alman gerekiyor(datareceived event tetiklenmeli) olmuyorsa event veya rs232 donanımınla alakalı bir sıkıntın var demektir, bir sıkıntı yoksa sonrası sayacın varsa datasheetini okuyup anlamaya kalıyor...
Başlık: Ynt: c# da sayac okuma programı
Gönderen: mfy40 - 03 Ocak 2012, 00:56:53
donanımı başka bi iş için kullandım donanımda sıkıntı olduğunu sanmıyorum kaldı ki sayacın kendi programıyla okuyabiliyorum sayacı. eventte sorun varmı yokmu bilmiyorum ama programı kırıp adım adım kodları incelediğimde datareceived eventine hiç geçiş yapmıyor. evente yazdığım kodlarda sıkıntı olsa bile programın eventte girmesi lazımdı. galiba benim sıkıntım sayactan mesaj almak için gönderdiğim komutta bu olayın sayaçla bi alakası yok normal bi elektronik alet nasıl kontrol ediliyorsa aynı şekilde çalışıyor. göndermem gereken kod belli;

string komut;         
komut="/?!" + (char)13 + (char)10;


byte[] Dizi;
Dizi = Encoding.UTF8.GetBytes(komut);
serialPort1.Write(Dizi, 0, Dizi.Length);


benim takıldığım yer acaba diziyi gönderirken farklı bi formatta mı göndermem gerekiyor. Encoding.UTF8.GetBytes metodunu kullandım ama farklı bişey mi kullanmam gerekiyor yada write metodu farklı bicimlerde yapılıyor acaba farklı bi bicimde mi göndermem gerekiyordu.