Picproje Elektronik Sitesi

PROGRAMLAMA DİLLERİ => Visual C# => Konuyu başlatan: since1990 - 03 Mayıs 2012, 23:14:51

Başlık: C# ta String
Gönderen: since1990 - 03 Mayıs 2012, 23:14:51
Arkadaşlar pic ten pc ye seri port üzerinden data gönderiyorum. Commtest programı ile istediğim gibi görüyorum. Fakat ben yazınca programı
"D?  9?  0" bu datayı yakalıyabiliyorum
fakat
"T?  1?25.6" fakat bunu gönderince C# şöyle bir hata veriyor
Bir iş parçacığı çıkışı veya bir uygulama isteği nedeniyle G/Ç işlemi iptal edildi.
Not:Yukarıdaki dataları comtest programından kopyala yapıştır yaptım.
neden böyle yapıyor sizce?
Başlık: Ynt: C# ta String
Gönderen: arslan74 - 04 Mayıs 2012, 00:13:40
kodun - projen nerede?
Başlık: Ynt: C# ta String
Gönderen: since1990 - 04 Mayıs 2012, 00:24:01
Hocam kodlarda bir numara yok diye paylaşmadım şöyle;
C#
private void seriport1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
           
           
            string message = seriport1.ReadLine();

             textBox1.Text = message;
        }


CCS pic için benim okuyabildiğim kod şöyle;
sprintf(buf, "D?%3.0f?%3.0f",adres1,giris);
delay_ms(10);
puts(buf);


okuyamadığım kod da şöyle


sprintf(buf, "P?%3.0f?%2.1f",f_adres_ch1,basinc1);
delay_ms(75);
puts(buf);


kodlar çok uzun diye paylaşamadım benim için problem değil de gerekirse devamınıda paylaşırım.
Başlık: Ynt: C# ta String
Gönderen: arslan74 - 04 Mayıs 2012, 03:12:52
Aşağıda ki kodu dene.

using System;
using System.IO.Ports;

class PortDataReceived
{
    public static void Main()
    {
        SerialPort mySerialPort = new SerialPort("COM1");

        mySerialPort.BaudRate = 9600;
        mySerialPort.Parity = Parity.None;
        mySerialPort.StopBits = StopBits.One;
        mySerialPort.DataBits = 8;
        mySerialPort.Handshake = Handshake.None;

        mySerialPort.DataReceived += new SerialDataReceivedEventHandler(DataReceivedHandler);

        mySerialPort.Open();

        Console.WriteLine("Press any key to continue...");
        Console.WriteLine();
        Console.ReadKey();
        mySerialPort.Close();
    }

    private static void DataReceivedHandler(
                        object sender,
                        SerialDataReceivedEventArgs e)
    {
        SerialPort sp = (SerialPort)sender;
        string indata = sp.ReadExisting();
        Console.WriteLine("Data Received:");
        Console.Write(indata);
    }
}

Başlık: Ynt: C# ta String
Gönderen: since1990 - 09 Mayıs 2012, 10:32:47
readline yerine readexcisting komutu ile okuyunca düzeldi. Ama kesmeye gridikten sonra 50ms bekleyip öyle okuyorum. Teşekkürler hocam ;)