Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Visual C# => Konuyu başlatan: görkem - 10 Eylül 2017, 00:30:54

Başlık: seriport hakkında
Gönderen: görkem - 10 Eylül 2017, 00:30:54
Arkadaşlar merhaba,

Seriporttan byte veri gönderip alabiliyorum fakat şöyle bir durumum var  dizi olarak veri almaya kalktığımda sürekli dizinin 0.byte ına veriyi yazıyor diğer byte lar hep boş kalıyor kullandığım kod aşağıda nerede hatam var ?



private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
        {
            UInt16 len, d;
            int u;
            byte[] buffer new byte[200];

            serialPort1.Read(buffer, 0, 200);
       }
Başlık: Ynt: seriport hakkında
Gönderen: muhittin_kaplan - 10 Eylül 2017, 01:38:29
readline ile alın, gönderdiğiniz verinin sonına da \n koyun.
Başlık: Ynt: seriport hakkında
Gönderen: bsenguler - 10 Eylül 2017, 08:50:00
 byte[] buffer new byte[200];


satırını aşağıdaki değiştirebilir misiniz?

byte[] buffer = new byte[200];
Başlık: Ynt: seriport hakkında
Gönderen: Hadi - 10 Eylül 2017, 12:08:47
bence buffer değişkenini global tanıman lazım. yazdiğim şekilde ne zaman o metoda gelse buffer değişkenini yeni oluşturuyor ve eski veriler siliniyor. ondan obalibir bence.

bide offset neden her zaman 0 da? her seferinde onu artırmayı denediniz mi?
Başlık: Ynt: seriport hakkında
Gönderen: görkem - 10 Eylül 2017, 15:28:48
buffer değişkeni global kende aynı sorun vardı.ofset değerinde dizinin ilk adresini bildiriyoruz  fonksiyon diziye otomatik 0 dan başlayıp aktarmıyor mu  len değeri kadar ?

@bsenguler  kodda eşittir var ben buraya kopyalarken gözden kaçmış.
Başlık: Ynt: seriport hakkında
Gönderen: foseydon - 20 Eylül 2017, 14:35:14
Hocam sizin düştüğünüz hata şu, "data received" olayı doğal olarak seri portakal veri geldiği zaman oluşur. Bu çoğu zaman tek bir byte ile oluşur. Bu yüzden siz Buffer array'ine çoğu zaman tek byte yazarsiniz. Çünkü her zaman buffer'in üstüne yazıyorsunuz, sonuna eklemiyorsunuz. Burada yapacağınız şey ayrı bir değişken ile bu olaya kaçıncı girişi olduğunu sayıp ona göre array'ine doldurmak. Fakat benim tavsiyem list<byte> yapısını kullanmaniDir. Bu yapı bu işler için biçilmiş kaftan. List.add(serialport.readbyte); ile bu olaya her girdiğinde seri port takı veriyi okuyup kistin sonuna eklersiniz. Başka bir yerde islersiniz. Cep telefonundan yazdığım için tam kodu yazamadım. Bilgisayara geçince eklerim. Umarım hatayı anlamışsınızdır.
Başlık: Ynt: seriport hakkında
Gönderen: hasankara - 20 Eylül 2017, 15:14:15
@foseydon haklı. çözüm olarak fifoda ki byte sayısını kontrol edebilirsin. yeterli byte olmadığında okuma yapmadan çıkmasını söylersin. diğer bir husus ta bufferi global tanımlaman yada olay işleyicisinin girdi veya çıktısından dışarı alman. yoksa okuduğun veriyi dışarda kullanamazsın.
Başlık: Ynt: seriport hakkında
Gönderen: dumansiz - 20 Eylül 2017, 16:23:43
Hatırladığım kadarıyla olay şuydu:
Gelen her bir byte için datareceived olayı oluşmuyor.
Paket için datareceived oluşuyor.
Başlık: Ynt: seriport hakkında
Gönderen: foseydon - 21 Eylül 2017, 18:40:43


List<Byte> buffer = new List<Byte>();

