Seri Port Oku/Yaz (Read/Write Serial Port) – C#
Bu yazımızda Seri Port Oku/Yaz komutları ile veri göndermeyi ve okumayı inceleyeceğiz. Arduino uygulamalarında çokca kullanılan bir seri port terminal uygulaması yapacağız.
Daha önce Arduino Serial Port yazımızda bu konudan bahsetmiştik. Şimdi C#(sharp) kısmını yazacağız.
Seri portunumuzdan veri almak için karşı tarafta bir seri port desteği olan cihazımızın olamsı gerekmektedir. Bunun için Arduino’ yu kullanabilirsiniz. Eğer arduinonuz yok ise Com Portunuzun 2. ve 3. pinlerini birbirine bağlayabilrisiniz. Bu sayede bilgisayardan gönderilen direk bilgisayara geri gelecektir. 🙂
İlk önce C# da arayüzünüzü aşağıdaki gibi veya kendi istediğiniz gibi ayarlayın.

SerialPort komponentini arayüzüne sürüklyip bırakın yoksa kodlarınızda hata oluşabilir.
Aşağıdaki kodu inceleyin ve kendi programınızı entegre edin.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 | /* yazan: www.kaizen40.com * tarih: 01.05.2018 * * açıklama: seri port terminal programı */ using System; using System.IO.Ports; using System.Threading; using System.Windows.Forms; namespace SerialPort { public partial class Form1 : Form { string[] ports = System.IO.Ports.SerialPort.GetPortNames(); // port bilgisinin tutulduğu yer public Form1() { InitializeComponent(); FormClosing += Form1_FormClosing; serialPort1.DataReceived += new SerialDataReceivedEventHandler(SerialPort1_DataRecieved); } private void Form1_Load(object sender, EventArgs e) { foreach (string port in ports) // pc ye takılı olan device ların portlarını ekle { CmbPort.Items.Add(port); } // baudrate leri yükle CmbBaudRate.Items.Add("300"); CmbBaudRate.Items.Add("600"); CmbBaudRate.Items.Add("1200"); CmbBaudRate.Items.Add("2400"); CmbBaudRate.Items.Add("4800"); CmbBaudRate.Items.Add("9600"); CmbBaudRate.Items.Add("19200"); CmbBaudRate.Items.Add("57600"); CmbBaudRate.Items.Add("115200"); } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (serialPort1.IsOpen == true) { serialPort1.Close(); } } private void SerialPort1_DataRecieved(object sender, SerialDataReceivedEventArgs e) { Thread.Sleep(30); string data = serialPort1.ReadLine(); // bufferdan verileri oku if (TxtGelen.InvokeRequired) { TxtGelen.Invoke(new MethodInvoker(delegate { TxtGelen.Text += data + "\r\n"; })); } } private void BtnBaglan_Click(object sender, EventArgs e) { if (BtnBaglan.Text == "Bağlan") { BtnBaglan.Text = "Bağlantıyı Kes"; LabelBaglanti.Text = CmbPort.Text + "," + CmbBaudRate.Text + ", Hat Açık"; serialPort1.PortName = CmbPort.Text; serialPort1.BaudRate = Convert.ToInt32(CmbBaudRate.Text); serialPort1.Open(); } else// bağlan { BtnBaglan.Text = "Bağlan"; LabelBaglanti.Text = "Hat Kapalı"; serialPort1.Close(); } } private void BtnTemizle_Click(object sender, EventArgs e) { TxtGelen.Clear(); } private void BtnGonder_Click(object sender, EventArgs e) { if (serialPort1.IsOpen == true) { serialPort1.Write(TxtGiden.Text + "\n"); } else { MessageBox.Show("Port kapalıyken data gönderilemez!"); } } } } |
ve programınızı derleyerek çalıştırın. Gönderilen data kısmına bir şeyler yazıp gönder butonuna basın.

İlerleyen zamanlardan okuma ve yazma ile ilgili daha fazla detay vermeye çalışacağım. Faydalı olmasını dilerim.