Laden...
M
maggo myCSharp.de - Member
student der automatisierungstechnik erfelden Dabei seit 31.10.2006 2 Beiträge
Benutzerbeschreibung

Forenbeiträge von maggo Ingesamt 2 Beiträge

31.10.2006 - 15:44 Uhr

Also es muss generell müsste es an meinem Programm liegen, nur ich find den Fehler nicht, warum er den das "eingentlich richtige" aus dem Buffer falsch ausgibt

Ich habe intern eine Virtuelle rs232-Verbindung aufgebaut. Programmien muss ich den Slave. Die Masterkommunikation habe ich über "ModbusView" laufen. Da eigentliche Problem ist das auslesen des Buffers

Einstellungen:
8 Datenbits
ein Stopbit
even parity
baudrate 115200

31.10.2006 - 14:55 Uhr

Hi,
ich hoffe jemand von euch kann mir bei meinem problem helfen. Ich soll mit c# einen com-port auslesen, über den ich als "Slave" Daten in Form von MODBUS/RTU-Telegramme erhalte. Eine Verbindung konnte ich mit folgendem Programm bereits aufbauen, jedoch zeigt er in meinem fertigen Programm nur kryptische Zeichen bei Datenempfang und nicht die Standart-Hexazeichen des Modbus-Protokolls an. Via eines Portmonitors habe ich auch schon geprüft, ob die Daten richtg per "ModbusView", das als Master fungiert, in den "Slave"-Puffer geladen werden.

Hier mal der Quelltext:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO.Ports;

namespace COM_Port_schicken
{

public partial class Form1 : Form  
{  
    private delegate void AddTextDelegate(string newText);  


    public Form1()  
    {  
        InitializeComponent();  

          
    }  

    System.IO.Ports.SerialDataReceivedEventArgs e)  
      
    private void button1_Click(object sender, EventArgs e)  
    {  
          
        serialPort1.Open();  
                     
    }  
    
    private void listBox1_SelectedIndexChanged(object sender, EventArgs e)  
    {  

    }  

      
    private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)  
    {  
                 
        AddText(Convert.ToString(serialPort1.ReadExisting()));  

    }  

    private void AddText(string newText)  
    {  
        if (listBox1.InvokeRequired)  
        {  
            AddTextDelegate del = new AddTextDelegate(AddText);  
            listBox1.BeginInvoke(del, new object[] { newText });  
        }  
        else  
        {  
            listBox1.Items.Add(newText);  
        }  
    }  

     
}  

}

Viele Dank im Vorraus schonmal für eure antworten !