private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
        {
            if(serialPort1.BytesToRead > 0)
            {
                  int i = 0
                  for(i =0; i < serialPort1.BytesToRead;i++)
                  {
                        buffer.add(serialPort1.ReadByte);
                  }
           }
      }


bu şekilde yaparsanız, seri porta veri geldikçe buffer'a ekler, daha sonra başka bir yerde işlersiniz. İşlediğiniz verileri silmeniz gerekiyor. List ile bunları yapmak oldukça kolay, esnek bir array gibi düşünebilirsiniz. Fakat zaten veriyi düzenli olarak bir noktada işlemeniz gerekecek, bunun içinde muhtemelen timer kullanmanız gerekecek. Bu yüzden benim size tavsiyem, 100ms gibi bir timer kurup, bu timer içerisinde seri portta veri olup olmadığını kontrol edin, varsa veriyi buffera alıp işleyin. bu şekilde daha kolay olur ve buffer üzerinde ekleme çıkarma işlemini tek noktada yaptığınız için daha güvenli olur.
Başlık: Ynt: seriport hakkında
Gönderen: görkem - 21 Eylül 2017, 21:59:26
@foseydon bu kodu olduğu gibi timer a geçirsek dediğiniz olur sanırım.birde  ben buffer i her veri geldiğinde aktarıp temizliyordum çözümü şöyle bulmuştum  for döngüsünde her okumada ofset i bir arttırıp veriyi  alıyordum işe yaradı fakat sizin kodunuz daha mantıklı.
Şöyle bir problemim var 2 adet seriport bağlantısına ihtiyacım var tanımlamaları ayrı ayrı yapmama rağmen veri alışverişinde bulunamadım
Başlık: Ynt: seriport hakkında
Gönderen: foseydon - 21 Eylül 2017, 22:33:55
Timer'a aktarirsaniz aynı şekilde çalışır. Çalışır diyorum ama, çalışmayabilir. Kafadan yazdım, harf hatası falan olabilir. Ama mantık doğrudur.

Şayet cihazda iki seri port varsa ikisininde sorunsuz kullanabilirsiniz. Her biri için ayri ayrı açma kapama, veri toplama işlemi yapmanız gerekir. Tam kodu paylaairsaniz yardımcı olurum.
Başlık: Ynt: seriport hakkında
Gönderen: görkem - 28 Eylül 2017, 12:46:36
portları bir türlü ayıramadım hepsini ayrı ayrı tanımladım fakat biri bağlıyken diğeri bağlanmıyor.kodların hepsini paylaşamam düzensiz olduğu içinde blok şeklinde paylaşıyorum

   

            serialPort1.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);
            serialPort2.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler2);

