www.mikrocontroller.net

Forum: PC-Programmierung C# Frage von C++Builder-Umsteiger


Autor: Axel Stab (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich möchte eine Art Hyperterminal mit C# realisieren, also ein
Terminalfenster für die serielle Kommunikation. Das wird ein Teil einer
größeren Anwendung. Die Schnittstellen-Komponente läuft schon ganz gut,
und als C# Neuling mit BCB-Vorkenntnissen finde ich mich generell auch
ganz gut zurecht, bzw. bin sogar sehr begeistert. Aber vielleicht hat
ja jemand aus der Embedded-Welt schon was fertiges. Ich mühe mich
gerade mit Eingabe-Events von der TextBox-Komponente ab, vielleicht
kann mir jemand auf die Sprünge helfen.

Später möchte ich auch noch eine OLE-Schnittstelle zur Office-Welt
einbauen, hat das schonmal jemand gemacht? Muss ja nicht in C# sein,
zum Glück lässt die "babylonische Sprachverwirrung" unter (bzw.
"über") .net ja merklich nach.

Viele Grüße

Axel

Autor: Somnatic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was willst du denn genau wissen ?

Wichtig sind:
KeyDown (Taste gedrückt)
KeyUp (Tase wieder losgelassen)
KeyPress (beides zusammen)

TextChanged (Der Text hat sich verändert - wie auch immer ;) )

Alternativ kannst du das Ganze auch subclassen, aber dazu wird dann
wieder die Win32API benötigt.
Die Frage die sich stellt, ist die: Was genau willst du machen ;)

Bzgl. Office Welt: Mit dem RichtTextControl stehen dir
Formatierungsmöglichkeiten für Text offen .. Das ist schonmal etwas ..
Aber auch hier die Frage: Einsatzzweck ?

Autor: Axel Stab - info@axelstab.de (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo somnaticuser,

1)Text in ein Fenster eintippen, bei Return über die serielle
rausjagen.
2)Empfangene Zeichen in einem anderen Fenster darstellen, neue Zeile,
wenn line feed kam.
3)Vorgefertigte Kommandos aus anderen Textboxen per Klick rausjagen.
4) DDE oder OLE Schnittstelle, um "live" aus Word/Excel Strings
auszutauschen

Hab mich jetzt so einigermaßen durchgewurschtelt. Ich dachte es gäbe
sowas wie AppendLine, sollte man meinen. Hab lange gebraucht um
festzustellen, dass man \r\n und Append Text braucht. Mit dem on
enter Event hat irgendwie nicht so geklappt, hab mir erstmal mit
textBox.Lines.Length beholfen, um eine neue Zeile zu erkennen.

Bleibt noch die Sache mit dem DDE/OLE o-.ä. -Server. Ich hab sowas mal
bei einem PIC-Debugger gesehen, da brauchte man nur eine Zeile in eine
Excel-Tabelle einzufügen, und schon hatte man "lebendige" Daten, echt
cool. Ich hab da bisher immer mit csv Dateien rumgepfuscht, das geht ja
nicht so weiter. Einfach mal eine simple Tabelle/Kurve in Excel per DDE
verknüpfen, das sollte doch eigentlich nicht so schwer sein.

Vielen Dank für sachdienlich Hinweise

Axel







private void textBox1_TextChanged ( object sender, EventArgs e ){
 int l;
 string outbuf;
 l =
 outbuf = " ";
 if ( l >=  2 ){
  outbuf = textBox1.Lines[ l - 2 ];
  textBox2.Text = Convert.ToString ( l ) + " " +  outbuf;//nur z.
test
 }
}

Autor: Somnatic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ad 1)
* Eine TextBox auf die Form ziehen
* Im Property Fenster auf Events umschalten -> Dort KeyPress auswählen
* Den folgenden Code eingeben:
private void textBox1_KeyPress(object sender,
System.Windows.Forms.KeyPressEventArgs e)
{
  if (e.KeyChar == (char)13)
  {
    // Hier der Code zum rausjagen
    textBox1.Text = "";
  }
}

ad 2)
Angenommen du hast die Zeichen in einer Variable namens "buff" vom
Typ string gespeichert.

Du kannst dann ganz einfach:

string buff;
string[] allLines = buff.Split('\n');

alternativ kannst du anstatt dem Zeichen \n auch ein anderes nehmen,
musst halt schauen was du geliefert bekommst.
allLines enthält dann alle Zeilen "untereinander"

ad 3)
Du könntest doch beispielsweise eine ComboBox nehmen. Daneben noch
einen Button platzieren und fertig.
Beispiel:
Die ComboBox kannst du über die Item Property (Eigenschaft) gleich mal
füttern (schon während der Design - Zeit).
Als Event Handler für den button reicht dann ein einfaches:
JageRaus(comboBox1.SelectedText);
Wenn du erklärende Worte in der ComboBox willst, kannst du auch zwei
Arrays (oder besser ArrayLists) anlegen. Eines in der ComboBox (Items)
mit den Worten. Eines mit den Befehlen irgendwo im Programm. Du nimmst
dann den ausgewählten Index der ComboBox, aber den Inhalt aus dem Array
(mit demselben Index).

Kann dir ja eine kurze BeispielApp schicken wenn du willst.

ad 4)
Ich kann dir mal nachschauen, aber bist du sicher dass das nicht über
VBA oder ähnliches gelöst wurde.

Autor: Axel Stab - info@axelstab.de (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aha! aha! Danke für die Tipps! BeispielApp ist eigentlich nicht nötig,
die Sache mit der Office-Schnittstelle wäre wichtiger. Kann sein, dass
das über VBA gelöst wurde, nach der Installation schien halt irgendwo
ein DDE-Server zu laufen. Habe auch mal gesehen, wie Leute so ein
Programm mit dem BCB realisiert haben. DDE geht unter C# nicht mehr,
aber irgendwie wird es doch sowas named pipes o.ä. geben. Ein
Excel/Word Makro mitt Buttons wäre auch akzeptabel.

Autor: Somnatic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hmm . .also bzgl. C# + Excel könnte dir evtl. das da weiterhelfen:

http://www.codeproject.com/csharp/csharp_excel.asp

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.