Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Delphi Seri Haberleşme
#6
(03-06-2021, Saat: 21:21)mrmarman Adlı Kullanıcıdan Alıntı: Bir öneri : Market'teki terazinin teknik dökümanlarından protokolü bir inceleyin.
* ping /pong tarzı status check opsiyonu vardır bir şekilde. seri port sonuçta.
* Cihaza bağlı olduğunuz sonucunu nasıl elde ediyorsanız o da olur.
* Projeniz açık olduğu müddetçe ( aralığın kaç saniye olacağına siz karar verin ) periyodik olarak sorsun cevap alırsa bağlantı sağlıklı, alamazsa uyarı versin.

Sayın Muharrem Arman hocam dediğiniz gibi ürün bilgilerini inceledim tam da benim istediğim gibi bir kod örneği var broşürde ancak c# diliyle yazılmış ve ben bunu delphiye uyarlayamadım malum acemilik ve c# dilininden hiç anlamamam kodlar aşağıdaki gibidir.

public partial class Form1 : Form
    {
       private string RxString;

       public Form1()
       {
           InitializeComponent();

           comboBoxPort.SelectedIndex = 0;
           comboBoxBaud.SelectedIndex = 3;

           yeniden_baglan();
       }

       public Form1(string[] args)
       {
           InitializeComponent();

           comboBoxPort.SelectedIndex = 0;
           comboBoxBaud.SelectedIndex = 3;

           foreach (string arg in args)
           {
               if (arg.StartsWith("-p") && (arg.Length >= 3))
               {
                   try
                   {
                       comboBoxPort.SelectedIndex = Int32.Parse(arg.Substring(2)) - 1;
                   }
                   catch
                   {
                   }
               }
               else if (arg.StartsWith("-b") && (arg.Length >= 3))
               {
                   try
                   {
                       comboBoxBaud.SelectedIndex = Int32.Parse(arg.Substring(2)) - 1;
                   }
                   catch
                   {
                   }
               }
           }

           yeniden_baglan();
       }

       private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
       {
           RxString += serialPort1.ReadExisting();

           if (RxString.Contains('\r') && (RxString.Length >= 8))
           {
               this.Invoke(new EventHandler(DisplayText));
           }
       }

       private void DisplayText(object sender, EventArgs e)
       {
           int i = RxString.LastIndexOf('\r');

           if (i >= 7)
           {
               labelAgirlik.Text = RxString.Substring(i - 6, 6);

               if (String.IsNullOrWhiteSpace(labelAgirlik.Text))
                   labelAgirlik.ForeColor = Color.Red;
               else
                   labelAgirlik.ForeColor = Color.LightGreen;

               if (RxString.Length >= (i + 2))
                   RxString = RxString.Split('\r').LastOrDefault();
               else
                   RxString = "";
           }

           timer1.Stop();
           timer1.Start();
       }

       private void serialPort1_ErrorReceived(object sender, System.IO.Ports.SerialErrorReceivedEventArgs e)
       {
           //this.Invoke(new EventHandler(DisplayHata));
       }

       private void DisplayHata(object sender, EventArgs e)
       {
           labelAgirlik.Text = " HATA ";
           labelAgirlik.ForeColor = Color.Red;
       }

       private void comboBoxPort_SelectedIndexChanged(object sender, EventArgs e)
       {
           yeniden_baglan();
       }

       private void comboBoxBaud_SelectedIndexChanged(object sender, EventArgs e)
       {
           yeniden_baglan();
       }

       private void yeniden_baglan()
       {
           timer1.Stop();

           try
           {
               try
               {
                   serialPort1.Close();
               }
               catch{
               }

               serialPort1.PortName = comboBoxPort.SelectedItem.ToString();
               serialPort1.BaudRate = Int32.Parse(comboBoxBaud.SelectedItem.ToString());

               serialPort1.Open();

               labelAgirlik.Text = "......";
               labelAgirlik.ForeColor = Color.Yellow;
           }
           catch
           {
               labelAgirlik.Text = " HATA ";
               labelAgirlik.ForeColor = Color.Red;
           }

           timer1.Start();
       }

       private void timer1_Tick(object sender, EventArgs e)
       {
           yeniden_baglan();
       }
   }
}
Cevapla


Bu Konudaki Yorumlar
Delphi Seri Haberleşme - Yazar: mstf42 - 03-06-2021, Saat: 09:38
Delphi Seri Haberleşme - Yazar: ugorkem - 03-06-2021, Saat: 17:32
Cvp: Delphi Seri Haberleşme - Yazar: mstf42 - 03-06-2021, Saat: 21:06
Cvp: Delphi Seri Haberleşme - Yazar: ugorkem - 07-06-2021, Saat: 00:14
Cvp: Delphi Seri Haberleşme - Yazar: mstf42 - 07-06-2021, Saat: 09:07
Delphi Seri Haberleşme - Yazar: mrmarman - 03-06-2021, Saat: 21:21
Cvp: Delphi Seri Haberleşme - Yazar: mstf42 - 03-06-2021, Saat: 23:14
Delphi Seri Haberleşme - Yazar: enigma - 03-06-2021, Saat: 22:34
Delphi Seri Haberleşme - Yazar: mrmarman - 04-06-2021, Saat: 10:00
Delphi Seri Haberleşme - Yazar: ugorkem - 07-06-2021, Saat: 13:49

Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Delphi'de Class Kullanımı Jakarta2 1 145 28-09-2021, Saat: 11:38
Son Yorum: Tuğrul HELVACI
  Cas Terazi Veri gönderimi Delphi sürüm sorunu KUNTAY 4 551 25-09-2021, Saat: 01:32
Son Yorum: oarikmert@hotmail.com
  Delphi ve PHP arasında Encrypt/Decrypt İşlemi - Yardım mad85 18 9.264 18-09-2021, Saat: 08:58
Son Yorum: MosCom
  Delphi dilinde toplam değer nasıl kodlanır? KursadCK 5 345 01-09-2021, Saat: 13:30
Son Yorum: Mesut
  Delphi ile cmd komut göndermek ve yanıt almak yhackup 22 14.255 21-07-2021, Saat: 23:29
Son Yorum: pro_imaj



Konuyu Okuyanlar: 1 Ziyaretçi