//seriport 2 için
private void button2_Click(object sender, EventArgs e)
        {
            try
            {
                serialPort2.BaudRate = int.Parse("9600");
                serialPort2.DataBits = int.Parse("8");

                serialPort2.StopBits = System.IO.Ports.StopBits.One;

                serialPort2.Parity = Parity.None;

                serialPort2.PortName = "COM3";

                serialPort2.Open();

                MessageBox.Show("Bağlandı", "", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

            }
            catch (Exception)
            {

                MessageBox.Show("Cihazınız Bağlı Değil...", "", MessageBoxButtons.OK, MessageBoxIcon.Warning);

            }

        }


//seriport1

  void seriport_baglan()
            {
                try
                {

                    serialPort1.BaudRate = int.Parse("9600");
                    serialPort1.DataBits = int.Parse("8");

                    serialPort1.StopBits = System.IO.Ports.StopBits.One;

                    serialPort1.Parity = Parity.None;

                    serialPort1.PortName = "COM1";

                    serialPort1.Open();

                baglan.Enabled = false;
                baglantikes.Enabled = true;

                MessageBox.Show("Bağlandı","",MessageBoxButtons.OK,MessageBoxIcon.Asterisk);
               
                }
                catch (Exception)
                {
                baglan.Enabled = true;
                baglantikes.Enabled = false;

                MessageBox.Show("Cihazınız Bağlı Değil...","",MessageBoxButtons.OK,MessageBoxIcon.Warning);

                }


            }

  //serial port1 receive

private void DataReceivedHandler(object sender, SerialDataReceivedEventArgs e)
            {
                UInt16 len=10,s=0,b,i;
               

            for (s = 0; s < len; s++)
            {
                serialPort1.Read(buffer, s, len);
                modul =  buffer[0];
                ID[0] =  buffer[1];
                ID[1] =  buffer[2];
                ID[2] =  buffer[3];
                ID[3] =  buffer[4];
                dat[0] = buffer[5];
                dat[1] = buffer[6];
                dat[2] = buffer[7];
                dat[3] = buffer[8];
                dat[4] = buffer[9];

            }

     //seri port2 receive

  void DataReceivedHandler2(object sender, SerialDataReceivedEventArgs e)
            {
                UInt16 uzunluk = 4, z;

                for (z = 0; z < uzunluk; z++)
                {
                    serialPort2.Read(serino, z, uzunluk);
                 
                }

                parca[0] = serino[0];
                parca[1] = serino[1];
                parca[2] = serino[2];
                parca[3] = serino[3];

                 c = BitConverter.ToString(parca);  // byte veri hex formatında string
                label23.Text = c.Replace("-", "");        //olarak gösterir
           
           
            }     
           



            }






Başlık: Ynt: seriport hakkında
Gönderen: elektronik - 28 Eylül 2017, 13:51:53
bu kodu denermisiniz
   
         if (serialPort1.BytesToRead >0)
            {


                byte[] buffer_gelen = new byte[this.serialPort1.BytesToRead];
                serialPort1.Read(buffer_gelen, 0, serialPort1.BytesToRead);
                serialPort1.DiscardInBuffer();


                label7.Text = Convert.ToString(Display(buffer_gelen));// Gelen veriyi label7 de gösteriyoruz


            }
Başlık: Ynt: seriport hakkında
Gönderen: foseydon - 28 Eylül 2017, 15:46:14
Alıntı yapılan: görkem - 28 Eylül 2017, 12:46:36
portları bir türlü ayıramadım hepsini ayrı ayrı tanımladım fakat biri bağlıyken diğeri bağlanmıyor.kodların hepsini paylaşamam düzensiz olduğu içinde blok şeklinde paylaşıyorum


Üstat, serialPort1'i seriport_baglan() fonksiyonu içerisinde açıyorsun, fakat seriport_baglan() fonksiyonunu çağırdığın bir yer yok. biraz karışık olmuş.


List<Byte> port1Buffer = new List<Byte>();
List<Byte> port2Buffer = new List<Byte>();

private void button2_Click(object sender, EventArgs e)
{
serialPort2.BaudRate = serialPort1.BaudRate = int.Parse("9600");
    serialPort2.DataBits = serialPort1.DataBits = int.Parse("8");
serialPort2.StopBits = serialPort1.StopBits = System.IO.Ports.StopBits.One;
serialPort2.Parity = serialPort1.Parity = Parity.None;
serialPort2.PortName = "COM3";
serialPort1.PortName = "COM1";

if(serialport1.isOpen)
{
serialport1.Close();
}
serialport1.Open();

if(serialport2.isOpen)
{
serialport2.Close();
}
serialport2.Open();
// bu noktada 2 seriportunuz da acildi
}

private void timer1_tick(object sender, SerialDataReceivedEventArgs e)
{

    if(serialPort1.BytesToRead > 0)
    {
          int i = 0
          for(i =0; i < serialPort1.BytesToRead;i++)
          {
                port1Buffer.add(serialPort2.ReadByte);
          }
   }

if(serialPort1.BytesToRead > 0)
    {
          int i = 0
          for(i =0; i < serialPort2.BytesToRead;i++)
          {
                port1Buffer.add(serialPort2.ReadByte);
          }
   }
// bu noktada 2 seri porttaki veride ilgili bufferlara yaziliyor.
}


şu şekilde basitçe, hiç event olayına girmeden yaparsan hallolur bence. burada timer'ın sonunda şayet yeterli veri varsa işlersin. Burada bir nokta var, seri port isimleri "hard coded" yani sen sistemde COM1 ve COM3 var mı bilmiyorsun. Yoksa hata verecektir. Şu şekilde yazıp, timer'ın içine bir "breakpoint" koyarak bir dene, veriler ilgili buffer'lara düzgün alınıyor mu diye. Daha sonra veri işleme kısmına geçersin.

Aslında en güzeli, serialPort extension class yazıp veri toplama işlerini fonksiyon haline getirmek ve her seri porta kendi buffer'ını falan eklemek. Sen şimdilik bunu bir dene, sonrasına bakalım.
Başlık: Ynt: seriport hakkında
Gönderen: görkem - 07 Ekim 2017, 21:09:41
@foseydon şöyle bir sıkıntım var sanal port oluşturup terminal programından 8 byte lık veri gönderiyorum sıkıntısız serialport1.readbyte çalışıyor fakat işlemci den normal seriport ile  8 byte lık veri gönderdiğimde serialport1.readbyte  da veri bekliyor da kalıyor.
İşlemciyi terminal programına bağladığımda sorunsuz 8 byte geldiğini görüyorum ama c# da veri bekliyor görünüyor neyden kaynaklanır usb yapsaydım şimdiye çözmüştüm seri port çok uğraştırdı
Başlık: Ynt: seriport hakkında
Gönderen: görkem - 08 Ekim 2017, 17:28:00
şuanda veri gönderip alabiliyorum fakat ilk 8 byte  gönderdikten sonra 2. 8 byte lık veri anlamsız değerler alıyor  buffer ı sıfırlamama rağmen öyle.

serialPort1.BytesToRead  ile okuduğu değeri nasıl sıfırlayabilirim.

naptıysam buffer sıfırlanmıyor varmı bilen kafayı yedirtmek üzere bana aşağıdaki buffer temizleme kodlarını kullanmama rağmen temizlenmiyor

       serialPort1.DiscardInBuffer();
         serialPort1.DiscardOutBuffer();
Başlık: Ynt: seriport hakkında
Gönderen: kudretuzuner - 08 Ekim 2017, 18:37:36
Merhaba,
C# bilmiyorum ama VB.Net 2010 ile yazdığım programdaki gibi PIC'ten ne gelirse gelsin programınız geleni ayıklayabiliyorsa sorun olmuyor.Bu çalışmamda PIC'ten yollanan 256 (FF-00) olasılık ardı ardına yolluyor aşağıdaki örnek kod parçacığında görüldüğü gibi yollanan hex değerin DEC değeri kontrol edilip istenen dosya açılıyor.   


Private Sub SerialPort1_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived


        Dim gelen As String = SerialPort1.ReadByte


        '*****************ANAHTAR TESTİ BAŞLAR
        If gelen = 57 Then '----------'DEC'57'-----hex'31'-----"9"
            PictureBox23.Image = Image.FromFile("c:\resm" + "\SW_1_on.bmp")
        End If
        '-----------------
        If gelen = 74 Then '------------DEC'74'-----HEX'4A'------"J"
            PictureBox24.Image = Image.FromFile("c:\resm" + "\SW_1_on.bmp")
        End If
        '-----------------
Başlık: Ynt: seriport hakkında
Gönderen: görkem - 08 Ekim 2017, 18:43:09
ilk okumada  9 byte alıyorum sonraki okumada  9 byte saçma sapan geliyor  verileri alırken delege oluşturup invoke ile almam gerekiyormuş fakat nasıl yapıldığını bilmiyorum örnek de bulamadım

2. okumada saçmalamasa kodları ayıklayabilirim ama saçma sapan değerler geliyor c# daki kodlarda bir sıkıntı olduğu kesin
Başlık: Ynt: seriport hakkında
Gönderen: kudretuzuner - 08 Ekim 2017, 19:02:07
Merhaba,
PIC tarafından yollanacak kodları da ben yazdığım için 8 bit (9 değil) vb.ten tek tek ayıklayıp alabiliyorum.Gelen hex değerleri biliyor musunuz ?
Başlık: Ynt: seriport hakkında
Gönderen: görkem - 08 Ekim 2017, 19:17:07
stm32 ile veri gönderiyorum hex değerleri debug yaptığımda görebiliyorum ilk gönderimde sıkıntısız doğru veri geliyor fakat 2. gönderimde alakasız veriler alıyor. stm32 den gönderilirken sıkıntı yok pc de terminalden baktığımda doğru veri geliyor arayüzde sıkıntı var ayıklamayla bile ilgisi olduğunu düşünmüyorum buffer da eski verilerle karışıyor gibi geliyor. Buffer naptıysam sıfırlanmıyor

bu arada 9 byte gönderiyorum, 8bit  gönderim protokolü 
Başlık: Ynt: seriport hakkında
Gönderen: baran123 - 08 Ekim 2017, 19:34:47
Sanırım şu şekilde olacak ama emin değilim.

private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
if (!this.Open)
return;

if (e.EventType == System.IO.Ports.SerialData.Eof)
return;

this.Invoke(new EventHandler(delegate { Serial_DataReceived(); }));
}

