none
modbus tcp bayt birleştirme RRS feed

  • Soru

  • private void button1_Click(object sender, EventArgs e)
    {
    
                Byte[] data ={
                    0x00,0x01, // işlem tanımlayıcı
                    0x00,0x00, // Protokol Tanımlaycı (modbus)
                    0x00,0x06, // PDU uzunluğu
                    0x11,      // Adres (17 decimal)
                    0x03,      // Register oku komutu
                    0x00,0x00,  // 0 ıncı registerdan itibaren    
                    0x00,0x01  // Sadece 1 register (2 byte)  
                };
                Byte[] rData = new byte[11];
                TcpClient tcpClient = new TcpClient();
                try
                {
                    tcpClient.Connect("127.0.0.1", 502);
                    if (tcpClient != null)
                    {
                        if (tcpClient.Connected)
                        {
                            NetworkStream networkStream = tcpClient.GetStream();
                            networkStream.Write(data, 0, data.Length);
                            while (true)
                            {
                                int bytes = networkStream.Read(rData, 0, rData.Length);
                                if (bytes > 0)
                                {
                                  
                                    foreach (var b in rData)
                                    {
                                        short deger = BitConverter.ToInt16(rData, 9); //birleştirme işlemi yapmak istedim 
                                     
                                        
                                        textBox1.Text = ($"Gelen Data :{b}");
                                    }
                                  
                                    break;
                                }
                            }
    
                            networkStream.Close();
                            tcpClient.Close();
                        }
                    }
                }
                catch (System.Exception ev)
                {
                    MessageBox.Show(ev.Message);
                }
    
            }
    merhaba modbus tcp ile bir  datadan 1 bayt veri okuyabiliyorum baytları birleştirip int veya decimal değer nasıl okuya bilirim
    27 Ağustos 2021 Cuma 07:40

Tüm Yanıtlar

  • Sorunuza cevap bulabildiniz mi?

    Birinin cevabı size yardımcı oldu ise, lütfen "Yanıt Olarak Öner" veya "Yanıt Olarak İşaretle" olarak işaretlemeyi ve "Oy" vermeyi unutmayınız. Burada sağlanan tüm görüşler, kişiseldir ve Microsoft'un konumunu temsil etmemektedir. Tüm bilgiler hazır olarak temin edilmektedir ve herhangi bir garanti vermemektedir.

    31 Ağustos 2021 Salı 07:52
    Moderatör
  • evet
       if (tcpClient.Connected)
                        {
                            NetworkStream networkStream = tcpClient.GetStream();
                            networkStream.Write(data, 0, data.Length);
                            while (true)
                            {
                                int bytes = networkStream.Read(rData, 0, rData.Length);
    
                                break;
    
                            }
    
    
                            byte[] gelenDeger = new byte[4] { rData[12], rData[11], rData[10], rData[9] };
                            long deger = BitConverter.ToUInt32(gelenDeger, 0);
    burada 
    1 Eylül 2021 Çarşamba 13:36