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...