-
        

Ergebnis 1 bis 8 von 8

Thema: COM Port auslesen

  1. #1

    COM Port auslesen

    Anzeige

    Hallo ich habe ein Problem mit C# 2010.
    Ich will ein COM Port auslesen. Aber ich bin noch ein Anfänger. Weiter wie in mein Code komme ich nicht. Die Hilfen im Netz haben bis jetzt auch nicht geholfen. Ich will einfach nur die Daten in einer Textbox ausgeben. Kann mir jemand weiterhelfen??

    Code:
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using System.IO.Ports;
    using System.IO;             //serielle Schnittstelle
    using System.Collections;    //Array Liste
    using System.Threading;      //Delagation invoke (Threadübergreifend)
    using System.Timers;         //Timer
    
    namespace Serielle_Schnitt.Lesen
    {
        public partial class Form1 : Form
        {
    
    
            SerialPort Schnittstelle = new SerialPort("COM3");
    
            public Form1()
            {
                InitializeComponent();
            }
    
            private void button1_Click(object sender, EventArgs e)
            {
                button2.Enabled = true;
                
                //Parameter Festlegen
    
                Schnittstelle.BaudRate = 9600;
                Schnittstelle.Parity = Parity.None;
                Schnittstelle.DataBits = 8;
                Schnittstelle.StopBits = StopBits.One;
                Schnittstelle.Handshake = Handshake.None;
                Schnittstelle.ReadTimeout = 500;
                Schnittstelle.WriteTimeout = 500;
    
                //Serialport öffnen
                try
                {
                    Schnittstelle.Open();
    
                    if (Schnittstelle.IsOpen)
                    {
                        MessageBox.Show("Verbindung erfolgreich");
                    }
                }
                catch
                {
                   MessageBox.Show("Keine Verbindung möglich");
                }
    
                Schnittstelle.DataReceived += new SerialDataReceivedEventHandler(Schnittstelle_DataReceived);
            }
    
      
            void Schnittstelle_DataReceived(object sender, SerialDataReceivedEventArgs e)
            {
               throw new NotImplementedException();
            }
    
          
      
    
            private void button2_Click(object sender, EventArgs e)
            {
                Schnittstelle.Close();      //COM Port schließen
                button2.Enabled = false;    //"schließen" Button deaktivieren
            }
        }
    }

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.06.2011
    Ort
    Dresden
    Beiträge
    170
    Hi,
    sehr mutig, gleich mit einem eigenen event handler für die serielle Schnitte anzufangen !
    Vielleicht solltest Du erst mal mit den vorhandenen buffern arbeiten. Ein eigener event
    handler ist eigentlich nur nötig, wenn die Daten quasi "unangefordert", also ohne Aufforderung
    an den Sender "eintrudeln".
    Ansonsten müsstest Du Dir erst mal entsprechenden receive buffer anlegen, in die Du in
    Deinem event handler die ankommenden Zeichen einsortierst und evtl. bewertest (ob Satz
    komplett oder so)
    mfg
    Achim

  3. #3
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    08.08.2008
    Ort
    DE
    Beiträge
    523
    Port öffnen/schließen etc.
    Code:
    private void Form1_Load(object sender, EventArgs e)        {
                string[] ports = SerialPort.GetPortNames();
                comboBox1.Items.AddRange(ports);
    
    
                if (ports.Length > 0)
                {
                    comboBox1.SelectedIndex = 0;
                    btnOpen.Enabled = true;
                }
            }
    
    
            private void btnOpen_Click(object sender, EventArgs e)
            {
                if (btnOpen.Text == "Open")
                {
                    serialPort1.PortName = comboBox1.Text;
                    serialPort1.Open();
                    btnOpen.Text = "Close";
                    comboBox1.Enabled = false;
                    groupBox1.Enabled = true;
                    timer1.Enabled = true;
                }
                else
                {
                    serialPort1.Close();
                    btnOpen.Text = "Open";
                    comboBox1.Enabled = true;
                    groupBox1.Enabled = false;
                    timer1.Enabled = false;
                }
            }
    Daten rausschreiben
    Code:
    serialPort1.Write(dataSend.ToArray(), 0, dataSend.Count);
    Daten empfangen
    Code:
     // check for new data            
               while (serialPort1.BytesToRead > 0)
                {
                    byte rxByte = (byte)serialPort1.ReadByte();
    
    
                    protocol_ParseByte(rxByte);
                }
    Sind nur Bruchstücke aus meinem Code, sollte aber alles nötige drin sein.

    mfg

  4. #4
    Danke für die Hilfe. Es funktioniert jetzt. Hier ein kleiner ausschnitt.

    Schnittstelle.DataReceived += new SerialDataReceivedEventHandler(Schnittstelle_DataR eceived);
    }


    private void Schnittstelle_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
    Dateneingang = Schnittstelle.ReadExisting();
    this.BeginInvoke(new EventHandler(DoUpdate));
    }

    private void DoUpdate(object s, EventArgs e)
    {
    richTextBox1.AppendText(Dateneingang); // schreibe Daten von Dateneingang(string) in Textbox
    }

  5. #5
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.06.2009
    Beiträge
    1.266
    Hey, ich hab vor einiger Zeit das ganze außerdem mal als Beispielprojekt gemacht und hier im Forum veröffentlicht.
    Dort wird auch gezeigt wie man korrekt aus einem anderen Thread auf GUI Elemente schreibt. Deine Variante mag zwar gehen, ist aber in diesem Anwendungsfall eher schlecht. (Man sollte z.b. lieber direkt das Steuerelement das man aktualisieren will "invoken" anstatt das komplette Form)

  6. #6
    Okay, kannst du mal n Link zu dein Beispielprojekt posten?

  7. #7
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    7.554
    Hi, willkommen im Forum.
    ... kannst du mal n Link zu dein Beispielprojekt posten?
    Nur so nebenbei - als Ratschlag zum Umgang mit der Suchfunktion hier im Forum, nicht als Vorwurf.

    Es gibt rechts oben in der Buttonleiste den Punkt [Erweiterte Suche]. Dort könntest Du selbst suchen. Benutzer [shedepe], rechts daneben das Fenster umstellen von [Die neuesten Beiträge vom Benutzter suchen] auf [Themen vom Benutzer suchen] - und EVTL. links über dem Benutzer einen Suchbegriff eingeben (hier also Port - wenns nix wird, dann mit COM versuchen oder so). Danach bekommst Du eine Liste, da findest Du bestimmt den gewünschten Link SELBST. Ohne dass andere für Dich suchen müssen. Übrigens - wenn ICH schlecht drauf bin, würde ich auf Deine Frage lapidar und extrem kurz antworten: Ja. *ggg*.
    Ciao sagt der JoeamBerg

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.06.2009
    Beiträge
    1.266
    Ich dachte eigendlich ich hätte den Link mit geposted....ist wohl untergegangen...
    http://www.roboternetz.de/community/...auf-SerialPort

Ähnliche Themen

  1. Antworten: 15
    Letzter Beitrag: 05.01.2008, 12:12
  2. analogen port auslesen (rnmega 2560 )
    Von goara im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 7
    Letzter Beitrag: 22.06.2007, 16:36
  3. Anfänger: Port lässt sich nicht auslesen?
    Von Christian_D im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 15.05.2007, 21:15
  4. Port auslesen
    Von SebiTNT im Forum PIC Controller
    Antworten: 6
    Letzter Beitrag: 17.07.2006, 12:20
  5. C++ parallel port auslesen und schreiben
    Von rich im Forum Software, Algorithmen und KI
    Antworten: 2
    Letzter Beitrag: 01.05.2006, 16:39

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •