Şimdi Ara

C# SerialPort Write Kilitlenme Sorunu Hk.

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
2
Cevap
0
Favori
283
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhabalar Donanım Haber ve Ekibi,
    Sizlerden Bir Konu Hakkında Değerli Görüşlerinizi Paylaşmanızı Rica Etmekteyim,

    C# Üzerinde RS232 İle Kantar İndicator Cihazı Üzerinde Kullanılması İçin Kantar Bilgi Sistemi Yazılımı Geliştirmekteyim,
    İndicator Cihazı Üzerinde Write - Read Yapısı Üzerinde Char Karşılığının Gönderilmesi ve Sonrasında Gelen Verinin Okunması İşlemi İle Kilogram Sonuç Bilgisine Ulaşılmaktadır.

    Burada Yaşadığım Sorun, Tartım İşlemi Sırasında Bazen 1 İşlemde, Bazen 50 İşlem, Bazen 300 İşlem Yaptığımda Tartım İşlemi Sırasında Uygulama Kilitlenmektedir.
    Ardından Belirli Bir Süre Sonra Programı Kapat Hatasına Geçmektedir.
    Burada Aşağıdaki Kod Bloğum Üzerinde Yapmam Gereken Bir İşlem Var mıdır ?
    Yaptığım Kontroller Sonrasında Kilitlenme Durumu Write İşlemi Yapıldığı Anda Olduğu Görülmektedir.
    Sizlerden Bu Konu Hakkında Bilgi Beklemekteyim, İyi Çalışmalar...

    Veri Talep Gönderme İşleminde Kullandığım Kod Blogu Aşağıdaki Gibidir.

    private void VeriTalepGonder()
    {
    try
    {
    char CHR = Convert.ToChar(2);
    string STRG1 = CHR.ToString();
    CHR = Convert.ToChar(Convert.ToInt32("1"));
    string STRG2 = CHR.ToString();
    string STRG3 = "DNG";
    CHR = Convert.ToChar(13);
    string STRG4 = CHR.ToString();
    SerialPortKBS.Write(STRG1 + STRG2 + STRG3 + STRG4);
    }
    catch (Exception EX)
    {
    MessageBox.Show("Bir Hata Oluştu : " + EX);
    return;
    }
    }


    Gelen Verinin Okunması İşleminde Kullandığı Kod Bloğu Aşağıdaki Gibidir.

    private void GelenVeriOkuma()
    {
    try
    {
    if (!SerialPortKBS.IsOpen || SerialPortKBS.BytesToRead < 41)
    return;
    OkunanVeri = SerialPortKBS.ReadExisting();
    }
    catch (Exception EX)
    {
    MessageBox.Show("Bir Hata Oluştu : " + EX);
    return;
    }
    }

    Ayrıca Buton Click İle Verinin Kaydedilme İşlemi Aşağıdaki Gibidir.

    private void BTNIlkAgirlik_Click(object sender, EventArgs e)
    {
    DialogResult IlkTartim = new DialogResult();
    IlkTartim = MessageBox.Show("İlk Tartım İşlemi Yapmak İstediğinizden, Emin misiniz ?", "Bilgilendirme", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button2);
    if (IlkTartim == DialogResult.Yes)
    {
    SerialPortKBS.Open();
    string Agirlik;
    OkunanVeri = "";
    SerialPortKBS.DiscardInBuffer();
    SerialPortKBS.DiscardOutBuffer();
    VeriTalepGonder();

    while (OkunanVeri == "")
    {
    GelenVeriOkuma();
    }

    SerialPortKBS.Close();

    if (OkunanVeri != "")
    {
    Agirlik = (OkunanVeri);
    TXBIlkAgirlik.Text = Agirlik.Substring(30, 6);
    }

    DateTime DT = DateTime.Now;
    string GirisTarihi = DT.Year + "-" + DT.Month + "-" + DT.Day + " " + DT.Hour + ":" + DT.Minute + ":" + DT.Second;
    string SQLKomut = "";
    SQLKomut = SQLKomut + "INSERT INTO KantarBilgiSistemi";
    SQLKomut = SQLKomut + "(AracBilgisi, DorseKonteynerBilgisi, SurucuAdiSoyadi, SurucuIrtibatBilgisi, AracinGeldigiUlkeIl, FirmaBilgileri, MalzemeDurumu, AracinGittigiUlkeIl, SevkiyatIrsaliyeNo, YetkiliOperator, GirisBilgisi, IlkAgirlik)";
    SQLKomut = SQLKomut + " Values (";
    SQLKomut = SQLKomut + "'" + TXBAracBilgisi.Text + "',";
    SQLKomut += "'" + TXBDorseKonteynerBilgisi.Text + "',";
    SQLKomut += "'" + TXBSurucuAdiSoyadi.Text + "',";
    SQLKomut += "'" + MTXBSurucuIrtibatBilgisi.Text + "',";
    SQLKomut += "'" + TXBAracinGeldigiUlkeIl.Text + "',";
    SQLKomut += "'" + TXBFirmaBilgileri.Text + "',";
    SQLKomut += "'" + CMBMalzemeDurumu.Text + "',";
    SQLKomut += "'" + TXBAracinGittigiUlkeIl.Text + "',";
    SQLKomut += "'" + TXBSevkiyatIrsaliyeNo.Text + "',";
    SQLKomut += "'" + CMBYetkiliOperator.Text + "',";
    SQLKomut += "'" + GirisTarihi + "',";
    SQLKomut += "'" + TXBIlkAgirlik.Text + "'";
    SQLKomut += ")";

    IslemSonucu sonuc = SQLOp.Ekle(SQLKomut);
    if (sonuc.Basarilimi == true)
    {
    MessageBox.Show("İlk Tartım İşlemi Başarıyla Tamamlandı");
    DataGridDurumBosGoster();
    EklemeSonrasiTemizleme();
    }
    else
    {
    MessageBox.Show("Bir Hata Oluştu : " + sonuc.HataMesaji);
    }
    }
    else if (IlkTartim == DialogResult.No)
    {
    MessageBox.Show("İlk Tartım İşlemi İptal Edildi");
    }
    }







  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.