Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Auslesen eines seriellen Puffers (COM-Port)
maggo
myCSharp.de - Member



Dabei seit:
Beiträge: 2
Herkunft: erfelden

Themenstarter:

Auslesen eines seriellen Puffers (COM-Port)

beantworten | zitieren | melden

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 !
private Nachricht | Beiträge des Benutzers
hape
myCSharp.de - Member

Avatar #avatar-1958.jpg


Dabei seit:
Beiträge: 121
Herkunft: Stuttgart

beantworten | zitieren | melden

Zitat
Original von maggo
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.

1. Kriegst du mit einem anderen Modbus-Slave-Client eine erfolgreiche Datenübertragung hin, oder liegt es nur an Deinem C# Programm (also Test mit anderer Software).
2. Gib uns noch die Einstellungen von serialPort1.
3. Welches Handshaking verwendest Du?
4. Wieviele PINs hat Dein Datenkabel, falls nur 3 - was bei serieller Kommunikation im Allgemeinen auch geht - ist das Timing zwischen Request und Response wichtig, das Problem hatte ich mal bei einer Installation.

Gruß Hape
private Nachricht | Beiträge des Benutzers
maggo
myCSharp.de - Member



Dabei seit:
Beiträge: 2
Herkunft: erfelden

Themenstarter:

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
hape
myCSharp.de - Member

Avatar #avatar-1958.jpg


Dabei seit:
Beiträge: 121
Herkunft: Stuttgart

beantworten | zitieren | melden

Hi maggo,
ok - jetzt nochmals die Frage, kriegst du mit einem anderen Modbus-Slave-Client die Übetragung hin - oder hast Du keinen anderen Slave-Client?
Falls Du einen alternativen Client ausprobieren könntest, könntest Du ausschließen dass es Probleme mit dem virtuellen RS232 gibt. Falls nicht einmal der alternative Client mit dem Master, also ModbusView, erfolgreich kommunizieren kann, hast Du den Fehler zumindest stärker lokalisiert.
Gruß Hape
private Nachricht | Beiträge des Benutzers
nils
myCSharp.de - Experte



Dabei seit:
Beiträge: 908
Herkunft: Nähe von Kassel

beantworten | zitieren | melden

hallo maggo,

bitte Wie poste ich richtig? --> punkt 8


danke


nils
?( wer suchet, der findet auch! :]
private Nachricht | Beiträge des Benutzers