Şimdi Ara

C# SerialPort kullanımı?

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
13
Cevap
0
Favori
5.279
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Selamlar arkadaşlar şu kod ile pc ye yaptığım bir cihazdan veri çekmek istiyorum. (RS232 devresi ile) Ama program tam "textBox1.Text = serialPort1.ReadLine().toString();" satırında program kilitleniyor...
    Kodlar tam olarak şöyle;

    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;

    namespace WindowsFormsApplication19
    {
    public partial class Form1 : Form
    {
    public Form1()
    {
    InitializeComponent();
    }

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

    private void Form1_Load(object sender, EventArgs e)
    {
    timer1.Start();
    if (!serialPort1.IsOpen)
    serialPort1.Open();
    }
    }
    }

    Bunu nasıl yapabilirim??







  • Önce bir Hyperterminal ile deneme yap veriler nasıl geliyor ona bir bak. Veri direk mi geliyor yoksa bir deger gönderdikten sonra mı cevap gönderiyor. Hyperterminal den verileri yakalayabiliyorsan programda da yakalarsın sorun olmaz. Port ayarlarını da dogru seçtiginden emin ol. handshaking var mı vs.. net olarak bilmiyorsan default olanı seç.
  • seri port dönüştürücümün 2. ve 3. pinlerini kısa devre yaparak C# ile yazma-okuma yaptım sorun yok. Sonra tekrar yaptığım elektronik projemi bağladım, hata olarak; "işlem zaman aşımına uğradı diyor"
    Sanırım benim sorun program ile değil, veri göndermeyen elektronik modülümde. Çünkü modül bağlı iken de aynı hayatı veriyor, hiç bir şey bağlı değilken de aynı hatayı alıyorum...
  • Dediğim gibi önce bir Hyperterminalden kontrol et verinin gelip gelmediğini.
    Veriler gelip de C# da yazıdğın kodda çalışmıyor ise başka çözüm yolları var. MSCOMM32.OCX aracılığı ile Seriportu dinleyebilirisin C# veya VB projende kullanabilirisin. Bu OCX her türlü baglantı şeklinde veri alır. 2. ve 3. pinlerini kısa devre etmene de gerek kalmaz. MSCOMM32 hakkında bilgiyi MSDN den veya internetten ögrenebilirsin.
  • dostum teşekkürler, ben Hyperterminal'i bilmiyorum. Hyperterminal program mı? İndirip deniyim?
  • tüm yazılımın bu kadar mı? serialport1 nesnesini nerde yaratıyorsun? yarattığın serialport1 nesnesinin özellikleri nelerdir? özellikler derken, baudrate, handshake, parity, name, stopbits gibi özelliklerini kastediyorum. bu arada textBox1.Text = serialPort1.ReadLine().toString();" şeklinde yazdığın yerde .toString() kısmı gereksiz. Readline() methodu seri port buffer'ındaki veriyi string olarak okur. zaman aşımı(timeout) hatası vermesinin sebebi seriport buffer'ında okuyacak veri bulamamasıdır. Readline() methodu buffer'da veri okuyana kadar programı blok eder. Serialport nesnesinin ReadTimeout özelliğine herhangi bir sayı verirsen bunu aşarsın. milisaniye cinsindendir, 5000 yazarsan 5 saniye boyunca bekler veri yoksa okumaya çalışmayı bırakır. ama hala veri okuyamıyor olacaksın muhtemelen. bu arada modül dediğin nasıl birşey? kendin mi yaptın, bir yerlerden mi aldın?
  • HyperTerminal Başlat-Programlar-Donatlar-İletişim in içerisinde oradan erişebilirsin.
  • BaundRate 19200
    com8 (seriden usb dönüştrücü)

    modül dediğim altaş yayınlarının kendi robotunu kendin yap kitabındaki ultrasonik engel algılama devresi ve PIC16F877A ile hazırlanmış 8 servo kontrol edebilen servo kontrol devresi. Ayrıca RS232 devresi var. max232 entegreli. RS232 entegreli devrenin ucunu kısa devre yapıp yazdırdığımı okudum. Ama c# dan veya hyperTerminaldan olmuyor. hyperTerminal portu ve BaundRate değerini girdikten sonra ok diyip bekliyorsak ona veri gelmedi ama veri alması + bir işlem yapıyorsak onu beceremedim sanırım. Bilgisayara veri geliyor mu gelmiyor mu sorun program da mı yoksa PIC programında mı daha onu bile çözemedim. PIC devresi üzerindeki ışıklar engel olması durumunda yanıp sönüyor. O tarafta sorun yok gibi ama pc den de hiç bir şekilde veri okuyamam ebni düşündrüyor. Var mı bunu anlamanın bir yolu?
  • Arkadaşlar RealTerm programı ile denedim sorun yok veriler sorunsuz geliyor.
    bunu c# dan çekemiyormuyuz??? C# da bu nasıl yapılır??

    Anlayan biri lütfen yardımcı olsun, bir haftadır bununla uğraşıyorum :S

     C# SerialPort kullanımı?
  • ben anlıyorumda arkadaşım, soru sorduk sorunu cevaplamak için cevap yazmadın. sen seri port nesneni nerde yaratıyorsun? özellikleri nedir? bunlar kodunda görünmüyor. yapacağın iş basit.

    uygun özelliklerde seri port nesnesi oluştur.
    seri porttan gelen veriyi oku.
    veriyi işle.

    bu kadar basit aslında mantığı. sorununu ve ne yapmak istediğini ayrıntılı olarak yazasan, daha ayrıntılı bir cevap alırsın.
  • Konuyu okumadım ancak
    RS232 deyince aklıma direk olarak mikrosoftun MSCOMM activeX componenti geliyor. Çok tatlıdır tavsiye ederim
    Not: indirdiğin yerden register ayarlarının nasıl yapılacağı bilgisini de al. Yoksa çalışmaz.

    İkinci konu da virtual serial port oluşturan çok güzel bir program vardı. Eltima olması lazım firması... emin değilim. Gerektiğinde kullanmanı tavsiye ederim.
  • burada ince bi çalışma yapılmış galiba yardımcı olabilir.
    http://social.msdn.microsoft.com/Forums/eu/Vsexpressvcs/thread/95d15f55-b085-40f3-910b-f271e1b9cfd9
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.