Laden...

Einsteiger: Lösungsweg für Problem?

Erstellt von Datensalat vor einem Jahr Letzter Beitrag vor einem Jahr 337 Views
D
Datensalat Themenstarter:in
8 Beiträge seit 2022
vor einem Jahr
Einsteiger: Lösungsweg für Problem?

Hallo,

zuerstmal zu mir: Ich habe bisher viel in C und VBA programmiert und bin Elektronikingenieur.
Ich habe schon einige C#-Tutorials durchgearbeitet. Auch die Grundlagen objektorientierter Programmierung sind mir vertraut. Jetzt möchte ich ein Projekt in C# umsetzen:
Über eine serielle Schnittstelle (virtual COM-Port) soll das C#-Programm mit einem Gerät kommunizieren.
Das C#-Programm schickt Lesebefehle an das Gerät und das Gerät schickt Datenblöcke aus verschiedenen C-Strukturen zurück. Im C#-Programm werden die Werte der Strukturelemente verändert und müssen wieder an das Gerät zurückgeschickt werden.
In C ist es einfach, einem Zeiger auf eine Struktur die Adresse des Empfangsarrays zuzuweisen.
So dass man anschließend auf die Strukturelemente zugreifen kann. In C# geht das ja aber nicht.

  • Ist es ratsam, auch in C# Strukturen dafür zu verwenden? Oder besser Klassen?
  • Wie bekomme ich am einfachsten die empfangenen Daten (Byte-Array? / Stream?) in die entsprechenden Strukturen / Klassen?
  • Wie bekomme ich am einfachsten den Struktur(?)block von C# wieder in einen COM-Sendepuffer?

Ich vermute mal, dass es in C# ein Vorgehen gibt, mit dem man das einigermaßen einfach umsetzen kann?
Über Hinweise zum prinzipiellen Vorgehen würde ich mich freuen. Danke.

4.931 Beiträge seit 2008
vor einem Jahr

Hallo und willkommen,

schau dir mal die Klasse SerialPort und Code-Beispiele dazu an sowie evtl. auch Template SerialPort.

Die Datenübertragung dann als Byte-Array (und Mapping auf passende Strukturen mit der Marshal-Klasse). Außerdem kann im unsafe-Modus auch mit Zeigern gearbeitet werden.

190 Beiträge seit 2012
vor einem Jahr
  • Wer lesen kann, ist klar im Vorteil
  • Meistens sitzt der Fehler vorm Monitor
  • "Geht nicht" ist keine Fehlermeldung!
  • "Ich kann programmieren" != "Ich habe den Code bei Google gefunden"

GidF

D
Datensalat Themenstarter:in
8 Beiträge seit 2022
vor einem Jahr

Danke schon mal für die Hinweise, werde ich mir anschauen.
Das mit dem Marshaling habe ich aber noch nicht wirklich durchschaut, wie man da eine ganze Struktur
oder eine Struktur mit Elementen, die selber Strukturen sind, "auf einen Rutsch" hinbekommt.
Aber der unsafe-Bereich ist interessant, das kannte ich noch nicht.
Werde mich da einlesen.

D
Datensalat Themenstarter:in
8 Beiträge seit 2022
vor einem Jahr

@Wilfried
Danke! Ich habe zwar auch gesucht, aber nicht mit "kopieren" und habe nichts passendes gefunden.
Nach kurzer Draufsicht deiner Links sieht das sehr interessant aus. Werde das genau analysieren...

M
368 Beiträge seit 2006
vor einem Jahr
  • Strukturen dafür zu verwenden? Oder besser Klassen? Es gibt interne Unterschiede zwischen "Structs" und "Classes", z.B. Link zur MS-Doku

Goalkicker.com // DNC Magazine for .NET Developers // .NET Blogs zum Folgen
Software is like cathedrals: first we build them, then we pray 😉