4 Nisan 2012 Çarşamba

C# Seri port ile veri gönderip otomatik veri alma

Bu yazımda size en basit yoldan veri göndermeyi ve seriportunuza veri geldiğinde otomatik veriyi almanızı sağlayan programı anlatacağım. C# ile veri gönderirken aynı zamanda almaya kalktığımızda burada bir çakışma oluşur. Bunun sebebi paralel işlem yapmaya çalıştığımızdan kaynaklanıyor.
Eğer veriyi otomatik almak istemiyorsak böyle çakışma sorunumuz olmaz .Bunu bir buton yardımıyla butonun içerisine serialport.readline komutunu yerleştirdiğimiz takdirde gelen veriyi alabiliriz.
Burada size elimden geldiğince kısa ve öz kod kullandım. Datareceive olayında veri(data) geldiğinde içindeki işlemler gerçekleşir. Burada bir paralel işlem tanımladım. Tanımlanan işleme göre seriportu açıp verileri alır ve daha sonra kapatır. Zaten sizde koda bakınca çok kolay olduğunu anlayacaksınız.

Program kodunda hem butonlu (manual) hemde otomatik veri alımı vardır.Program örnek olarak verildiği detaya inilmemiştir geliştirmek size kalıyor.
İyi Çalışmalar.....






using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;

namespace seriportparalel
{
public partial class Form1 : Form
{

public Form1()
{
InitializeComponent();
Control.CheckForIllegalCrossThreadCalls = false;
}

private void button1_Click(object sender, EventArgs e)
{
if (!serialPort1.IsOpen)

serialPort1.Open();
serialPort1.WriteLine(textBox1.Text);

}


private void Form1_Load(object sender, EventArgs e)
{
if (serialPort1.IsOpen)
serialPort1.Close();
}

void oku()
{
textBox2.Text = serialPort1.ReadLine();
}



private void button2_Click(object sender, EventArgs e)
{
if (!serialPort1.IsOpen) serialPort1.Open();
textBox2.Text = serialPort1.ReadLine();
serialPort1.Close();
}

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

Thread paralel1 = new Thread(new ThreadStart(oku));
paralel1.Start();
paralel1.Join();
serialPort1.Close();
}



}
}







4 yorum:

  1. ben bu programı çalıştıramadım acaba paralell programlama ayarlarınımı yapmam gerekiyor.

    YanıtlaSil
  2. verdiğim kodları aynen yazınca zaten paralel programlama ayarları yapılmış oluyor.... bir sonraki konuda paylaştım tamamen projeyi...

    YanıtlaSil
  3. Ellerinize sağlık benim bir sorum olacak Türkçe karakter nasıl düzeltirim .

    YanıtlaSil
  4. eyvallah biladerim calıstı kodların.bir tane ricam olabilirmi senden serialporttan pıc e 2 bayt yahut fzlası nasıl gönderilir ve pıc de bunu nasıl alabilirim ccs c kulanıyorum pıc tarafında.3 sene önce ugrasmııtım ama araya epeyice fasıla girdi hayliyle unuutum. teşekkürler paylaşımın için

    YanıtlaSil

Yorumlarınızı Bekliyorum...
İlginizden Dolayı Teşekkürler...

◄ Newer Post Older Post ►
 

Copyright 2011 Ferdi Gürtekin is proudly powered by blogger.com | Design by Tutorial Blogspot Published by Template Blogger