www.mikrocontroller.net

Forum: PC-Programmierung RS232 auslesen mit VisualStudio2010-WindowsForms


Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen,

Ich möchte gerne Daten anhand eines WindowsForms-Programm über den 
SerialPort auswerten. Bin leider ziemlich neu in diesem Bereich und 
benötige deshalb eure Hilfe. Wenn ich auf den Start-Button klicke, 
sollte die Schnittstelle die Daten im richTextBox1-Fenster anzeigen. 
Leider passiert gar nichts...

Hier mein bisheriger Code:
#pragma once

namespace Log_Programm {

  using namespace System;
  using namespace System::ComponentModel;
  using namespace System::Collections;
  using namespace System::Windows::Forms;
  using namespace System::Data;
  using namespace System::Drawing;

  /// <summary>
  /// Zusammenfassung für Seite
  /// </summary>
  public ref class Seite : public System::Windows::Forms::Form
  {
  public:
    Seite(void)
    {
      InitializeComponent();
      //
      //TODO: Konstruktorcode hier hinzufügen.
      //
    }

  protected:
    /// <summary>
    /// Verwendete Ressourcen bereinigen.
    /// </summary>
    ~Seite()
    {
      if (components)
      {
        delete components;
      }
    }
  private: System::Windows::Forms::RichTextBox^  richTextBox1;
  private: System::Windows::Forms::Button^  BEENDEN;
  public: System::IO::Ports::SerialPort^  serialPort1;
  private: System::Windows::Forms::Button^  START;
  public: 
  private: 

  private: System::ComponentModel::IContainer^  components;

  protected: 

  private:
    /// <summary>
    /// Erforderliche Designervariable.
    /// </summary>


#pragma region Windows Form Designer generated code
    /// <summary>
    /// Erforderliche Methode für die Designerunterstützung.
    /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden.
    /// </summary>
    void InitializeComponent(void)
    {
      this->components = (gcnew System::ComponentModel::Container());
      this->richTextBox1 = (gcnew System::Windows::Forms::RichTextBox());
      this->BEENDEN = (gcnew System::Windows::Forms::Button());
      this->serialPort1 = (gcnew System::IO::Ports::SerialPort(this->components));
      this->START = (gcnew System::Windows::Forms::Button());
      this->SuspendLayout();
      // 
      // richTextBox1
      // 
      this->richTextBox1->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((((System::Windows::Forms::AnchorStyles::Top | System::Windows::Forms::AnchorStyles::Bottom) 
        | System::Windows::Forms::AnchorStyles::Left) 
        | System::Windows::Forms::AnchorStyles::Right));
      this->richTextBox1->Location = System::Drawing::Point(12, 12);
      this->richTextBox1->Name = L"richTextBox1";
      this->richTextBox1->Size = System::Drawing::Size(625, 408);
      this->richTextBox1->TabIndex = 0;
      this->richTextBox1->Text = L"";
      // 
      // BEENDEN
      // 
      this->BEENDEN->Anchor = static_cast<System::Windows::Forms::AnchorStyles>((System::Windows::Forms::AnchorStyles::Bottom | System::Windows::Forms::AnchorStyles::Right));
      this->BEENDEN->BackColor = System::Drawing::Color::Red;
      this->BEENDEN->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 16.2F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point, 
        static_cast<System::Byte>(0)));
      this->BEENDEN->Location = System::Drawing::Point(449, 346);
      this->BEENDEN->Name = L"BEENDEN";
      this->BEENDEN->Size = System::Drawing::Size(190, 74);
      this->BEENDEN->TabIndex = 1;
      this->BEENDEN->Text = L"BEENDEN";
      this->BEENDEN->UseVisualStyleBackColor = false;
      this->BEENDEN->Click += gcnew System::EventHandler(this, &Seite::BEENDEN_Click);
      // 
      // serialPort1
      // 
      this->serialPort1->DtrEnable = true;
      this->serialPort1->RtsEnable = true;
      this->serialPort1->PortName = "COM1";
            this->serialPort1->BaudRate = 9600;
            this->serialPort1->DataBits = 8;

      // 
      // START
      // 
      this->START->BackColor = System::Drawing::Color::Lime;
      this->START->Font = (gcnew System::Drawing::Font(L"Microsoft Sans Serif", 16.2F, System::Drawing::FontStyle::Regular, System::Drawing::GraphicsUnit::Point, 
        static_cast<System::Byte>(0)));
      this->START->Location = System::Drawing::Point(296, 346);
      this->START->Name = L"START";
      this->START->Size = System::Drawing::Size(147, 74);
      this->START->TabIndex = 4;
      this->START->Text = L"START";
      this->START->UseVisualStyleBackColor = false;
      this->START->Click += gcnew System::EventHandler(this, &Seite::START_Click);
      // 
      // Seite
      // 
      this->AutoScaleDimensions = System::Drawing::SizeF(8, 16);
      this->AutoScaleMode = System::Windows::Forms::AutoScaleMode::Font;
      this->ClientSize = System::Drawing::Size(651, 432);
      this->Controls->Add(this->START);
      this->Controls->Add(this->BEENDEN);
      this->Controls->Add(this->richTextBox1);
      this->Name = L"Seite";
      this->Text = L"Seite";
      this->ResumeLayout(false);

    }
#pragma endregion

  private: System::Void BEENDEN_Click(System::Object^  sender, System::EventArgs^  e)
       {
         MessageBox::Show("Log-Program wird beendet");
       }


  private: System::Void START_Click(System::Object^  sender, System::EventArgs^  e)               {               
        serialPort1->Open();
        String^ s1 = serialPort1->ReadLine();
        richTextBox1->Text = s1;
        serialPort1->Close();
       }
};
}

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Für den Anfang:
ReadLine wartet auf zwei Sachen: Das Zeilenende und/oder ein Timeout 
(ReadTimeout/WriteTimeout sind beide normalerweise 
SerialPort.InfiniteTimeout). D.h. da wird kein Timeout kommen, also 
dürfte es am NewLine liegen (normalerweise ist das nur "\n", nicht 
"\r\n" oder "\r").

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.