Haberler:

Forum kuralları güncellendi LÜTFEN  okuyunuz:  https://bit.ly/2IjR3ME

Ana Menü

C# ta String

Başlatan since1990, 03 Mayıs 2012, 23:14:51

since1990

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?
"Dinlenmemek üzere yola çıkanlar asla yorulmazlar. Türk gençliği, gayeye, idealizme durmadan ve yorulmadan yürüyecektir. Bütün ümidim gençliktedir." Mustafa Kemal Atatürk

arslan74

kodun - projen nerede?

since1990

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.
"Dinlenmemek üzere yola çıkanlar asla yorulmazlar. Türk gençliği, gayeye, idealizme durmadan ve yorulmadan yürüyecektir. Bütün ümidim gençliktedir." Mustafa Kemal Atatürk

arslan74

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);
    }
}

since1990

readline yerine readexcisting komutu ile okuyunca düzeldi. Ama kesmeye gridikten sonra 50ms bekleyip öyle okuyorum. Teşekkürler hocam ;)
"Dinlenmemek üzere yola çıkanlar asla yorulmazlar. Türk gençliği, gayeye, idealizme durmadan ve yorulmadan yürüyecektir. Bütün ümidim gençliktedir." Mustafa Kemal Atatürk