Forum: PC-Programmierung Serielle Schnittstell C#


von Philipp (Gast)


Lesenswert?

Hallo,

ich bin dabei ein kleines Tool zu schreiben, um über die Serielle 
Schnittstelle mit einem µC kommunizieren zu können.
Das ganze soll etwas Strukturiert und Objektorientiert angegangen 
werden. Mein Konzept sieht in etwa so aus:
-------------      -------------
| Protocoll | <->  | Interface | <->  Hardware
-------------      -------------

Die Klasse Protocoll handelt alles Protokoll spezifische ab.
Wie Startzeichen Hinzufügen, Längen Berechnung, Checksummen Berechnung
Das Protokoll soll so aussehen
S: Startzeichen L: Längenangabe C:Kommando D1..Dn: Daten CH: Checksumme

Protokoll: SLCC[D1..Dn]CH

Die Klasse Interface sendet dies ganze dann auf die Serielle 
Schnittstelle.
Und hat Funktionen wie alle verfügbaren Comports suchen, Comport öffnen, 
schließen... etc.

Ich habe lediglich Probleme beim Empfangen. Wie kann ich Sinnvoll der 
Klasse Protocoll mittteilen dass neue Daten in meinem Recieve Buffer 
sind.
Ich möchte dies eigentlich nicht durch zyklisches Pollen realisiern.
Gibt es so eine Art Interrupt bei C#?
Oder hat jemand schon etwas ähnliches Programmiert und kann mir ein Paar 
Tipps geben, nach was ich googeln sollte.
Mir fehlt momentan so ein kleiner gedankensprung.
Habe leider im Beriech Kommunikationsprotokoll Programmierung nicht so 
viel Erfahrung und möchte diese durch dieses kleine Projekt etwas 
aufbessern.Darum sollte es auch etwas Objektorientiert sein.

Danke für eure Ideen, Kritik, Lösingsansätze
Philipp

von ich (Gast)


Lesenswert?


von Bernd H. (geeky)


Lesenswert?

Einfach .Read() aufrufen - wenn nix kommt blockiert es halt (bis zum 
Timeout).
Alternativ gibt es das DataReceived-Event.

von W.S. (Gast)


Lesenswert?

Philipp schrieb:
> Mein Konzept sieht in etwa so aus:

Wozu soll das gut sein?
Ich halte sowas für schlichtweg überflüssig.

W.S.

von Philipp (Gast)


Lesenswert?

Leier bestätigt die Qualität der Antworten meine langjährige Erfahrung 
über dieses Forum.
Früher hat man hier mal noch qualitativ Hochwertige Hilfestellungen 
bekommen.
Versteht mich bitte nicht Falsch, ich möchte nicht das ganze Forum über 
einen Kamm scheren aber 90% von dem gelaber was die Mitglieder hier von 
sich geben ist...
Das einzige was man hier noch erwarten kann ist google und was soll der 
scheiß...
@ADMIN: Thread bitte Löschen, Danke!!!

von Tastkopf (Gast)


Lesenswert?

Das hier viel dumm gelabert wird stimmt natürlich, aber Bernd H. hat dir 
doch gesagt was du wissen musst. Es gibt ein Datareceived event für den 
SerialPort unter C#. Für die Implementierung brauch man nichtmal 
vorwissen, einfach den Serialport aus der Windowsforms liste in dein 
projekt schieben, doppelklick drauf und schon macht visual Studio alles 
für dich.

Wie du dein Protokol implementierst musst du schon selber wissen, das 
ist under C# auch nicht anders als under C++ oder C.

Heul nicht rum, sondern pick aus den antworten die du kriegst das raus 
was sinnvoll und hilfreich ist.

von Sven H. (dsb_sven)


Lesenswert?

Mach dich auf jeden Fall von der Polling-Lösung frei. Es gibt einen 
Event (DataReceived, glaub ich) der ausgelöst wird, sobald Daten 
eintrudeln.

Da zu pollen ist Unsinn.

von Ellen R. (ellenr)


Lesenswert?


Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.