private void Serial_DataReceived()
{
    int dataLength = serialPort1.BytesToRead;
    byte[] data = new byte[dataLength];
    serialPort1.Read(data, 0, dataLentgh);

    serialPort1.DiscardInBuffer(); // buffer'ı temizle
}
Başlık: Ynt: seriport hakkında
Gönderen: görkem - 08 Ekim 2017, 20:28:31
yine buffer ı temizlemiyor dediğiniz gibi yaptım dizi taşması hatası veriyor 2 ci okumada çok saçma sapan bir durum var
Başlık: Ynt: seriport hakkında
Gönderen: baran123 - 08 Ekim 2017, 21:25:11
Kodların en son halini paylaşman mümkün mü ?
Daha iyi çözümleme yapabiliriz.
Başlık: Ynt: seriport hakkında
Gönderen: görkem - 08 Ekim 2017, 21:35:29
seriport kodlarım aşağıda ilk 9 byte veriyi alıyor sonra 2. 9 byte da dizi taşması hatası veriyor


 

// global tanımlı değişkenler
byte[] ID = new byte[4];
byte[] dat = new byte[5];

//---------------------form1_load da tanımlı -------------------------------------------

serialPort1.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);

CheckForIllegalCrossThreadCalls = false;

//-----------------------------------------------------------------------
   void seriport_baglan()
            {
                try
                {

                    serialPort1.BaudRate = int.Parse("9600");
                    serialPort1.DataBits = int.Parse("8");

                    serialPort1.StopBits = System.IO.Ports.StopBits.One;

                    serialPort1.Parity = Parity.None;

                    serialPort1.PortName = "COM5";

                    if (serialPort1.IsOpen)
                    {
                        serialPort1.Close();
                    }
                    serialPort1.Open();

                 

                    MessageBox.Show("Bağlandı", "", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);

                }
                catch (Exception)
                {
                 

                    MessageBox.Show("Cihazınız Bağlı Değil...", "", MessageBoxButtons.OK, MessageBoxIcon.Warning);

                }


            }





