Merhabalar, bu uygulamada micro framework platformunda seri port haberleşmesinin nasıl gerçekleştigini görecegiz.

Bunu görmek için 2 uygulamamız var birisi PC mizde çalışan veri gonderip almaya yarayan uygulamamız, digeri ise TahoeII üzerinde çalışan yine seri porttan veri geldiginde gösteren ve sag tuşa( SW8) bastıgımızda DateTime.Now dan saniye bilgisini gönderen uygulama.

Masa üstünde klasik aşagıdaki kodla COM portu açar ve veri bekleriz

        private void Form1_Load(object sender, EventArgs e)
        {
            sp1 = new SerialPort("COM6", 9600, Parity.None, 8, StopBits.One);
            sp1.Open();
            sp1.DataReceived += new SerialDataReceivedEventHandler(verigeldi);
        }

Açtıkdan sonra veri geldiginde 

string okunan = sp1.ReadLine();

okuruz ve textboxda görüntüleriz.

textBox2.Text = okunan;

PC gönderme işleminde ise sp1 açık iken

sp1.WriteLine(textBox1.Text);

ile göndermek mümkün. Masa üstünde işlem bu kadar, MF tarafındada aynısının yapılması gerekiyor.

CreateWindow fonksiyonundan önce 

SerialPort c1 = new SerialPort("COM1", 9600);
public Window CreateWindow()
        {
            mainWindow = new Window();
            mainWindow.Height = SystemMetrics.ScreenHeight;
            mainWindow.Width = SystemMetrics.ScreenWidth;
            mainWindow.Background = new SolidColorBrush(Colors.Black);

            text = new Text();
            text.Font = Resources.GetFont(Resources.FontResources.calibri);
            text.TextContent = "Seri Test Deneme v0.1";
            text.HorizontalAlignment = Microsoft.SPOT.Presentation.HorizontalAlignment.Center;
            text.VerticalAlignment = Microsoft.SPOT.Presentation.VerticalAlignment.Center;
            text.Width = 200;

...

...

...

            c1.ReadTimeout = 800;
            c1.Open();
            c1.DataReceived += new SerialDataReceivedEventHandler(okumaoldu);
       }

ile COM1 üzerinden okumaya hazır hale geliriz. Gelen veri bufferda tutulur. Onu göstermek için

switchlerden aşagıya basıldıgında görüntülemek için

        private void OnButtonUp(object sender, ButtonEventArgs e)
        {
            try
            {
                switch (e.Button)
                {
                    case Button.VK_DOWN:

  //alınan veriyi görüntülemek için
                        text.TextContent = "";
                        byte[] okunanb = new byte[20];
                        c1.Read(okunanb, 0, 20);
                        char[] okunanc = System.Text.UTF8Encoding.UTF8.GetChars(okunanb);

                        for (int i = 0; i < okunanc.Length; i++)
                            text.TextContent += okunanc[i];

                        c1.Close();
                        break;

                    case Button.VK_RIGHT:
//gönderim için
                        if(!c1.IsOpen)
                            c1.Open();

                        byte[] gond = System.Text.UTF8Encoding.UTF8.GetBytes("Saniye : "+DateTime.Now.Second.ToString()+"\n");
                        c1.Write(gond, 0, gond.Length);
                        //c1.Close();                       

                        break;
                }
            }
            catch (Exception ex)
            {
                text.TextContent ="HATA : "+ex.Message;
                //text.Invalidate();
            }
        }

 

Yukarıdaki kodda saga basınca veriyi gönderirir, alt tuşa baılınca görüntüler. Buradaki onemli nokta veri alırkende gönderirkende COM1 portu açık olmalı. En başta Open olarakda set edebilirsiniz. Diger onemli nokta bazı developer kitlerde SerialDataReceivedEventHandler handlerini COM portunu Open ettikten sonra Set etmeniz gerektigi.

Tahoe2 de ben bunu yaşamadım ama yinede belirteyim dedim AUG devkitlerde bu mevcut.

PC ile MF board arasındaki baglantıyı ise cross yaparak sagladım. Tıpkı şu şekilde 



Hepinize başarılar, sormak istedikleriniz olursa e-mail ile sorabilirsiniz.

Kolay gelsin...

 


Birinci resmin büyük hali için tıklayınız. İkinci resim için buraya. Ekran görüntüsü içinse buraya.