Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

C # Kaprisleri

Başlatan hasankara, 22 Temmuz 2014, 01:25:01

hasankara

byte[] buff=new byte[64];
            buff[0] =(byte)'$';
            buff[1] = 1;
            buff[2] = (byte)',';
            buff[3] = 70;
            if (port.IsOpen)
            {
                port.Write(buff[]);
                label1.Text = "Veri gönderildi";
            }
            else label1.Text = "Önce port açmalısınız";

arkadaşlar yarım saattir yolumu bulamadım. bilen için 20 sn belki. port.Write(buff[]); bu satırı nasıl düzenlemeliyim.

ArifAhmet

#1
köşeli parantezlerin içine bir index numarası yazmalısın. Boş olmaz. Bir döngü kurabilirsin. Foreach öneririm.
byte[] buff=new byte[64];
            buff[0] =(byte)'$';
            buff[1] = 1;
            buff[2] = (byte)',';
            buff[3] = 70;
            if (port.IsOpen)
            {
                  for(int i =0; i<4;i++){
                    port.Write(buff[i]);
                  }
                label1.Text = "Veri gönderildi";
            }
            else label1.Text = "Önce port açmalısınız";
Yaşasın Open Source!

hasankara

Aslında string yolluyor bu eleman. c de olaydı (buff) diyip bitirecektim. ama c# böyle entellikleri yok mu insanı bıktırıyor.

ArifAhmet

o zaman ToString() kullan.
byte[] buff=new byte[64];
            buff[0] =(byte)'$';
            buff[1] = 1;
            buff[2] = (byte)',';
            buff[3] = 70;
            if (port.IsOpen)
            {
                  for(int i =0; i<4;i++){
                    port.Write(buff[i].ToString());
                  }
                label1.Text = "Veri gönderildi";
            }
            else label1.Text = "Önce port açmalısınız";
Yaşasın Open Source!

hasankara

sayısal değeri stringe dönüştürüyor bu tostring yani atıyorum ben '$' yollayacağım adam bu karakterin sayısal karşılığı olan 36 sayısını '3'+'6' şeklinde yolluyor. bu da yemiyor

ArifAhmet

#5
Byte dizisi değilde string dizisi kullanmayı denermisin.
string[] buff=new string[64];
            buff[0] ="$";
            buff[1] = "1";
            buff[2] = ",";
            buff[3] = "70";
Yaşasın Open Source!

hasankara

"70" : '7'+'0' iyi de ben tek bir karakter yollamak istiyorum. çok apayrı şeyler bunlar, sağ ol konuya dahil olduğun için bu arada. bunun kısa yolunu bilen yok mu arkadaşlar? bu eleman buff[] tanımlı dizi için buff dediğimde adam gibi adresini alıp işleme koyamayacak mı şimdi?

ArifAhmet

ASCII karşılığını almaması için bir yol vardı ama tam olarak hatırlamıyorum maalesef. Biraz bakınayım, bulursam yazarım.
Yaşasın Open Source!

hasankara

http://stackoverflow.com/questions/1003275/converting-byte-to-string-in-c-sharp

stackoverflow da olmasa halimiz nece.

string result = System.Text.Encoding.UTF8.GetString(byteArray)

ArifAhmet

Yaşasın Open Source!

fatih6167

#10
http://lmgtfy.com/?q=SerialPort.Write
http://msdn.microsoft.com/en-us/library/ms143551%28v=vs.110%29.aspx

Gördüğünüz üzere sadece şunu yazmanız yeterliydi:
port.Write(buff, 0, buff.Length);


He, bu arada Visual Studio kullanıyorsanız takıldığınız noktada kafanızı kurcalayan sınıf(class), tip(type), metod(function,method) üzerine gelip F1 tuşuna basarsanız doğrudan ilgili MSDN dökümanına ulaşırsınız.

hasankara

#11
fatih halletmiştim ama benim asıl istediğim tamda senin yazdığın idi işte. neyse şimdi sorularıma yenisi ile devam ediyorum;

amacım mouse combobox a çift tıkladığında event handler olsun istiyorum.

form1.designer dosyası içerisinde baktım             
this.cmbPort.SelectedIndexChanged += new System.EventHandler(this.cmbPort_SelectedIndexChanged);

bu zaten olan bir satır. form1.cs dosyasında form1 sınıfına bağlı cmbPort_SelectedIndexChanged isminde fonksiyonu var.

bende bu mantıkla,
this.cmbPort.MouseDoubleClick += new System.EventHandler(this.cmbPort_MouseDoubleClick);

satırını hemen diğerinin altına ekledim. fonksiyonu da diğer fonksiyonun altına ekledim. ama += den sonrasını komple hatalı olarak gösterdi. başka bir yerlere bir şeyler daha mı eklemem gerekiyor?

mesaj birleştirme:: 22 Temmuz 2014, 22:31:07

kendi kendime konuşmuş gibi olacağım yine ama, şimdi buldum. properties den event sekmesindeyken mousedoubleclick e çift tıklayınca kendi otomatik oluşturuyormuş.
this.cmbPort.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.cmbPort_MouseDoubleClick_1);
bu ötekilerden farklı oldu gerçi ama mühim değil çalışıyor.

mesaj birleştirme:: 22 Temmuz 2014, 08:59:06

yalnız çift tıklama combobox ta işe yaramıyor. bu normal bir durum mu? label de denedim oluyor ama comboboxa çift tıklamama rağmen event oluşmuyor.

yldzelektronik

Event ne için oluşsun istiyorsunuz?Yada neden çift tık event istiyorsunuz?Yapmak istediğiniz işlem nedir, değeri değiştirildiğinde mi event istiyorsunuz?
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.

hasankara

ikisi içinde ayrı eventler olmasını istiyorum. çift tıklamaya event çalışmıyor bir türlü. combobox için sadece tek event oluşacak şekilde de denedim yine olmuyor doubleclick eventi.

yldzelektronik

Ben de denedim beceremedim. Belki readonly enable iken aktif olur diye baktım.VS2013 kullanıyorum.Bende combobox için öyle seçenek yok.
Kişinin başına gelen hayır Allah'tandır. Kişinin başına gelen şer nefsindendir. Nefislerimizle kendimize zulüm ediyoruz.