pcbway

c# da sayac okuma programı

Başlatan mfy40, 03 Ocak 2012, 01:13:40

mfy40

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 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. sayaçtan verinin gelmesi için sayaca veri göndermem gerekiyor gönderdiğim veriyi aşağıda veriyorum sizce nerde hata yapıyorum da sayaç bana cevap vermiyor. yardımcı olursanız çok sevinirim. şimdiden teşekkür ederim

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

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

Flatron

Köhler ve Makel in web sitesine girip ürünleri hakkında açıklamaları okudunuzmu?
Köhlerin sitesinde bazı pdfler var  ve anladığım kadarıyla bunların kriptolu olduğu falan yazıyor.
Bu firmalara telefon edip \"Sayaç sahibi olarak ben internetten  elektrik sayacıma ulaşabilirmiyim,yada bir RS kablosunu takan biribenim sayacımdaki harcadığım elektriği yükseltemezmi?\" diye sordunuzmu?

Belkide \"asla değişirilemez şifrelidir ama biz size gönderebiliriz \"diyecekler.
Ayrıca haberlerşe testini neden başka bir cihazla yapmıyorsunuz.Örneğin RS232 çıkışı olan bir multimetre ile önce test edin çalıştığından emin olun onda sonra sayaçla test edin.


mfy40

Alıntı yapılan: Flatron - 03 Ocak 2012, 01:54:38Köhler ve Makel in web sitesine girip ürünleri hakkında açıklamaları okudunuzmu?
Köhlerin sitesinde bazı pdfler var  ve anladığım kadarıyla bunların kriptolu olduğu falan yazıyor.
Bu firmalara telefon edip \"Sayaç sahibi olarak ben internetten  elektrik sayacıma ulaşabilirmiyim,yada bir RS kablosunu takan biribenim sayacımdaki harcadığım elektriği yükseltemezmi?\" diye sordunuzmu?

Belkide \"asla değişirilemez şifrelidir ama biz size gönderebiliriz \"diyecekler.
Ayrıca haberlerşe testini neden başka bir cihazla yapmıyorsunuz.Örneğin RS232 çıkışı olan bir multimetre ile önce test edin çalıştığından emin olun onda sonra sayaçla test edin.



köhlern ve makelin sitesini gezdim ama işime yarayacak bişey bulamadım. elimdeki sayacın şifreli olması imkansız tanıdığım biri aynı sayacı delphi ile okumayı yapmaştı. benim sorunum donanımda yada sayacta değil. sorunum sayacın bana bilgi göndermesi için göndermem gereken komutu nasıl göndermeliyim hangi metodla hangi uzantıda.

parametre

03 Ocak 2012, 16:18:23 #3 Son düzenlenme: 03 Ocak 2012, 16:21:54 parametre
Alıntı yapılan: mfy40 - 03 Ocak 2012, 10:40:35köhlern ve makelin sitesini gezdim ama işime yarayacak bişey bulamadım. elimdeki sayacın şifreli olması imkansız tanıdığım biri aynı sayacı delphi ile okumayı yapmaştı. benim sorunum donanımda yada sayacta değil. sorunum sayacın bana bilgi göndermesi için göndermem gereken komutu nasıl göndermeliyim hangi metodla hangi uzantıda.
Bakmak ve gormek ben baktım ve gordum bu linktekiler işi gorurmu ektede değişiği mevcut
http://www.makel.com.tr/hafun/download/Sayac%20Okuma%20Kur.rar
http://www.makel.com.tr/hafun/download/Sayac%20Okuma%20Raporlari%20Kur.rar

yazici67

Arkadaşım kodda
byte[] Dizi;
Dizi = Encoding.UTF8.GetBytes(komut);
serialPort1.Write(Dizi, 0, Dizi.Length);
yazmışsın.Encoding.UTF8 dediğin kodlama şekli 16-bit Universal sistemdir.Türkçe, arapça, çince vs. içerdiğinden her karakter 2-byte yer kaplar.Senin komutunun makineye ANSI şeklinde gitmesi gerekir.Bu yüzden cihaz saçma bir komut algılıyor.( ya da algılamıyor).
Dizi = BitConverter.GetBytes(komut);
veya
byte[] arr0 = new byte[komut.Length];
byte[] arr1 = new byte[arr0.Length];
arr0 = komut.ToCharArray();
for (int i = 0; i < arr0.Length; i++)
            {
                arr1[i] = (byte)arr0[i];
            }
Dizi = arr1;
İkisini de deneyebilirsin.İkiside çalışmaktadır.

mfy40

Alıntı yapılan: parametre - 03 Ocak 2012, 16:18:23Bakmak ve gormek ben baktım ve gordum bu linktekiler işi gorurmu ektede değişiği mevcut
http://www.makel.com.tr/hafun/download/Sayac%20Okuma%20Kur.rar
http://www.makel.com.tr/hafun/download/Sayac%20Okuma%20Raporlari%20Kur.rar


bunları gördüm indirdim baktım ama bunlar işime yaramıyor bu çekme işini kendim yapmam gerekiyor o yüzden programı işime yaramaz. ilginelip cevap verdiğiniz için teşekkür edirim

mfy40

Alıntı yapılan: yazici67 - 03 Ocak 2012, 16:59:15Arkadaşım kodda
byte[] Dizi;
Dizi = Encoding.UTF8.GetBytes(komut);
serialPort1.Write(Dizi, 0, Dizi.Length);
yazmışsın.Encoding.UTF8 dediğin kodlama şekli 16-bit Universal sistemdir.Türkçe, arapça, çince vs. içerdiğinden her karakter 2-byte yer kaplar.Senin komutunun makineye ANSI şeklinde gitmesi gerekir.Bu yüzden cihaz saçma bir komut algılıyor.( ya da algılamıyor).
Dizi = BitConverter.GetBytes(komut);
veya
byte[] arr0 = new byte[komut.Length];
byte[] arr1 = new byte[arr0.Length];
arr0 = komut.ToCharArray();
for (int i = 0; i < arr0.Length; i++)
            {
                arr1[i] = (byte)arr0[i];
            }
Dizi = arr1;
İkisini de deneyebilirsin.İkiside çalışmaktadır.

arkadaşım çok teşekkür ediyorum gerçekten bu kodlar çok işime yaradı tamda aradığım şey buydu. nerden baksan bir ayıma maal oldu bu kodlar :) ilgilendiğiniz için teşekkür ederim

yazici67