private void DataReceivedHandler(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
     

            if (e.EventType == System.IO.Ports.SerialData.Eof)
                  return;
               
            this.Invoke(new EventHandler(delegate { Serial_DataReceived(); }));
        }

        private void Serial_DataReceived()
        {
           
            int dataLength = serialPort1.BytesToRead;
            label27.Text = Convert.ToString(dataLength);
            byte[] buffer = new byte[dataLength];
            serialPort1.Read(buffer, 0, dataLength);

       

                ID[0] = buffer[0];
                ID[1] = buffer[1];
                ID[2] = buffer[2];
                ID[3] = buffer[3];
                dat[0] = buffer[4];
                dat[1] = buffer[5];
                dat[2] = buffer[6];
                dat[3] = buffer[7];
                dat[4] = buffer[8];

        serialPort1.DiscardInBuffer(); // buffer'ı temizle



         

        }


çıldırmak üzereyim saçma sapan bir durumla karşı karşıyayım
Başlık: Ynt: seriport hakkında
Gönderen: kudretuzuner - 08 Ekim 2017, 22:19:28
Merhaba,
properties bölümünden

ReadBufferSize değerini 4096
WriteBufferSize değerini de 2048 yapınız.
Başlık: Ynt: seriport hakkında
Gönderen: görkem - 08 Ekim 2017, 22:44:33
O şekilde ayarlı. bufferı temizleyip sıfırdan veri almıyor bufferı devam ettirmeye çalışıyor temizleyip başa alsa sorun ortadan kalkıcak bir ayrıntı var ama çözemedim gitti
Başlık: Ynt: seriport hakkında
Gönderen: foseydon - 26 Ekim 2017, 17:23:59
Merhaba,

