Merhabalar, bu uygulamada Micro Framework platformunda seri port haberleşmesinin nasıl gerçekleştiğini göreceğiz.
Bunu için 2 uygulamamız var birisi PC mizde çalışan veri gönderip almaya yarayan Windows uygulaması, diğeri ise TahoeII üzerinde çalışan yine seri porttan veri geldiğinde gösteren ve sağ tuşa( SW8) bastığımızda DateTime.Now dan saniye bilgisini gönderen Micro Framework uygulamamız.
Masa üstünde klasik aşağıdaki kodla COM portu açar ve veri bekleriz
SerialPort1 = new SerialPort("COM6", 9600, Parity.None, 8, StopBits.One);
SerialPort1.Open();
SerialPort1.DataReceived += new SerialDataReceivedEventHandler(x_DataReceived);
Açtıktan sonra veri geldiğinde
string okunan = SerialPort1.ReadLine();
Okur ve TextBox2 de gösteririz. PC den MF cihazında veri göndermek içinse, Com1 portu açık iken :
SerialPort1.WriteLine(textBox1.Text);
PC de çalışan uygulamamız bu şekilde çalışmaktadır.

MF cihazında ise COM1 portuna gelen verileri okumak için , bir TextFlow kullandık :
public 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 TextFlow();
text.TextRuns.Add("Seri Port Deneme v0.1", Resources.GetFont(Resources.FontResources.segoe), Colors.Red);
text.TextRuns.Add(TextRun.EndOfLine);
text.TextRuns.Add("by Celiker", Resources.GetFont(Resources.FontResources.segoe), Colors.Red);
text.TextRuns.Add(TextRun.EndOfLine);
text.TextRuns.Add("-", Resources.GetFont(Resources.FontResources.calibri), Colors.Green);
text.HorizontalAlignment = Microsoft.SPOT.Presentation.HorizontalAlignment.Center;
text.VerticalAlignment = Microsoft.SPOT.Presentation.VerticalAlignment.Center;
text.TextAlignment = TextAlignment.Center;
mainWindow.Child = text;
….
c1.ReadTimeout = 800;
c1.Open();
c1.DataReceived += new SerialDataReceivedEventHandler(okumaoldu);
return mainWindow;
}
Şuan COM1 portu hazır bir şekilde verilerin gelmesini beklemektedir. Gelen veriler seri portun bufferinde saklanacaktır. Alınan veriyi görüntülemek için :
gelen = "";
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-1; i++)
gelen += okunanc[i];
kullanıyoruz. Şimdi gelen veri gelen değişkenin içinde, onu görüntülemek kaldı. Tıpkı aşağıdaki gibi :

Uygulama ile ilgili örneğin videosunu buradan izleye bilirsiniz.
http://www.metacafe.com/watch/2413686//
Çeliker BAHÇECİ
Bilg. Müh.
ben @ celiker.com