Moin,
ich möchte mit C# Daten empfangen die von einem Arduino Nano werden. Ich
habe es schon geschafft daten zum Arduino zusenden und damit einen Servo
zusteuern. Es werden immer 2 Daten gesendet werden, die dann in Char[0],
Char[1] gespeichert werden sollen. Ich habe schon mal nach Tutorial im
I-Net gesucht aber habe teilweise nur englische gefunden, die ich aber
nicht sorichtig verstanden habe. Ich möchte es auch so haben, wenn
möglich, dass wenn eine Datei an den PC gesendet wird, dass dann
automatsich eine Funktion aufgerufen wird um diese Dateinen zu
empfangen. Könnt ihr mir helfen?
Vorne weg. Dein Programmstil ist nicht das gelbe vom Ei, aber das kommt
hoffentlich mit der Erfahrung.
Du verwendest doch sicherlich VS2008 Express.
Statt deinen Serialport manuell hinzuzufügen kannst du ihn aus der
Toolliste wählen und auf deine Form ziehen. In den Eigenschaften die
Parameter einstellen und auch die Events anlegen. Fertig.
Wenn du es doch lieber manuell willst:
1
...
2
char[] receive = new char[2];
3
...
4
{
5
sp = new SerialPort(comboBox1.SelectedItem.ToString(), Convert.ToInt32(comboBox2.SelectedItem.ToString()), Parity.None, 8, StopBits.One);
6
sp.Open();
7
this.sp.DataReceived += new System.IO.Ports.SerialDataReceivedEventHandler(this.sp_DataReceived);
hallo,
ich versuche mich eben auch an einem solchen Program.
Gibt es in C# eine Möglichkeit die empfangenen Daten in eine art
Terminalfenster, innerhalb des Programms, anzuzeigen und welches Element
sollte man dazu nutzen ?
bin dankbar für ein kleines Beispiel.
Olaf
> Gibt es in C# eine Möglichkeit die empfangenen Daten in eine art> Terminalfenster, innerhalb des Programms, anzuzeigen und welches Element> sollte man dazu nutzen ?
Nicht direkt mit "echtem" Terminalfenster o.ä., denn C# (+ IDE) ist eben
eine Programmiersprache und hat sicher nicht den Fokus auf
Schnittstellen etc.
Eine einfache Möglichkeit ist, den ReceiveEvent zu implementieren und
mit einem Breakpoint zu gucken, welches Byte ankam. Wenn mich nicht
alles täuscht, kann man das SerialPort-Control (vorhanden ab .NET 2.0)
so einstellen, dass der ReceiveEvent erst nach einer bestimmten Anzahl
an Bytes feuert. Somit müsstest du nicht Byte für Byte einlesen, sondern
kannst dann den ganzen Buffer des SerialPort-Controls über die
Debug-Fenster auslesen (je nach verwendeter IDE sogar bloß durch
Draufzeigen mit der Maus :)
Ralf
Ralf schrieb:>> Gibt es in C# eine Möglichkeit die empfangenen Daten in eine art>> Terminalfenster, innerhalb des Programms, anzuzeigen und welches Element>> sollte man dazu nutzen ?> Nicht direkt mit "echtem" Terminalfenster o.ä., denn C# (+ IDE) ist eben> eine Programmiersprache und hat sicher nicht den Fokus auf> Schnittstellen etc.> Eine einfache Möglichkeit ist, den ReceiveEvent zu implementieren und> mit einem Breakpoint zu gucken, welches Byte ankam. Wenn mich nicht> alles täuscht, kann man das SerialPort-Control (vorhanden ab .NET 2.0)> so einstellen, dass der ReceiveEvent erst nach einer bestimmten Anzahl> an Bytes feuert. Somit müsstest du nicht Byte für Byte einlesen, sondern> kannst dann den ganzen Buffer des SerialPort-Controls über die> Debug-Fenster auslesen (je nach verwendeter IDE sogar bloß durch> Draufzeigen mit der Maus :)>> Ralf
Warum so kompliziert?
Häufig reicht schon die einfache Variante im DataReceived-Event, wenn's
nur Text ist, das ganze in eine TextBox zu schreiben (Invoke nicht
vergessen) bzw. wenn's Binärdaten sind, diese vorher eben in einen Text
umzuwandeln.
Hallo, Ralf und Arc Net
vielen Dank für die Antworten. sorry ich habe die Version vergessen, ich
habe Visual C# für dieses Projekt gewählt um eine schnelle
Programmoberfläche zu schaffen, und die Serielle COM ohne Vorkenntniss
zu haben. derzeit empfange ich Datensätze ca. 64 byte von einem Mega128
welcher selbige über ein Zigbee Modul bekommt, lege diese in einen
Buffer ab um Teile davon in Labels anzuzeigen. Jedoch der größte Teil
davon soll in ein Fenster welches dann wie ein Terminal scollen kann,
die Datensätze wiederholen sich im sec. Takt.
Ich suche nun ein Element im Visual welches ich dafür nutzen kann.
Dazu möchte ich noch betonen, by Hand kann ich so etwas nicht
realisieren,
meine C Kenntnisse reichen nicht in den PC Bereich.
sorry sehr lang geworden, Ich bitte um Hilfestellung, Danke.
Olaf
Hallo
ich habe ein RS232 (Serial Port) Testprogramm
in C# geschrieben, falls jemand Interesse hat gebe ich es gerne weiter !
meine mail Adresse
josef@bernhardt.de
viele Grüße
Josef