Hocam sen benim söylediğim şekilde yapsan işlerin daha kolay olacak. Event vs. uğraşacağına bir timer kurup içine yukarıda yazdığım kodu eklesen, temiz bir başlangıcın olur ve bunun üstüne inşa etmeye devam ederdin.

Şimdi son gönderdiğin kodda bana göre hatalı olan kısımları söyleyeyim.

1. Her veri aldığından yeni bir buffer[] nesnesi oluşturuyorsun, bu hatalı.
2. Veri geldin buffer[] içerisine aldın diyelim. Daha sonra;
ID[1] = buffer[0];
ID[1] = buffer[1];
ID[2] = buffer[2];
....
deklerasyonları ile buffer içerisindeki veriyi doğru kabul ederek eşitleme yapıyorsun. Oysa önce verinin doğruluğunu kontrol etmen gerekir. Bunun için bir protokolün(basit bile olsa) olması gerekiyor.
3. Sen buffer[] nesnesinin içini temizlediğini düşünüyorsun sanırım. Fakat yanılıyorsun. Verdiğin koda göre buffer[] nesnesini değil, o anda seri portun kendi buffer'ında olan veriyi temizliyorsun. Yani veri geldi, işledin, en son
serialPort1.DiscardInBuffer();
deklerasyonu ile sen bu veriyi toplama ve işleme işlerini yaparken seri portun buffer'ında biriken tüm veriyi silmiş olursun. Akşam eve gidince tam işler kod yazıp koyarım, daha açıklayıcı olur.
Başlık: Ynt: seriport hakkında
Gönderen: foseydon - 26 Ekim 2017, 22:36:48
SerialPortDemo.zip -  16 KB (http://dosya.co/etykovchajhi/SerialPortDemo.zip.html)

ufak bir program yazdım, yükledim. seri port özellikleri ayarlayıp bağlantıyı kurduktan sonra verileri 2 ayrı buffer içerisine dolduruyor. Buna bir bak ve dene. Veriyi işlemiyor haliyle. Verileri doğru aldığından emin olunca. işleme işine başlarsın.
Başlık: Ynt: seriport hakkında
Gönderen: görkem - 04 Şubat 2018, 15:09:15
list oluşturarak durumu çözemedim.Verdiğiniz dosyayı indiremedim link kırılmış üzerinden zaman geçtiği için sanırım.
şuanda timer ile veri kaçırdığım için event ile yapmak istedim şuanda  event ile data alabiliyorum datalar doğru geliyor  fakat ara ara  bir önceki alınan data ile yeni gelen data karışıyor. Delegete ve invoke kullanmam durumu çözer mi ?

event oluşturduğum kısım form load da

serialPort1.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);





datanın alındığı kısım
        private void DataReceivedHandler(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            SerialPort serialPort1 = (SerialPort)sender;
            int len = serialPort1.BytesToRead;
            if (serialPort1.IsOpen)
            {
                serialPort1.Read(buffer, 0, len);

                serialPort1.DiscardInBuffer();

                    ID[0] = buffer[1]; // global tanımlı lar
                    ID[1] = buffer[2];
                    ID[2] = buffer[3];
                    ID[3] = buffer[4];

               

            }
        }
Başlık: Ynt: seriport hakkında
Gönderen: görkem - 05 Şubat 2018, 13:20:40
güncel.
Başlık: Ynt: seriport hakkında
Gönderen: foseydon - 05 Şubat 2018, 14:38:08
http://dosya.co/0iltj1jva93n/SerialPortDemo.zip.html

baglantigi guncelledim, sorun olursa sorarsin. datareceived falan ugrasma. timer koy, once tam aliyor musun veriyi ona bak.